localization 0.2.0-nullsafety localization: ^0.2.0-nullsafety 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 #
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 #
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.
Consumindo a tradução #
Para facilitar o consumo da tradução, criamos uma extension de simples utilização:
"sua-key".i18n();
Definindo um idioma manualmente #
Por padrão, o idioma é selecionado pela configuração Platform.localeName
do package dart:io
.
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:io
dar um print de Platform.localeName
, dessa forma:
main.dart
import 'dart:io';
void main(){
print(Platform.localeName);
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(["David Araujo", "07/03"]);
Automação #
Criamos uma automação que gera as chaves e suas traduções no Slidy CLI, basta utilizar o comando slidy localization