Как да добавите локализация към приложение на Flutter?
sobes.tech AI
Отговор от 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:В горния widget (обикновено
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', ''), // Английски Locale('ru', ''), // Руски // ... други поддържани езици ], // ... );
Сега приложението автоматично ще избира локализация според настройките на устройството на потребителя, ако тя е налична в supportedLocales. За ръчно промяна на локалата може да използвате Locale и да обновите състоянието на приложението.