如何将国际化添加到 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插件,需要添加国际化。 我按照我通常为我的 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