Como localizar o aplicativo no Flutter

⏱️2 min
Compartilhar:

Localizar seu aplicativo é um requisito importante se você deseja que ele seja usado em todo o mundo. Flutter fornece uma maneira simples de localizar seu aplicativo usando arquivos arb Este artigo explicará como localizar seu aplicativo no Flutter . Observe que este artigo é baseado no Flutter 2.0.1, portanto, se você estiver usando versões mais antigas, a maneira explicada neste artigo pode não funcionar.

1. Adicione dependências a pubspec.yaml

Adicione dependências a pubspec.yaml

yaml
1dependencies:
2 flutter:
3 sdk: flutter
4 flutter_localizations:
5 sdk: flutter
6 intl: ^0.16.1

Esses pacotes são necessários para localização.

2. Adicione o sinalizador de generate

yaml
1flutter:
2 generate: true

Este sinalizador permite que o Flutter gere a AppLocalizations partir de arb que são necessários para a localização.

3. Crie l10n.yaml

yaml
1arb-dir: lib/l10n
2template-arb-file: app_en.arb
3output-localization-file: app_localizations.dart

Este arquivo fornece configurações ao gerar automaticamente a classe AppLocalizations arb-dir especifica o diretório para arquivos arb template-arb-file especifica o arb usado como template. output-localization-file especifica o nome do arquivo de classe AppLocalizations

4. Crie o arquivo arb

Crie o arb no diretório especificado em l10n.yaml. arb arquivo arb está no formato json e você pode fornecer traduções para cada chave. O kay é chamado de resource id e o valor é chamado de resource value . Por exemplo, o exemplo abaixo fornece a tradução em inglês para o resource id helloWorld .

json
1{
2 "helloWorld": "Hello World!",
3 "@helloWorld": {
4 "description": "The conventional newborn programmer greeting"
5 }
6}

Você pode fornecer uma explicação detalhada para a resource id do recurso adicionando o prefixo @ resource id do recurso. No exemplo acima, @helloWorld descreve as informações detalhadas da resource id helloWorld . Em seguida, você pode criar outros arb acordo com o idioma que seu aplicativo suporta. app_ja.arb suporte ao idioma japonês, pode adicionar o arquivo app_ja.arb como abaixo.

json
1{
2 "helloWorld": "こんにちは世界!"
3}

arb arquivo arb fornece várias expressões úteis e aqui apresentarei uma delas, o placeholder . Placeholder permite que você passe parâmetros para o resource value .

json
1"pricePerMonth": "{price} per month",
2"@pricePerMonth": {
3 "placeholders": {
4 "price": {
5 "example": "123.45",
6 "description": "price"
7 }
8 }
9}

Você pode passar qualquer parâmetro no resource value como {price} . Em seguida, escreva a descrição do parâmetro em placeholders em @resource id . Depois de criar o placeholder e gerar AppLocalizations classe AppLocalizations, você pode chamá-la de seu aplicativo como abaixo.

dart
1AppLocalizations.of(context).pricePerMonth(100.0);

5. Crie AppLocalizations um arquivo de classe AppLocalizations

Se você chamar flutter pub get ou construir seu aplicativo, o AppLocalizations será gerado automaticamente. O nome do arquivo é especificado em l10n.yaml. Nesse caso, o arquivo seria .dart_tool/flutter_gen/gen_l10n/app_localizations.dart . O diretório é determinado pelo sistema.

A propósito, você não precisa submeter este arquivo ao git. Este arquivo é sempre gerado quando você constrói seu aplicativo e reflete o conteúdo do arquivo arb

6. Chame Material / Widget / CupertinoApp

Defina supportedLocales parâmetros localizationsDelegates e supportedLocales. Não se esqueça de importar a classe AppLocalizations

dart
1import 'package:flutter_gen/gen_l10n/app_localizations.dart';
2
3@override
4Widget build(BuildContext context) {
5 return MaterialApp(
6 localizationsDelegates: AppLocalizations.localizationsDelegates, // Add this line
7 supportedLocales: AppLocalizations.supportedLocales, // Add this line
8 home: // ...
9 );
10}

7. Ligue para o texto traduzido

Você pode usar texto localizado como o exemplo abaixo. A sintaxe é como AppLocalizations.of(context).<resource id>.

dart
1Text(AppLocalizations.of(context).helloWorld);

Localizações para a data

Você também pode exibir a data localizada como abaixo.

dart
1Locale locale = Localizations.localeOf(context);
2DateFormat.yMd(locale.toString()).format(DateTime.now());

Referências

Compartilhar:

Artigos relacionados

Aplicativo Android CI/CD com Flutter
Guides

Aplicativo Android CI/CD com Flutter

Aprenda a construir pipelines CI/CD para apps Android com Flutter. Baseado em GitHub Actions, sem usar fastlane.

mark241