localization 1.1.1 copy "localization: ^1.1.1" to clipboard
localization: ^1.1.1 copied to clipboard

Package to simplify the package translation.

Localization #

Package para simplificar tradução no app.

import 'package:localization/localization.dart';

Configuração - Sem sistema de rotas [exemplo] #

A configuração do package sem sistema de rotas é bem simples, basta colocar após o MaterialApp o seguinte código:

return MaterialApp(
  ...,
  home: LocalizationWidget(child: MyHomePage()),
);

Dessa forma, será carregado o arquivo de tradução no início da aplicação e seu conteúdo ficará em memória.

Configuração - Com sistema de rotas [exemplo] #

Quando a aplicação está utilizando o sistema de rotas do flutter, não é utilizada a propriedade home do MaterialApp. Para resolver esse problema, utilize o método assíncrono estático Localization.configuration().

NOTA : Esse método deve ser chamado antes de todas as chamadas de tradução. Geralmente, é executado na SplashScreen.

Adicionando pastas de tradução (padrão 'assets/lang') #

Para configurar uma lista de pastas de tradução, basta utilizar o método:

Localization.setTranslationDirectories([
  'assets/lang',
  'packages/package_example/assets/lang',
]);

Para adicionar uma pasta de tradução sem limpar as pastas de tradução incluídas anteriormente, basta chamar o método

Localization.includeTranslationDirectory('assets/lang');

NOTA : Para as alterações de pasta surtirem efeito, deve chamar a seguir o método Localization.configuration()

Consumindo a tradução #

Para facilitar o consumo da tradução, criamos uma extension de simples utilização:

"sua-key".i18n();

Caso prefira, pode utilizar a tradução sem as extensions:

Localization.translate("sua-key");

Definindo um idioma manualmente #

Por padrão, o idioma é selecionado pela configuração window.locale do package dart:ui. Para forçar um determinado idioma, basta utilizar o parâmetro selectedLanguage, dessa forma:

Localization.configuration(selectedLanguage: 'pt_BR');

Se os arquivos de tradução não forem encontrados, será carregado o arquivo de traduções informado em defaultLanguage (padrão pt_BR.json).

Para saber qual o idioma que o dispositivo está chamando, basta importar o dart:ui dar um print de window.locale, dessa forma:

main.dart

import 'dart:ui';

void main(){
  debugPrint(window.locale.toString());
  runApp(MyApp());
}

Parâmetros #

Para enviar parâmetros para a tradução, utilize a chave %s, conforme o exemplo:

No arquivo de tradução: #

{
  "birthday":"O aniversário de %s é no dia %s"
}

No arquivo dart: #

"birthday".i18n(args: ["David Araujo", "07/03"]);

Condições #

Para enviar condições para a tradução, utilize a chave %b{valor_verdadeiro:valor_falso}, conforme o exemplo:

No arquivo de tradução: #

{
  "resultado_encontrado": "%s %b{Resultados:Resultado} %b{encontrados:encontrado}"
}

No arquivo dart: #

'resultado_encontrado'.i18n(args: [3], conditions: true, true])

Repetição de chaves #

Quando houver repetição nas chaves, será enviada uma mensagem no log informando a chave que está duplicada:

flutter: [Localization System] Duplicated Key: "password-label" Path: "packages/package_example/assets/lang"
flutter: [Localization System] Carregadas keys do path packages/package_example/assets/lang

Logs #

No Localization há diversos logs que você pode acompanhar na execução do seu app, mas se quiser desabilita-los, basta passar o valor false no parametro showDebugPrintMode do metodo configuration

Localization.configuration(showDebugPrintMode: false);

Você também pode configurar a variavel chamando a função

Localization.setShowDebugPrintMode(false);

Automação #

Criamos uma automação que gera as chaves e suas traduções no Slidy CLI, basta utilizar o comando slidy localization

182
likes
130
points
36.1k
downloads

Publisher

verified publisherflutterando.com.br

Weekly Downloads

Package to simplify the package translation.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on localization