Skip to content

Latest commit

 

History

History
107 lines (78 loc) · 2.87 KB

README.md

File metadata and controls

107 lines (78 loc) · 2.87 KB

Implementando I18N com flutter

Nos casos onde usuarios de diferentes linguas irão acessar seu aplicativo, é interessante que o aplicativo esteja na linguagem que o usuario usa, nisso entra a Intercionalização com o padrão I18

#Como implementar em aplicações flutter.

Com o projeto já é necessario adicionar os seguintes pacotes, há duas formas para isso

por linha de comando no terminal exemplo a baixo:

 flutter pub add flutter_localizations --sdk=flutter 
 flutter pub add intl:any

Ou adicionando a seguinte tag no pubspec.yaml

pubspec

Ainda dentro do Spec adicionage a tag de generate na sessão flutter

habilitando generate

Na Raiz do projeto crie um arquivo chamado l10n.yaml ele é responsavel pelas configurações a onde ira ser encontrado as localizações. Contendo o seguinte conteudo.

arb-dir: lib/l10n
template-arb-file: app_pt.arb
output-localization-file: app_localizations.dart

arb-dir: diretorio a onde esta localizado os arquivos .arb template-arb-file: template padrão configurado para o pt-br output-localization-file: class gerada com as palavras cadastradas.

Crie uma pasta na Lib/l10n e crie os arquivos

image

o conteudo deles seguem o formado json

{
    "helloWorld":"Ola mundo"
}

Utilizando no app

Crie uma class que instancia o MaterialApp

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Sample App Localização',
        localizationsDelegates: [
          AppLocalizations.delegate,
          GlobalMaterialLocalizations.delegate,
          GlobalCupertinoLocalizations.delegate,
          GlobalWidgetsLocalizations.delegate
        ],
        supportedLocales: [
          Locale('en'),
          Locale('pt', 'BR'),
          Locale('es'),
        ],
        home: MyHomeApp());
  }
}

para usar basta adicionar AppLocalizations.of(context)!.{DO METODO} image

class MyHomeApp extends StatelessWidget {
  const MyHomeApp({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(AppLocalizations.of(context)!.helloWorld),
      ),
      body: Center(
        child: TextButton(
          onPressed: () {},
          child: Text(AppLocalizations.of(context)!.helloWorld),
        ),
      ),
    );
  }
}
demonstracao.mp4