Flutter国际化资源文件转换插件arb_tsv的使用

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

Flutter国际化资源文件转换插件arb_tsv的使用

该插件提供了将arb文件转换为tsv文件的功能,并支持合并arb文件,以方便国际化。arb文件是由Dart的intl_translation包生成的,而tsv文件适用于像Google表格这样的电子表格应用。

将arb转换为tsv

当你有一些需要翻译的arb文件,但用文本编辑器处理不方便时,可以将arb文件转换为tsv文件,然后使用电子表格应用进行翻译。

使用方法

Usage: arb2tsv [path of arb file or directory containing arb files] [options]
-o, --output-dir=<输出目录>    设置生成的tsv文件的输出目录。如果给定的目录不存在,则创建该目录(默认为".")

示例

假设你有一个名为messages.arb的文件,你可以使用以下命令将其转换为tsv文件:

arb2tsv ./messages.arb -o ./output

这将会在当前目录下的output文件夹中生成一个tsv文件。

将tsv转换为arb

在使用电子表格应用完成翻译后,导出tsv文件并将其转换为arb文件,以便在你的应用中使用。

使用方法

Usage: tsv2arb [path of tsv file or directory containing tsv files] [options]
-o, --output-dir=<输出目录>    设置生成的arb文件的输出目录。如果给定的目录不存在,则创建该目录(默认为".")
-l, --locale=<翻译中的语言环境>   将语言环境追加到文件名的后缀。例如:translate_en_US.arb

示例

假设你有一个名为messages.tsv的文件,你可以使用以下命令将其转换为arb文件:

tsv2arb ./messages.tsv -o ./output -l en_US

这将会在当前目录下的output文件夹中生成一个名为translate_en_US.arb的文件。

合并arb文件

如果你有多个目标arb文件,并且希望使用一个源arb文件来合并它们而不覆盖,而是添加新的消息,可以使用以下命令:

使用方法

Usage: merge_arbs [source arb file path] [merge target arb file paths]

示例

假设你有两个目标arb文件messages_en.arbmessages_zh.arb,并且你有一个源arb文件messages_source.arb,你可以使用以下命令来合并这些文件:

merge_arbs ./messages_source.arb ./messages_en.arb ./messages_zh.arb

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

1 回复

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


在Flutter项目中,国际化(i18n)是处理多语言支持的关键部分。arb_tsv 是一个工具,用于在ARB(Application Resource Bundle)文件和TSV(Tab-Separated Values)文件之间进行转换,这对于管理和编辑翻译内容非常有用。

虽然arb_tsv本身不是一个官方Flutter插件,但假设你有一个命令行工具或脚本能够执行这种转换,你可以在Flutter项目中集成并使用它。以下是如何在Flutter项目中设置和使用这种转换的一个示例流程。

1. 准备ARB文件

首先,你需要有一个ARB文件,例如messages_en.arb,内容如下:

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

2. 使用命令行工具转换ARB到TSV

假设你有一个命令行工具arb2tsv可以将ARB文件转换为TSV文件。你可以在命令行中运行如下命令:

arb2tsv messages_en.arb messages_en.tsv

这个命令会生成一个messages_en.tsv文件,内容可能如下:

key	en
welcome_message	Welcome to our app!
goodbye_message	Goodbye!

3. 编辑TSV文件

现在,你可以轻松地编辑messages_en.tsv文件来添加或修改翻译。例如,添加法语翻译:

key	en	fr
welcome_message	Welcome to our app!	Bienvenue dans notre application!
goodbye_message	Goodbye!	Au revoir!

4. 使用命令行工具转换TSV回ARB

完成编辑后,你可以使用另一个命令行工具tsv2arb将TSV文件转换回ARB文件。运行如下命令:

tsv2arb messages_en.tsv messages_fr.arb --locale fr

这个命令会生成一个messages_fr.arb文件,内容如下:

{
  "welcome_message": "Bienvenue dans notre application!",
  "goodbye_message": "Au revoir!"
}

5. 在Flutter项目中使用ARB文件

最后,将生成的ARB文件放入Flutter项目的lib/l10n目录下,并在pubspec.yaml文件中配置国际化支持:

flutter:
  generate: true
  localizations:
    - messages_en.arb
    - messages_fr.arb

然后,使用flutter gen-l10n命令生成本地化代码,并在你的Flutter应用中使用LocalizationsS.of(context)来访问翻译字符串。

示例代码

在你的Flutter应用中,你可以这样使用国际化字符串:

import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:your_app/generated/l10n.dart'; // 自动生成的本地化文件

void main() {
  runApp(
    MaterialApp(
      localizationsDelegates: [
        S.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      supportedLocales: S.delegate.supportedLocales,
      home: MyHomePage(),
    ),
  );
}

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

注意

  • 实际的arb2tsvtsv2arb工具可能需要你自己实现,或者使用社区提供的工具。
  • 确保你的ARB文件和TSV文件遵循正确的格式。
  • 使用flutter gen-l10n命令时,确保你的项目配置正确,并且intl_translation工具已经安装。

通过这种方式,你可以有效地管理和编辑Flutter项目的国际化资源文件。

回到顶部