Flutter资源合并插件arb_merger的使用

Flutter资源合并插件arb_merger的使用

arb_merger

arb_merger 是一个用于将不同语言的 ARB 文件合并成单个 ARB 文件的插件。

Getting Started

1 创建支持的语言目录

  • 支持的语言遵循 Locale.languageCodes。例如:

    ├── assets │ └── l10n │ ├── en │ ├── ja

2 创建 ARB 文件

  • 你可以根据需要创建 ARB 文件(最少1个,最多不限)。例如:

    ├── assets │ └── l10n │ ├── en │ │ ├── noun.arb │ │ └── verb.arb │ ├── ja │ │ ├── noun.arb │ │ └── verb.arb

3 添加包

  • 将此包添加为 dev_dependencies
    dev_dependencies:
      arb_merger:
    

4 定义设置

  • pubspec.yaml 中定义 arb_merger 包设置。
    flutter:
    .
    .
    ,
    arb_merger:
      supported_locales: ["ja", "en"]
      input_filepath: "assets/l10n"
      output_filepath: "assets/l10n"
    
  • 表格说明了各个参数的含义:
    名称 类型 是否必填 描述
    supported_locales 列表 必填 支持的语言。
    input_filepath 字符串 必填 输入文件路径。
    output_filepath 字符串 ARB 文件生成在此。

5 运行包

  • 确保当前工作目录是项目根目录。根据项目情况,运行以下命令之一:
    dart run arb_merger
    
  • 或者
    flutter pub run arb_merger
    
  • ARB 文件将在 output_filepath 生成。
    • 合并后的 ARB 文件将以“支持的语言.arb”命名。例如:
      ├── assets
      │   └── l10n
      │       ├── en.arb:
      │       │   {
      │       │       "@@locale": "en",
      │       │       "open": "open",
      │       │       "shop": "shop",
      │       │   }
      │       └── ja.arb:
      │           {
      │               "@@locale": "ja",
      │               "open": "開く",
      │               "shop": "ショップ",
      │           }
      

更多关于Flutter资源合并插件arb_merger的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter资源合并插件arb_merger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter开发中,arb_merger 是一个用于合并本地化资源文件(ARB 文件)的插件。ARB 文件是 Flutter 中用于存储应用本地化字符串的标准格式。当你需要在多个 ARB 文件中管理同一个语言的字符串时,arb_merger 可以帮助你合并这些文件,避免手动合并带来的错误和不便。

以下是如何在 Flutter 项目中使用 arb_merger 插件的一个代码案例:

1. 添加依赖

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

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

然后运行 flutter pub get 来获取依赖。

2. 准备 ARB 文件

假设你有两个 ARB 文件需要合并:

  • strings_en_US_base.arb
  • strings_en_US_overrides.arb

strings_en_US_base.arb 内容:

{
  "welcome_message": "Welcome to our app!",
  "goodbye_message": "Goodbye!"
}

strings_en_US_overrides.arb 内容:

{
  "welcome_message": "Hello and welcome to our app!",
  "new_message": "This is a new message."
}

3. 使用 arb_merger 合并 ARB 文件

创建一个 Dart 脚本来使用 arb_merger 合并这些文件。例如,创建一个名为 merge_arb.dart 的文件:

import 'package:arb_merger/arb_merger.dart';
import 'dart:io';

void main() {
  // 读取ARB文件内容
  File baseFile = File('path/to/strings_en_US_base.arb');
  File overrideFile = File('path/to/strings_en_US_overrides.arb');
  String baseContent = baseFile.readAsStringSync();
  String overrideContent = overrideFile.readAsStringSync();

  // 解析ARB文件
  Map<String, dynamic> baseArb = ArbParser.parse(baseContent);
  Map<String, dynamic> overrideArb = ArbParser.parse(overrideContent);

  // 合并ARB文件
  Map<String, dynamic> mergedArb = ArbMerger.merge(baseArb, overrideArb);

  // 将合并后的ARB内容写入新文件
  File mergedFile = File('path/to/strings_en_US_merged.arb');
  mergedFile.writeAsStringSync(ArbWriter.writeToString(mergedArb));

  print('ARB files have been successfully merged!');
}

注意:你需要将 'path/to/' 替换为实际的文件路径。

4. 运行合并脚本

使用 Dart 命令行工具运行你创建的合并脚本:

dart merge_arb.dart

5. 查看合并结果

合并后的 strings_en_US_merged.arb 文件内容应该如下:

{
  "welcome_message": "Hello and welcome to our app!",
  "goodbye_message": "Goodbye!",
  "new_message": "This is a new message."
}

如你所见,welcome_messagestrings_en_US_overrides.arb 中的值覆盖了,而 goodbye_messagenew_message 则被保留。

通过这种方法,你可以自动化地管理和合并 Flutter 应用中的本地化资源文件,提高开发效率。

回到顶部