Flutter 多语言(国际化)入门教程

发布于:2025-07-20 ⋅ 阅读:(16) ⋅ 点赞:(0)

随着移动应用的全球化,支持多语言(国际化,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: flutter
  intl: ^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. 在代码中使用多语言


Widget build(BuildContext context) {
  final l10n = AppLocalizations.of(context)!;
  return Text(l10n.hello); // 会根据当前语言自动显示“Hello!”或“你好!”
}

带参数的用法:

Text(l10n.greetUser(username: "小明"))

四、如何切换语言?

Flutter 默认会根据系统语言自动切换。如果你想在 App 内手动切换,可以通过设置 locale 属性:

MaterialApp(
  locale: Locale('zh'), // 强制中文
  // ...
)

五、常见问题与小贴士

  1. .arb 文件修改后如何生效?
    只需保存 .arb 文件并重新运行项目,Flutter 会自动生成新的多语言 Dart 文件。

  2. 如何添加新语言?
    新增一个对应的 .arb 文件,并在 supportedLocales 里添加即可。

  3. 如何管理多语言文案?
    建议用 Excel 或在线工具(如 Localizely)统一管理,再导出为 .arb 文件。

  4. 调试时文案没更新?
    可以尝试 flutter clean 后重新运行,或手动执行 flutter gen-l10n


六、结语

Flutter 的多语言支持非常强大且易用。只需维护好 .arb 文件,配合自动生成的本地化类,就能让你的 App 轻松适配全球用户。赶快为你的项目加上多语言支持吧!

如有疑问,欢迎留言交流!


祝你 Flutter 多语言开发顺利!


网站公告

今日签到

点亮在社区的每一天
去签到