zac*_*ack 4 dart flutter flutter-plugin flutter-intl
我做了一个 Flutter 插件,我需要添加国际化。我已经按照本教程进行操作,就像我通常对 Flutter 应用程序所做的那样:Internationalization in Flutter 1.22+
但是对于 Flutter 插件,没有 MaterialApp,所以我无法添加这个:
MaterialApp(
localizationsDelegates: Translations.localizationsDelegates,
supportedLocales: Translations.supportedLocales
)
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法将国际化添加到我的 Flutter 插件中,以便我可以在我的插件中使用它?
Translations.of(context).title;
Run Code Online (Sandbox Code Playgroud)
所以我找到了一个答案,以防有人需要这个:您需要在应用程序中导入生成的 .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
)
Run Code Online (Sandbox Code Playgroud)
如果导入此插件的 Flutter 应用程序已经具有国际化功能,那么您可以添加多个localizationsDelegates:,supportedLocales:如下所示:
MaterialApp(
localizationsDelegates: Translations.localizationsDelegates+TranslationsPlugin.localizationsDelegates,
supportedLocales: Translations.supportedLocales+TranslationsPlugin.supportedLocales,
)
Run Code Online (Sandbox Code Playgroud)
其中 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
更多信息:Flutter 问题和使用 I18n 的工作插件示例
| 归档时间: |
|
| 查看次数: |
1078 次 |
| 最近记录: |