Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Como usar dtOptions

Então pessoal, tenho uma dúvida na qual não estou conseguindo achar uma forma melhor de se fazer.

Estou em uma aplicação angular, onde tenho uma grid com dtOptions, queria colocar este atributo language em um arquivo para carregar sempre, em todas as grids do sistema, porém não consegui.

  dtOptions: DataTables.Settings = {};

 this.dtOptions = {
      pagingType: 'full_numbers',
      pageLength: 10,
      processing: true,
      language: {
        emptyTable: "Nenhum registro encontrado",
        info: "Mostrando de _START_ até _END_ de _TOTAL_ registros",
        infoEmpty: "Mostrando 0 até 0 de 0 registros",
        infoFiltered: "(Filtrados de _MAX_ registros)",
        infoPostFix: "",
        lengthMenu: "_MENU_ resultados por página",
        loadingRecords: "Carregando...",
        processing: "Processando...",
        zeroRecords: "Nenhum registro encontrado",
        search: "Pesquisar",
        paginate: {
          next: "Próximo",
          previous: "Anterior",
          first: "Primeiro",
          last: "Último"
        },
        aria: {
          sortAscending: ": Ordenar colunas de forma ascendente",
          sortDescending: ": Ordenar colunas de forma descendente"
        }
      }
    };

Alguém poderia me orientar em como fazer isso da melhor forma? talvez guardando toda essa configuração do dtOptions.

4 respostas

Fala aí Fabricio, tudo bem? Antes de tentar lhe ajudar eu gostaria de entender o que você está precisando fazer, consegue me explicar? Assim posso te ajudar de uma forma melhor.

Fico no aguardo.

Acho que vai ser um pouco difícil explicar pq ainda estou começando. Pra começar, eu quero montar um datatable no meu projeto angular. Tenho, no html, a seguinte tabela:

<table class="table table-striped table-hover table table-bordered" datatable [dtOptions]=" dtOptions" [dtTrigger]="dtTrigger" id="tabelaMotoboy">

Note que estou utilizando o datatable [dtOptions]=" dtOptions" na minha table.

Estou importando no arquivo typescript:

import { DataTableDirective } from 'angular-datatables';

Declarando da seguinte forma:

dtOptions: DataTables.Settings = {};

A intenção é utilizar filtro, paginação e tudo mais, porém por padrão vem em ingês. Então estou passando a condiguração do datatable da forma que eu quero, em português, da seguinte forma na função de listar os registros do banco:

private carregaLista() {
    this.dtOptions = {
      pagingType: 'full_numbers',
      pageLength: 10,
      processing: true,
      language: {
        emptyTable: "Nenhum registro encontrado",
        info: "Mostrando de _START_ até _END_ de _TOTAL_ registros",
        infoEmpty: "Mostrando 0 até 0 de 0 registros",
        infoFiltered: "(Filtrados de _MAX_ registros)",
        infoPostFix: "",
        lengthMenu: "_MENU_ resultados por página",
        loadingRecords: "Carregando...",
        processing: "Processando...",
        zeroRecords: "Nenhum registro encontrado",
        search: "Pesquisar",
        paginate: {
          next: "Próximo",
          previous: "Anterior",
          first: "Primeiro",
          last: "Último"
        },
        aria: {
          sortAscending: ": Ordenar colunas de forma ascendente",
          sortDescending: ": Ordenar colunas de forma descendente"
        }
      }
    };

    this.listar();
  } 

Assim, eu consigo ter o meu datatable em português, e controlar a paginação da forma que eu preciso, pois o padrão vem em inglês e com paginação diferente. Esta configuração de Language eu peguei do seguinte fonte https://datatables.net/plug-ins/i18n/Portuguese-Brasil e notei que era pra ser um arquivo json.

Eu gostaria de referenciar um arquivo json no lugar de todo esse trecho de código referente a configuração do datatable, neste atributo Language.

language: {Meu arquivo json aqui}

Ficou meio extenso, mas eu realmente não consegui achar isto de forma alguma.

Repositório do projeto https://github.com/luan373/stok-front

Caminho: stok-front/src/app/_components/moto-boy/listar-moto-boy/

.....

solução!

Fala aí Fabricio, tudo bem? Entendi, vamos lá:

Nesse caso precisa ver onde está seu carregaLista, o mesmo está no próprio componente que renderiza a tabela?

Sobre o json, você pode criar um json em algum lugar no seu projeto e depois importá-lo dentro do seu componente e passar para a chave language.

Ou o que eu aconselharia, você criar um ts para armazenar suas traduções e importá-lo no componente, apenas trocaria de json para ts.

Outro detalhe, dá uma olhada no i18nnext:

https://www.i18next.com

Geralmente uso ele para tradução, seja aplicações Angular, React ou Vue, é muito bom.

Espero ter ajudado.