flutter-localizing-apps 是做什么的?
配置 Flutter 应用以支持多种语言和地区。在准备面向国际市场和多语言用户的应用时使用。
概述
此技能指导如何为 Flutter 应用添加多语言和区域支持。它使用 flutter_localizations 和 intl 包来实现国际化(i18n)和本地化(l10n)。
使用方法
-
添加依赖:在
pubspec.yaml中添加flutter_localizations和intl依赖。dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter intl: ^0.18.0 -
配置本地化委托:在
MaterialApp中设置localizationsDelegates和supportedLocales。import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:intl/intl.dart'; MaterialApp( localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: [ Locale('en', 'US'), // 英语 Locale('zh', 'CN'), // 中文 ], localeResolutionCallback: (locale, supportedLocales) { // 自定义区域解析逻辑 }, home: MyHomePage(), ); -
创建 ARB 文件:在
lib/l10n目录下创建 ARB 文件(例如app_en.arb、app_zh.arb)。// app_en.arb { "@@locale": "en", "appTitle": "My App" }// app_zh.arb { "@@locale": "zh", "appTitle": "我的应用" } -
生成本地化类:运行以下命令生成 dart 类。
flutter gen-l10n -
使用本地化字符串:在代码中通过生成的
AppLocalizations类引用。Text(AppLocalizations.of(context)!.appTitle)
高级用法
-
复数形式:在 ARB 文件中定义复数字符串。
{ "@_count": "1", "itemsCount": "{count} item(s)" } -
日期格式:使用
DateFormat类按区域格式化日期。DateFormat.yMMMMd().format(DateTime.now()) -
RTL 支持:Flutter 自动处理 RTL 布局,无需额外配置。
注意事项
- 确保在
pubspec.yaml中指定最低 Flutter 版本以支持本地化特性。 - 定期更新 ARB 文件以保持翻译同步。
- 测试不同区域设置下的布局和字符串显示。