如何将国际化添加到 Flutter 插件

How to add Internationalization to a Flutter Plugin

我做了一个Flutter插件,需要添加国际化。 我按照我通常为我的 Flutter 应用程序所做的那样遵循本教程:Internationalization in Flutter 1.22+

但是使用 Flutter 插件时没有 MaterialApp,所以我无法添加:

MaterialApp(
   localizationsDelegates: Translations.localizationsDelegates,
   supportedLocales: Translations.supportedLocales
)

那么,有没有办法将国际化添加到我的 Flutter 插件中,以便我可以在我的插件中使用它?

Translations.of(context).title;

这不是什么大事...按照步骤进行即可here or here or here

或者,如果您愿意,可以使用 google 翻译服务。在这里你不需要做任何事情,但你必须为每种语言付费。如果您有开发者帐户,您可以在游戏控制台中找到它。

所以我找到了一个答案,以防有人需要这个: 您需要在您的应用中导入生成的.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 是由您的应用生成的 class,而 TranslationsPlugin 是由您的插件生成的 class。

另请注意,现在使用插件生成国际化文件时存在错误,因此您可以删除 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

更多信息:Flutter Issue and Working Plugin Example with I18n