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

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

translate_arb_cli 是一个用于将 Flutter 的 .arb 文件翻译成其他语言的命令行工具。它利用了强大的大型语言模型(LLMs)来完成翻译任务。

支持的API包括:

  • OpenAI
  • Google Gemini
  • Ollama

使用方法

单个文件翻译

要将一个 .arb 文件翻译成另一种语言,可以使用以下命令:

translate_arb_cli.dart ollama -f app_en.arb -t fr

上述命令会将 app_en.arb 文件翻译成法语(fr),并将结果输出到终端。如果你想将结果保存到一个新的文件中,可以将输出重定向到目标文件:

translate_arb_cli.dart ollama -f app_en.arb -t fr > app_fr.arb

批量翻译

如果你有多个语言需要翻译,并且希望一次性处理所有文件,可以使用以下脚本:

export GOOGLEAI_API_KEY=<YOUR_API_KEY>
for lang in {fr,es,de}; do
  translate_arb_cli gemini -f app_en.arb -t ${lang} > app_${lang}.arb
done

示例说明:

  1. export GOOGLEAI_API_KEY=<YOUR_API_KEY>
    设置你的 Google Gemini API 密钥,以便工具能够调用 API 进行翻译。

  2. for lang in {fr,es,de}
    定义需要翻译的语言列表,这里分别是法语(fr)、西班牙语(es)和德语(de)。

  3. translate_arb_cli gemini -f app_en.arb -t ${lang}
    调用 translate_arb_cli 工具,使用 Google Gemini API 将 app_en.arb 翻译为目标语言。

  4. > app_${lang}.arb
    将翻译后的 .arb 文件保存为 app_${lang}.arb

示例代码演示

假设我们有一个英语的 .arb 文件 app_en.arb,内容如下:

{
  "@[@locale](/user/locale)": "en",
  "helloWorld": "Hello World",
  "welcomeMessage": "Welcome to our application"
}

运行以下命令将其翻译成法语:

translate_arb_cli.dart ollama -f app_en.arb -t fr > app_fr.arb

翻译后生成的 app_fr.arb 文件内容如下:

{
  "@[@locale](/user/locale)": "fr",
  "helloWorld": "Bonjour le monde",
  "welcomeMessage": "Bienvenue dans notre application"
}

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

1 回复

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


translate_arb_cli 是一个用于 Flutter 国际化的工具,它可以帮助开发者将 ARB (Application Resource Bundle) 文件转换为 Flutter 可用的国际化资源文件。ARB 文件是 JSON 格式的文件,通常用于存储应用的本地化字符串。

使用步骤

  1. 安装 translate_arb_cli 插件

    首先,你需要在你的开发环境中安装 translate_arb_cli 插件。你可以通过 Dart 的包管理工具 pub 来安装:

    pub global activate translate_arb_cli
    
  2. 创建或准备 ARB 文件

    在你的 Flutter 项目目录下,创建一个 l10n 目录,并在其中创建 ARB 文件。例如,app_en.arbapp_zh.arb 分别用于存储英文和中文的本地化字符串。

    app_en.arb 示例内容:

    {
      "helloWorld": "Hello, World!",
      "@helloWorld": {
        "description": "The conventional newborn programmer greeting"
      }
    }
    

    app_zh.arb 示例内容:

    {
      "helloWorld": "你好,世界!",
      "@helloWorld": {
        "description": "传统的程序员问候语"
      }
    }
    
  3. 生成 Flutter 国际化文件

    使用 translate_arb_cli 将 ARB 文件转换为 Flutter 可用的 Dart 文件。在终端中运行以下命令:

    translate_arb_cli --input=l10n --output=lib/l10n
    

    这个命令会将 l10n 目录下的所有 ARB 文件转换为 Dart 文件,并输出到 lib/l10n 目录中。

  4. 在 Flutter 项目中使用生成的国际化文件

    生成的 Dart 文件会自动生成一个 AppLocalizations 类,你可以在 Flutter 项目中使用它来访问本地化字符串。

    import 'package:flutter/material.dart';
    import 'package:flutter_gen/gen_l10n/app_localizations.dart';
    
    class MyHomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(AppLocalizations.of(context)!.helloWorld),
          ),
          body: Center(
            child: Text(AppLocalizations.of(context)!.helloWorld),
          ),
        );
      }
    }
    
  5. 配置 Flutter 项目的国际化支持

    pubspec.yaml 文件中添加 flutter_localizations 依赖,并配置 generate: true 以启用自动生成国际化文件的功能。

    dependencies:
      flutter:
        sdk: flutter
      flutter_localizations:
        sdk: flutter
    
    flutter:
      generate: true
回到顶部