Как добавить интернационализацию в плагин 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= не нужно ничего делать, кроме как платить за язык. Вы можете найти его в игровой консоли, если у вас есть учетная запись разработчика.

Другие вопросы по тегам