flutter intl插件如何使用
我在使用Flutter的intl插件时遇到了一些问题。这个插件具体该怎么配置和使用?我在pubspec.yaml中添加了依赖,也运行了flutter pub get,但是不知道接下来该怎么做。有没有详细的步骤说明?特别是如何生成arb文件,以及在代码中如何引用这些本地化字符串?希望有经验的朋友能分享一下具体的使用方法,谢谢!
2 回复
Flutter intl插件使用步骤:
- 在pubspec.yaml添加依赖
- 运行
flutter pub get - 创建arb文件定义本地化字符串
- 运行
flutter pub run intl_translation:extract_to_arb生成arb模板 - 运行
flutter pub run intl_translation:generate_from_arb生成dart代码 - 在MaterialApp中配置localizationsDelegates和supportedLocales
更多关于flutter intl插件如何使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
Flutter的intl插件用于应用国际化(i18n),支持多语言、日期、数字和消息格式化。以下是基本使用步骤:
1. 添加依赖
在pubspec.yaml中添加:
dependencies:
flutter:
sdk: flutter
intl: ^0.18.1
2. 创建ARB文件
在项目根目录创建l10n文件夹,添加:
app_en.arb(英文):
{
"helloWorld": "Hello World!",
"@helloWorld": {
"description": "Hello world message"
}
}
app_zh.arb(中文):
{
"helloWorld": "你好世界!"
}
3. 生成本地化代码
在pubspec.yaml中配置生成器:
flutter:
generate: true
创建l10n.yaml文件:
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
运行生成命令:
flutter gen-l10n
4. 配置MaterialApp
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
home: MyHomePage(),
);
}
}
5. 使用本地化文本
Text(AppLocalizations.of(context)!.helloWorld)
其他功能:
- 日期格式化:
var now = DateTime.now();
String formatted = DateFormat.yMd().format(now); // 输出:7/10/2023
- 数字格式化:
String num = NumberFormat.decimalPattern().format(12345); // 输出:12,345
注意事项:
- 每次修改ARB文件后需重新运行
flutter gen-l10n - 使用
AppLocalizations.of(context)!时确保上下文在MaterialApp内 - 可通过
Localizations.localeOf(context)获取当前语言设置
这样就完成了Flutter应用的基本国际化配置。

