Flutter国际化检查插件i18n_checker的使用

发布于 1周前 作者 h691938207 来自 Flutter

Flutter国际化检查插件i18n_checker的使用

i18n_checker

覆盖率 风格:非常好分析 许可证:MIT

Very Good CLI 生成 🤖

命令行工具,用于改进不同语言文件的一致性。


开始使用 🚀

如果CLI应用程序在 pub 上可用,可以通过以下方式全局激活:

dart pub global activate i18n_checker

使用方法

# 检查差异
$ i18n_checker diff --arb-folder /path/to/arb/folder --reference-file intl_fr.arb

# 显示CLI版本
$ i18n_checker --version

# 显示使用帮助
$ i18n_checker --help

完整示例 Demo

为了更好地理解如何使用 i18n_checker,我们来看一个完整的示例。

假设你有一个项目结构如下:

my_flutter_project/
├── lib/
│   └── main.dart
├── arb/
│   ├── intl_en.arb
│   ├── intl_fr.arb
│   └── intl_es.arb
└── .gitignore

1. 创建AR文件

首先,你需要创建 .arb 文件。这些文件用于存储各个语言的字符串。例如:

intl_en.arb

{
  "@@locale": "en",
  "appTitle": "My Flutter App",
  "welcomeMessage": "Welcome to my app!"
}

intl_fr.arb

{
  "@@locale": "fr",
  "appTitle": "Mon Application Flutter",
  "welcomeMessage": "Bienvenue dans mon application !"
}

intl_es.arb

{
  "@@locale": "es",
  "appTitle": "Mi Aplicación Flutter",
  "welcomeMessage": "¡Bienvenido a mi aplicación!"
}

2. 在Flutter项目中使用这些AR文件

在你的 main.dart 文件中,你可以通过 LocalizationsMaterialApp 来使用这些本地化字符串。

lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: [
        const Locale('en', ''), // English
        const Locale('fr', ''), // French
        const Locale('es', ''), // Spanish
      ],
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(Localizations.of(context, DemoLocalizations).appTitle),
      ),
      body: Center(
        child: Text(Localizations.of(context, DemoLocalizations).welcomeMessage),
      ),
    );
  }
}

class DemoLocalizations {
  static DemoLocalizations of(BuildContext context) {
    return Localizations.of<DemoLocalizations>(context, DemoLocalizations);
  }

  String get appTitle => Intl.message(
        'My Flutter App',
        name: 'appTitle',
        desc: 'The title of the app',
        args: [],
      );

  String get welcomeMessage => Intl.message(
        'Welcome to my app!',
        name: 'welcomeMessage',
        desc: 'A welcome message for users',
        args: [],
      );
}

3. 使用i18n_checker检查差异

确保你已经安装了 i18n_checker。然后运行以下命令来检查差异:

i18n_checker diff --arb-folder ./arb --reference-file ./arb/intl_en.arb

更多关于Flutter国际化检查插件i18n_checker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter国际化检查插件i18n_checker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用i18n_checker插件来进行国际化检查的代码示例。i18n_checker是一个帮助开发者检查Flutter应用中国际化文件(如arb文件)是否完整和一致的插件。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加i18n_checker依赖:

dependencies:
  flutter:
    sdk: flutter
  i18n_checker: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

2. 配置国际化文件

假设你已经有了基本的国际化配置,比如intl_en.arbintl_zh.arb文件,它们分别包含英文和中文的翻译。

intl_en.arb示例:

{
  "welcome_message": "Welcome!",
  "goodbye_message": "Goodbye!"
}

intl_zh.arb示例:

{
  "welcome_message": "欢迎!",
  "goodbye_message": "再见!"
}

3. 使用i18n_checker检查国际化文件

你可以创建一个Dart脚本来运行i18n_checker。在项目的根目录下创建一个名为check_i18n.dart的文件,并添加以下代码:

import 'package:i18n_checker/i18n_checker.dart';

void main() {
  // 定义arb文件的目录
  final String arbDir = 'lib/l10n'; // 请根据你的项目结构调整路径

  // 定义主语言文件(通常是英文)
  final String mainArbFile = '$arbDir/intl_en.arb';

  // 运行检查
  final List<String> issues = checkI18n(mainArbFile, arbDir);

  // 输出检查结果
  if (issues.isEmpty) {
    print('所有国际化文件检查通过,没有发现问题。');
  } else {
    print('发现以下国际化问题:');
    for (var issue in issues) {
      print(issue);
    }
  }
}

4. 运行检查脚本

你可以使用Dart命令行工具来运行这个脚本。打开终端,导航到项目根目录,然后运行:

dart check_i18n.dart

这将检查你的主语言文件(intl_en.arb)与其他语言文件(如intl_zh.arb)的一致性,并输出任何潜在的问题,比如缺失的翻译或不一致的键。

注意事项

  • 确保所有arb文件都遵循正确的JSON格式。
  • i18n_checker可能会根据插件版本的不同而有所变化,请参考其官方文档以获取最新的使用方法和配置选项。
  • 在实际项目中,你可能需要将检查脚本集成到CI/CD流程中,以便在每次代码提交时自动检查国际化文件。

这个示例展示了如何使用i18n_checker插件来自动化Flutter项目的国际化检查过程。希望这对你有所帮助!

回到顶部