Hola, Amigos! На связи Вова, Flutter dev Amiga. Сегодня расскажем, как можно настроить локализацию в приложении.
Сначала поставим необходимые пакеты в pubspec.yaml:
flutter_localizations:
sdk: flutter
intl: ^0.18.1
intl_utils: ^2.8.7
Flutter localizations – пакет локализации, использующий остальные пакеты ниже.
Intl – пакет для перевода текстов приложения, предоставляет возможности интернационализации и локализации.
Intl utils – вспомогательный пакет для Intl, он генерирует шаблонный код для библиотеки Intl и добавляет автозаполнение ключей в коде Dart.
Далее необходимо у настроек Flutter разрешить генерирование локализованных строк в arb-файлах (generate: true):
flutter:
uses-material-design: true
generate: true
Последнее в pubspec.yaml – настроить intl:
flutter_intl:
enabled: true
main_locale: ru
Теперь создаём папку l10n, в ней .arb-файлы для языков, на которые будет переведено приложение. В нашем случае – это русский и английский.
В intl_ru.arb:
{
"@@locale": "ru",
"title": "Енот"
}В intl_en.arb:
{
"@@locale": "en",
"title": "Racoon"
}Подключаем локализацию к приложению в main.dart:
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
///тут подключаем локализацию
localizationsDelegates: const [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
DefaultCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
///
home: const MainScreen(),
);
}
Для генерирования кода локализации выполняем команду
flutter pub run intl_utils:generate. Или упростите интеграцию .arb-переводов в Flutter с помощью плагина для VS Code.Возникает вопрос, как использовать локализованные тексты? Тут нам на помощь приходит константа S:
Text(
S.current.racoon,
),
Расскажите в чате, в каком проекте вы использовали данный пакет?
