Как использовать easy_localization в зависимом пакете flutter?

#flutter #flutter-dependencies

#flutter #flutter-зависимости

Вопрос:

Я использую easy_localization в своем приложении, и все работает нормально. Однако один из пакетов, от которого зависит мое приложение (внутренний пакет), также имеет переводы, и я хотел бы использовать easy_translation в этом пакете. Как я могу настроить свое основное приложение и пакет, чтобы у них обоих были свои собственные переводы?

Вот конфигурация моего основного приложения:

   EasyLocalization(
    supportedLocales: AppConfig.SUPPORTED_LANG.split(',').map((e) => Locale.fromSubtags(languageCode: e)).toList(),
    path: 'lib/resources/assets/translations',
    useOnlyLangCode: true,
    assetLoader: CodegenLoader(),
    startLocale: Locale(Intl.getCurrentLocale()),
    fallbackLocale: Locale.fromSubtags(languageCode: AppConfig.DEFAULT_LANG),
    child: MyApp(),
  ),
  

Все переводы моего основного приложения находятся внутри класса CodegenLoader. Я хотел бы сделать то же самое для своего пакета.

С уважением

Комментарии:

1. вы как-то решили это?

2. Я не использовал этот пакет. Просто простая LocalizationsDelegate с intl.

3. Да, я, вероятно, сделаю то же самое в будущем. На данный момент у меня есть хитрый обходной путь. Я опубликую это как ответ, поскольку это может кому-то помочь.

Ответ №1:

Прямо сейчас я думаю, что это невозможно. Но есть обходной путь, который может помочь некоторым людям:

  1. Добавьте easy_localization в pubspec.yaml свой пакет
  2. Используйте функцию tr(), как обычно, внутри кода пакета
  3. Добавьте ключи перевода, которые вы используете в пакете, в файл перевода вашего основного приложения
    • Пример: если вы используете ключ перевода welcome в своем пакете, добавьте его "welcome": "Welcome to the App!" в en.json ваше основное приложение

Конечно, это халтура, и она не работает, если основное приложение не использует easy_localization но, возможно, это до тех пор, пока не будет найдено лучшее решение.