gen_i18n
为您的 Dart 项目添加国际化功能
安装
dependencies:
flutter_localizations:
sdk: flutter
dev_dependencies:
gen_i18n: ^1.0.0
flutter:
assets:
- assets/i18n/locale/
用法
运行此命令将创建以下文件
- i18n.dart :将在 lib/i18n/ 中生成一个 dart 文件。此 dart 文件将负责解释翻译文件
{
"customMessage": "Write is here your message"
}
- locale :翻译文件所在的目录。它们将在 assets/i18n/locale 文件夹中生成
注意:翻译文件的名称不以键 i18n_ 开头,例如:i18n_en.json
flutter pub run gen_i18n:initialize
支持的参数
| 参数 | 描述 |
|---|---|
| –locate | 根据定义,只生成一个翻译文件 i18n_en.json。如果您想为其他语言创建更多翻译文件,只需发送参数即可。例如:flutter pub run gen_i18n:initialize --locate-pt-es |
示例
修改主方法
Future<void> main() async {
/// This is required
WidgetsFlutterBinding.ensureInitialized();
/// Initial locale is critical to initializing the internationalization feature
await I18n.initialize(
defaultLocale: Locale('en'), /// This is required
supportLocales: [Locale('en'),Locale('es')] /// This is optional
);
...
}
MaterialApp(
locale: I18n.currentLocate,
supportedLocales: I18n.supportedLocales,
localizationsDelegates: const [
const I18nDelegate(),
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate
],
...
)
要翻译文本,只需调用 I18n.getValue('customMessage') 或 'customMessage'.translate 方法来输入键
Text(I18n.getValue('customMessage'))
Text('customMessage'.translate)
如果您想更改当前位置,只需调用 await I18n.updateLocate(Locale('es')) 方法。