Add internationalization to your dart project
dependencies:
flutter_localizations:
sdk: flutter
dev_dependencies:
gen_i18n: ^1.0.3
flutter:
assets:
- assets/i18n/locale/
Running this command will result in the creation of the following files:
- i18n.dart : a dart file will be generated in lib/i18n/. This dart file will be responsible for interpreting the translation files
{
"customMessage": "Write is here your message"
}
- locale : directory where the translation files live. They will be generated in the folder assets/i18n/locale
Note: The name of a translation file starts without the key i18n_
example: i18n_en.json
flutter pub run gen_i18n:initialize
Supported arguments:
Argument | Description |
---|---|
--locale | By definition only one translation file is generated i18n_en.json . If you want to create more translation files for other languages just send the arguments. Example: flutter pub run gen_i18n:initialize --locale-pt-es |
Modifies the main method
Future<void> main() async {
/// This is required
WidgetsFlutterBinding.ensureInitialized();
/// Initial locale is critical to initializing the internationalization feature
await I18n.initialize(
defaultLocale: Locale('en'), /// This is required
supportLocales: [Locale('en'),Locale('es')] /// This is optional
)
...
}
MaterialApp(
locale: I18n.currentLocate,
supportedLocales: I18n.supportedLocales,
localizationsDelegates: const [
const I18nDelegate(),
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate
],
...
)
To translate text, simply enter the key by calling the method I18n.getValue('customMessage')
or 'customMessage'.translate
Text(I18n.getValue('customMessage'))
Text('customMessage'.translate)
If you want to change the current locate simply call the await I18n.updateLocate(Locale('es'))
method.