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

outdated

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

Automação #

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

178
likes
0
pub points
97%
popularity

Publisher

verified publisherflutterando.com.br

Package to simplify the package translation.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter

More

Packages that depend on localization