如何在Flutter包中添加本地化支持

10
我正在创建一个Flutter包,其中包含一些文本。我希望我的包的使用者能够把所需的区域设置传递给它,根据这个区域设置,我的包应该决定是显示阿拉伯语还是英语的文本(这意味着我的包将包含包含这些语言环境字符串的资源文件)。
我唯一能够实现的是,我的消费者应用程序具有资源文件,并且我的消费者应用程序和包都必须注册相同的本地化插件作为依赖项。我不想让我的消费者应用程序担心本地化,而是由我的包处理基于区域设置显示翻译后的字符串。我的方法有什么问题吗?

1
我通过跟随另一个软件包“Catcher”的做法来实现了相同的功能。这是文件的链接-https://github.com/jhomlala/catcher/blob/master/lib/model/localization_options.dart - undefined
2个回答

2

-1

为了在软件中生成本地化文件:

  1. 使用 .arb 格式创建本地化文件
  2. 在软件包的根目录内添加 l10n.yaml 文件,并进行如下设置:
# Where to find translation files
arb-dir: lib/l10n

# Which translation is the default/template
template-arb-file: app_en.arb

# What to call generated dart files
output-localization-file: app_localizations.dart

3. 确保您的主本地化文件和'模板-arb-file'文件名相同。 4. 在包的pubspec.yaml文件中如下更新'dependencies'和'flutter':
dependencies:
  flutter_localizations:
    sdk: flutter
  intl: ^0.17.0


flutter:
  uses-material-design: true
  generate: true
  1. 在软件包根目录内运行 'flutter pub get'
  2. 用 MaterialApp 包装您的主 UI 小部件
  3. 按以下方式更新 MaterialApp
MaterialApp(
              localizationsDelegates: AppLocalizations.localizationsDelegates,
              supportedLocales: AppLocalizations.supportedLocales,
      ),
  • 在小部件中调用本地化键:

  • Text(AppLocalizations.of(context)!.helloWorld)
    

    注意:基本上在您的包根文件夹中使用自定义MaterialApp执行与官方文档中几乎相同的步骤。https://docs.flutter.dev/development/accessibility-and-localization/internationalization

    2
    这并不是很有用,因为你很可能不会在包内使用 MaterialApp 小部件。 - albru123

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接