Flutter中如何实现l10n国际化

在Flutter项目中如何正确配置和实现l10n国际化?目前按照官方文档添加了flutter_localizations依赖和intl包,也在pubspec.yaml中配置了generate: true,但运行flutter gen-l10n后生成的.arb文件无法自动生成对应的Dart代码。请问具体需要哪些步骤确保本地化文件能正确生成?如果支持多语言切换,该如何动态更新App语言而不重启?

2 回复

在Flutter中实现l10n国际化,步骤如下:

  1. 添加依赖:flutter_localizationsintl
  2. 创建ARB文件(如 app_en.arbapp_zh.arb)存储翻译内容。
  3. 使用 flutter gen-l10n 生成本地化类。
  4. MaterialApp 中配置 localizationsDelegatessupportedLocales
  5. 使用 AppLocalizations.of(context) 获取翻译文本。

示例代码:

Text(AppLocalizations.of(context)!.hello)

更多关于Flutter中如何实现l10n国际化的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中实现国际化(l10n)可通过以下步骤完成:

  1. 添加依赖
    pubspec.yaml 中添加:
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations: # 添加此依赖
    sdk: flutter

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_gen: ^5.4.0 # 代码生成工具(可选)
  1. 创建本地化文件
    在项目根目录创建 l10n.yaml 文件:
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
  1. 编写ARB文件
    lib/l10n/ 目录下创建语言资源文件,例如:
  • app_en.arb(英文):
{
  "helloWorld": "Hello World!",
  "@helloWorld": {
    "description": "简单的欢迎语"
  }
}
  • app_zh.arb(中文):
{
  "helloWorld": "你好世界!"
}
  1. 生成本地化代码
    运行命令自动生成Dart代码:
flutter gen-l10n
  1. 配置MaterialApp
    main.dart 中设置:
return MaterialApp(
  localizationsDelegates: AppLocalizations.localizationsDelegates,
  supportedLocales: AppLocalizations.supportedLocales,
  home: MyHomePage(),
);
  1. 使用本地化文本
    在Widget中调用:
Text(AppLocalizations.of(context)!.helloWorld)

注意

  • 确保ARB文件使用UTF-8编码
  • 执行 flutter gen-l10n 后会在 .dart_tool 生成对应代码
  • 可通过 Localizations.localeOf(context) 获取当前语言

此方案利用Flutter官方推荐的工具链,可实现静态类型安全的国际化支持。

回到顶部