Как добавить локализацию в приложение на Flutter?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
-
Добавление зависимостей:
В файле
pubspec.yamlнужно добавить зависимости для локализации:dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter intl: ^0.18.0 # Пример версии, может отличатьсяЗатем выполнить
flutter pub get. -
Создание файлов локализации:
Создать каталоги для ресурсов локализации, например
./lib/l10n/. Внутри создать.arbфайлы для каждого поддерживаемого языка. Например, для английского и русского:app_en.arb:{ "helloWorld": "Hello World!", "@@locale": "en" }app_ru.arb:{ "helloWorld": "Привет мир!", "@@locale": "ru" } -
Настройка генерации кода:
В файле
pubspec.yamlнужно указать путь к файлами локализации и настроить.arbгенерацию:flutter: generate: true # Включить генерацию assets: - assets/... # Ваши другие ассеты l10n: arb-dir: lib/l10n # Каталог с .arb файлами template-arb-file: app_en.arb # Шаблонный .arb файл output-localization-file: app_localizations.dart # Имя генерируемого файлаПосле сохранения
pubspec.yaml, Flutter автоматически сгенерирует файл./lib/generated/l10n.dart(или указанное вoutput-localization-file). -
Использование локализованных строк:
В приложении, где нужно использовать локализованные строки, импортировать сгенерированный файл:
import 'package:flutter_gen/gen_l10n/app_localizations.dart';Затем обратиться к локализованной строке через
AppLocalizations.of(context)!:Text(AppLocalizations.of(context)!.helloWorld), -
Настройка
MaterialAppилиCupertinoApp:В виджете верхнего уровня (обычно
MaterialAppилиCupertinoApp) нужно указать поддержку языков и делегаты локализации:import 'package:flutter_gen/gen_l10n/app_localizations.dart'; MaterialApp( // ... другие настройки localizationsDelegates: const [ AppLocalizations.delegate, // Делегат из сгенерированного файла GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [ Locale('en', ''), // English Locale('ru', ''), // Russian // ... другие поддерживаемые языки ], // ... );
Теперь приложение будет автоматически выбирать локализацию в зависимости от настроек устройства пользователя, если она присутствует в supportedLocales. Для изменения локали вручную можно использовать Locale и обновлять состояние приложения.