Flutter多语言翻译插件arb_translator的使用

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

好的,以下是关于Flutter多语言翻译插件arb_translator的完整示例代码:

# 添加到命令行中
flutter packages pub global activate arb_translator

# 查看可用选项
flutter packages pub run arb_translator:translate --help

# 示例:将源文件 `source_en.arb` 翻译成中文和英文,并保存在当前目录下
pub run arb_translator:translate --source_arb path/to/source_en.arb --api_key path/to/api_key_file --language_codes zh,en

# 示例:将源文件 `source_en.arb` 翻译成中文、英文和印地语,并保存在指定目录 `/path/to/my/custom/output_directory/`
pub run arb_translator:translate --source_arb path/to/source_en.arb --api_key path/to/api_key_file --language_codes hi,en,zh --output_directory /path/to/my/custom/output_directory/

# 示例:使用自定义文件名 `justkawal_` 保存翻译后的文件
pub run arb_translator:translate --source_arb path/to/source_en.arb --api_key path/to/api_key_file --language_codes hi,en,zh --output_directory /path/to/my/custom/output_directory/ --output_file_name justkawal_

解释:

  1. 添加到命令行:

    flutter packages pub global activate arb_translator
    

    这一步用于全局安装arb_translator插件。

  2. 查看可用选项:

    flutter packages pub run arb_translator:translate --help
    

    运行此命令可以查看arb_translator插件的所有可用选项及其描述。

  3. 示例翻译:

    • source_en.arb文件翻译成中文和英文,并保存在当前目录下:
      pub run arb_translator:translate --source_arb path/to/source_en.arb --api_key path/to/api_key_file --language_codes zh,en
      
    • source_en.arb文件翻译成中文、英文和印地语,并保存在指定目录/path/to/my/custom/output_directory/下:
      pub run arb_translator:translate --source_arb path/to/source_en.arb --api_key path/to/api_key_file --language_codes hi,en,zh --output_directory /path/to/my/custom/output_directory/
      
    • 使用自定义文件名justkawal_保存翻译后的文件:
      pub run arb_translator:translate --source_arb path/to/source_en.arb --api_key path/to/api_key_file --language_codes hi,en,zh --output_directory /path/to/my/custom/output_directory/ --output_file_name justkawal_
      

更多关于Flutter多语言翻译插件arb_translator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter多语言翻译插件arb_translator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用arb_translator插件来实现多语言翻译的示例代码。arb_translator是一个辅助工具,用于生成和管理Flutter的ARB(Application Resource Bundle)文件,这些文件用于存储应用的本地化字符串。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加arb_translator依赖:

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

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

2. 创建ARB模板文件

在你的项目根目录下创建一个ARB模板文件,比如intl_en.arb,内容如下:

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

3. 使用arb_translator生成其他语言文件

虽然arb_translator插件本身不直接提供命令行工具,但你可以使用它提供的API来程序化地生成ARB文件。以下是一个示例脚本,展示如何使用arb_translator来加载和转换ARB文件:

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

void main() {
  // 读取ARB模板文件
  File templateFile = File('intl_en.arb');
  String templateContent = templateFile.readAsStringSync();

  // 解析ARB模板
  ArbFile arbFile = ArbFile.parse(templateContent);

  // 创建翻译映射
  Map<String, String> translations = {
    'welcome_message': 'Bienvenue sur notre application!',
    'goodbye_message': 'Au revoir!',
  };

  // 应用翻译到ARB文件
  arbFile.applyTranslations(translations);

  // 保存翻译后的ARB文件
  File translatedFile = File('intl_fr.arb');
  translatedFile.writeAsStringSync(arbFile.toString());

  print('Translation to French completed!');
}

这个脚本读取了一个英语模板ARB文件,应用了一些法语翻译,然后将翻译后的内容保存到一个新的ARB文件中。你可以根据需要调整这个脚本以支持更多的语言。

4. 在Flutter应用中使用生成的ARB文件

接下来,你需要在Flutter应用中加载这些ARB文件。首先,确保你的pubspec.yaml文件中包含了flutter_localizations依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter

然后,在你的应用中设置本地化支持:

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'generated/l10n.dart'; // 注意这个路径可能会根据你的设置有所不同

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      localizationsDelegates: [
        S.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.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),
      ),
    );
  }
}

确保你已经运行了flutter gen-l10n命令来生成l10n.dart文件,并且你的ARB文件已经被正确地包含在了flutter_gen目录下。

5. 运行应用

现在,你可以运行你的Flutter应用,并根据设备的语言设置来查看不同的本地化字符串。

这个示例展示了如何使用arb_translator插件来帮助管理ARB文件,并在Flutter应用中实现多语言支持。注意,实际应用中你可能需要更复杂的翻译管理和错误处理逻辑。

回到顶部