Internacionalização e localização são aspectos fundamentais no desenvolvimento de aplicativos, pois permitem que o aplicativo seja usado por pessoas de diferentes regiões e que falam diferentes idiomas. Flutter e Dart oferecem ferramentas poderosas para facilitar a internacionalização e localização de aplicativos. Neste texto, vamos aprender como configurar o ambiente para internacionalização em Flutter.
Antes de começar, é importante entender o que é internacionalização e localização. Internacionalização (i18n) é o processo de projetar e preparar seu aplicativo para ser usado em diferentes idiomas e regiões. Localização (l10n) é o processo de traduzir o conteúdo internacionalizado e adaptar o aplicativo para regiões específicas.
Configuração do ambiente para internacionalização
Para começar a internacionalização em Flutter, precisamos fazer algumas configurações iniciais. Primeiro, você precisará adicionar a dependência flutter_localizations ao seu arquivo pubspec.yaml:
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
Em seguida, você precisará importar o pacote flutter_localizations em seu arquivo main.dart e adicionar as localizações que o aplicativo suportará:
import 'package:flutter_localizations/flutter_localizations.dart';
void main() {
runApp(MaterialApp(
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('en', 'US'), // English
const Locale('es', 'ES'), // Spanish
// ... other locales the app supports
],
));
}
Os delegates de localização são classes que produzem coleções localizadas de valores específicos. GlobalMaterialLocalizations.delegate fornece strings e layouts localizados para a biblioteca Material Components. GlobalWidgetsLocalizations.delegate define o texto direcional padrão para o widget MaterialApp.
Agora, você precisa criar um arquivo Dart para cada idioma que o aplicativo suportará. Cada arquivo Dart deve conter uma classe que estende Localizations e implementa todas as strings que serão usadas no aplicativo. Por exemplo, para inglês, você pode criar um arquivo chamado app_localizations_en.dart:
class AppLocalizationsEn extends Localizations {
// ... put your localized strings here
}
Para cada string que você quer localizar, você precisa adicionar uma propriedade getter. Por exemplo, se você tem uma string "hello", você pode adicionar o seguinte código:
String get hello => "Hello";
Para usar a string localizada em seu aplicativo, você pode usar o método Localizations.of(). Por exemplo:
Text(Localizations.of(context, AppLocalizationsEn).hello)
Isso exibirá a string "Hello" se o idioma atual do aplicativo for inglês.
Para adicionar suporte para outro idioma, você precisa criar outro arquivo Dart e uma outra classe que estende Localizations. Por exemplo, para espanhol, você pode criar um arquivo chamado app_localizations_es.dart e adicionar a seguinte classe:
class AppLocalizationsEs extends Localizations {
// ... put your localized strings here
}
Em seguida, você precisa adicionar a nova localização na lista de suporte do aplicativo:
supportedLocales: [
const Locale('en', 'US'), // English
const Locale('es', 'ES'), // Spanish
const Locale('fr', 'FR'), // French
// ... other locales the app supports
],
Em resumo, a internacionalização e localização em Flutter envolvem a configuração do ambiente para suportar vários idiomas, a criação de arquivos Dart para cada idioma com classes que estendem Localizations, e a utilização do método Localizations.of() para exibir strings localizadas. Este processo permite que você crie aplicativos que podem ser usados por usuários de diferentes regiões e que falam diferentes idiomas.