Flutter如何通过gen-l10n实现i18n国际化
在Flutter项目中,使用gen-l10n实现i18n国际化时遇到几个问题:
- 按照官方文档配置arb文件后,运行
flutter gen-l10n命令没有生成对应的dart文件,该如何排查? - 如何在arb文件中正确配置复数形式和性别等高级语法?
- 生成的本地化类无法在其他dart文件中引用,提示未定义,需要检查哪些配置?
- 动态切换语言时界面不自动刷新,是否需要手动处理?希望有完整的示例代码参考。
Flutter 使用 gen-l10n 实现国际化的步骤如下:
-
添加依赖:在
pubspec.yaml中添加flutter_localizations依赖,并启用generate选项。 -
创建 arb 文件:在项目根目录新建
l10n.yaml文件,配置 arb 文件路径。然后在指定目录(如lib/l10n)创建app_en.arb和app_zh.arb等文件,分别对应不同语言。 -
编写翻译内容:在 arb 文件中使用 JSON 格式定义键值对,例如:
{ "hello": "Hello!" }中文文件对应:
{ "hello": "你好!" } -
生成代码:运行
flutter gen-l10n自动生成AppLocalizations类,包含所有翻译字段。 -
配置 MaterialApp:在
MaterialApp中设置localizationsDelegates和supportedLocales,引用生成的AppLocalizations.delegate。 -
使用翻译:通过
AppLocalizations.of(context)!.hello获取当前语言的文本。
简单高效,适合快速实现多语言支持!
更多关于Flutter如何通过gen-l10n实现i18n国际化的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中,通过 gen-l10n 工具实现国际化的步骤如下:
1. 添加依赖
在 pubspec.yaml 中启用生成本地化支持:
dependencies:
flutter:
sdk: flutter
flutter_localizations: # 添加此依赖
sdk: flutter
flutter:
generate: true # 启用代码生成
uses-material-design: true
2. 创建 ARB 文件
在项目根目录下创建 l10n.yaml 文件,配置 ARB 文件路径:
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-dir: lib/l10n/generated
在 lib/l10n 目录下创建 ARB 文件(例如 app_en.arb 和 app_zh.arb):
app_en.arb(英文):
{
"helloWorld": "Hello World!",
"@helloWorld": {
"description": "简单的欢迎语"
}
}
app_zh.arb(中文):
{
"helloWorld": "你好世界!"
}
3. 生成本地化代码
运行以下命令生成代码:
flutter gen-l10n
或直接构建项目(自动触发生成):
flutter run
生成的文件位于 lib/l10n/generated 目录。
4. 配置 MaterialApp
在 main.dart 中配置 MaterialApp 使用生成的本地化:
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // 导入生成的文件
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text(AppLocalizations.of(context)!.helloWorld),
),
);
}
}
5. 测试切换语言
在设备或模拟器的系统设置中切换语言,App 将自动匹配对应的本地化文案。
注意事项:
- ARB 文件需遵循格式,键名保持一致。
- 描述字段(
@key)可选,用于提供上下文。 - 支持复数、性别等复杂语法(需在 ARB 中配置参数)。
通过以上步骤即可快速实现 Flutter 应用的国际化。

