Как добавить интернационализацию в плагин Flutter
Я создал плагин Flutter, и мне нужно добавить интернационализацию. Я следую этому руководству, как обычно, для своего приложения Flutter: интернационализация во Flutter 1.22+
Но с плагином Flutter нет MaterialApp, поэтому я не могу добавить это:
MaterialApp(
localizationsDelegates: Translations.localizationsDelegates,
supportedLocales: Translations.supportedLocales
)
Итак, есть ли способ добавить интернационализацию в мой плагин Flutter, чтобы я мог использовать это в своем плагине?
Translations.of(context).title;
2 ответа
Итак, я нашел ответ на случай, если это кому-то понадобится: вам нужно импортировать сгенерированный файл.dart в свое приложение, чтобы использовать его.
В
l10n.yaml
файл плагина у меня есть
output-localization-file=translations.dart
поэтому мне нужно импортировать этот файл в example/main.dart (или в любое приложение Flutter, использующее плагин):
import 'package:MinimalExampleInternationalization/l10n/translationsUpdate.dart';
и вот где мне нужно добавить этот код:
MaterialApp(
localizationsDelegates: Translations.localizationsDelegates,
supportedLocales: Translations.supportedLocales
)
Если ваше приложение Flutter, которое импортирует этот плагин, уже имеет интернационализацию, вы можете добавить несколько
localizationsDelegates:
и
supportedLocales:
как это:
MaterialApp(
localizationsDelegates: Translations.localizationsDelegates+TranslationsPlugin.localizationsDelegates,
supportedLocales: Translations.supportedLocales+TranslationsPlugin.supportedLocales,
)
Где Translations - это класс, созданный вашим приложением, а TranslationsPlugin - класс, созданный вашим плагином.
Также обратите внимание, что прямо сейчас есть ошибка при создании файлов интернационализации с помощью подключаемого модуля, поэтому вы можете удалить файл l10n.yaml и использовать вместо него эту команду:
flutter gen-l10n --arb-dir=assets/l10n --template-arb-file=string_en.arb --output-localization-file=translations.dart --output-class=Translations --output-dir=lib/l10n --no-synthetic-package
Дополнительная информация: проблема с флаттером и пример работы плагина с I18n
Это не большая вещь... Просто следуйте инструкциям здесь или здесь или здесь
Или, если хотите, можете воспользоваться услугой перевода Google. Здесь вам s= не нужно ничего делать, кроме как платить за язык. Вы можете найти его в игровой консоли, если у вас есть учетная запись разработчика.