flutter国际化如何实现
在Flutter项目中如何实现国际化支持?我想让应用显示多国语言,目前知道需要用到intl包和arb文件,但不清楚具体操作步骤。能否详细说明如何配置本地化代理、创建翻译文件,以及如何在代码中动态切换语言?特别是如何处理文本、日期和货币等内容的本地化?
2 回复
Flutter国际化使用flutter_localizations包,通过MaterialApp的localizationsDelegates和supportedLocales配置。定义ARB文件管理多语言资源,使用intl包生成代码。
更多关于flutter国际化如何实现的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现国际化(多语言支持)主要通过以下步骤完成:
1. 添加依赖
在 pubspec.yaml 中添加:
dependencies:
flutter:
sdk: flutter
flutter_localizations: # 添加此依赖
sdk: flutter
intl: ^0.18.1 # 用于消息格式化
2. 创建本地化资源
在项目根目录创建 l10n 文件夹,然后创建:
app_en.arb(英文)
{
"title": "Hello World",
"@title": {
"description": "App title"
}
}
app_zh.arb(中文)
{
"title": "你好世界",
"@title": {
"description": "应用标题"
}
}
3. 配置生成代码
在 pubspec.yaml 中配置:
flutter:
generate: true
localizations:
supported-locales:
- en
- zh
delegates:
- AppLocalizations.delegate
4. 配置MaterialApp
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'l10n/app_localizations.dart'; // 自动生成的文件
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
Locale('en'),
Locale('zh'),
],
home: MyHomePage(),
);
}
}
5. 使用本地化文本
Text(AppLocalizations.of(context)!.title)
6. 生成代码
运行命令生成本地化类:
flutter pub get
flutter gen-l10n
7. 切换语言
Locale _locale = Locale('en');
void _changeLanguage(Locale locale) {
setState(() {
_locale = locale;
});
}
// 在MaterialApp中设置
locale: _locale,
注意事项:
- 每次修改
.arb文件后需要重新运行flutter gen-l10n - 支持语言代码和地区代码(如
zh_CN) - 可以通过
Localizations.localeOf(context)获取当前语言设置
这样就完成了Flutter应用的国际化和本地化配置。

