Flutter 多语言(国际化)入门教程
随着移动应用的全球化,支持多语言(国际化,i18n)已经成为 App 开发的标配。Flutter 提供了完善的国际化支持,让你可以轻松为应用添加多语言能力。本文将带你快速入门 Flutter 的多语言开发。
一、什么是国际化(i18n)和本地化(l10n)?
- 国际化(i18n):Internationalization,指让应用具备支持多语言和多地区的能力。
- 本地化(l10n):Localization,指为不同地区/语言提供对应的翻译和内容适配。
在 Flutter 项目中,通常通过 .arb
文件(Application Resource Bundle)来管理多语言文案。
二、Flutter 多语言的基本原理
Flutter 使用 intl
包和自动生成的 AppLocalizations
类来实现多语言切换。你只需维护各语言的 .arb
文件,Flutter 会自动生成 Dart 代码,供你在项目中调用。
三、实战:为你的 Flutter 项目添加多语言支持
1. 配置依赖
在 pubspec.yaml
中添加:
dependencies:flutter_localizations:sdk: flutterintl: ^0.18.0
2. 配置 l10n.yaml
(可选)
在项目根目录下新建 l10n.yaml
,内容如下:
arb-dir: lib/l10n
template-arb-file: intl_en.arb
output-localization-file: app_localizations.dart
3. 新建多语言资源文件
在 lib/l10n/
目录下新建:
intl_en.arb
(英文)intl_zh.arb
(中文)intl_ja.arb
(日文,可选)
示例内容:
intl_en.arb
{"hello": "Hello!","greetUser": "Hello, {username}!"
}
intl_zh.arb
{"hello": "你好!","greetUser": "你好,{username}!"
}
4. 配置 MaterialApp
在 main.dart
中:
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';MaterialApp(// ...localizationsDelegates: const [AppLocalizations.delegate,GlobalMaterialLocalizations.delegate,GlobalWidgetsLocalizations.delegate,GlobalCupertinoLocalizations.delegate,],supportedLocales: const [Locale('en'),Locale('zh'),Locale('ja'),],// ...
)
5. 在代码中使用多语言
build(BuildContext context) {final l10n = AppLocalizations.of(context)!;return Text(l10n.hello); // 会根据当前语言自动显示“Hello!”或“你好!”
}
Widget
带参数的用法:
Text(l10n.greetUser(username: "小明"))
四、如何切换语言?
Flutter 默认会根据系统语言自动切换。如果你想在 App 内手动切换,可以通过设置 locale
属性:
MaterialApp(locale: Locale('zh'), // 强制中文// ...
)
五、常见问题与小贴士
-
.arb 文件修改后如何生效?
只需保存.arb
文件并重新运行项目,Flutter 会自动生成新的多语言 Dart 文件。 -
如何添加新语言?
新增一个对应的.arb
文件,并在supportedLocales
里添加即可。 -
如何管理多语言文案?
建议用 Excel 或在线工具(如 Localizely)统一管理,再导出为.arb
文件。 -
调试时文案没更新?
可以尝试flutter clean
后重新运行,或手动执行flutter gen-l10n
。
六、结语
Flutter 的多语言支持非常强大且易用。只需维护好 .arb
文件,配合自动生成的本地化类,就能让你的 App 轻松适配全球用户。赶快为你的项目加上多语言支持吧!
如有疑问,欢迎留言交流!
祝你 Flutter 多语言开发顺利!