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')) 方法。

GitHub

查看 Github