Flutter Google Sheets转换ARB插件gsheet_to_arb的使用

Flutter Google Sheets转换ARB插件gsheet_to_arb的使用

pub package

使用方法

从Google表格导入翻译文件

  1. 设置插件配置yaml文件(只需执行一次)。
  2. 从Google表格导入ARB和源文件:
pub run gsheet_to_arb:import

或者对于Flutter项目:

flutter pub run gsheet_to_arb:import
Google Sheets示例

设置

1. 基于模板创建翻译电子表格

2. 创建Google Sheets API凭据

通过客户端或服务器认证创建Google Sheets API凭据

3. 配置您的Dart项目

  1. pubspec.yaml中添加gsheet_to_arb开发依赖:
dev_dependencies:
  gsheet_to_arb: ^0.1.8
  1. 更新依赖项:

    pub update
  2. 创建插件配置:

pub run gsheet_to_arb:import --create-config
  • 这将在pubspec.yaml文件中添加插件配置,并为Google Sheets凭据创建gsheet_to_arb.yaml认证文件。
  1. 更新在pubspec.yaml中创建的插件配置,例如:
gsheet_to_arb: 
    arb_file_prefix: 'intl' # 生成的ARB文件的后缀,例如intl_en.arb
    localization_file_name: 'l10n' # 生成的Dart文件名,例如L10n.dart
    output_directory: 'lib/l10n' # 所有Dart和ARB数据存储的位置
    add_context_prefix: false # 是否为键添加类别前缀,例如common_app_title
    gsheet: 
        auth_file: './gsheet_to_arb.yaml' # 包含Google Sheets认证配置的文件
        category_prefix: "# " 
        document_id: 'TODO'
        sheet_id: '0'
        columns: # 可选设置,未使用时将回退到默认值
            key: 0 # 翻译键所在的列,默认为0
            description: 1 # 描述所在的列,默认为1
            first_language_key: 2 # 第一个语言列,假设所有后续列也包含语言翻译,默认为2
        rows: # 可选设置,未使用时将回退到默认值
            header_row: 0 # 包含每列标题的行,默认为0
            first_translation_row: 1 # 包含翻译的第一行,默认为1
  1. 更新在gsheet_to_arb.yaml中创建的Google Sheets认证配置。
    • 添加客户端凭据:
oauth_client_id: 
    client_id: "TODO"
    client_secret: "TODO"
  • 或者添加服务账户凭据:
service_account_key: 
    client_id: "TODO"
    client_email: "TODO"
    private_key: "TODO"

电子表格格式

  • 第一行保留用于标题部分,包含相关列的标签。
  • 其他行:
    • 如果行以category_prefix值(默认为#)开头,则所有后续行将使用该类别作为上下文(参见:ARB上下文和add_context_prefix参数)。
    • 空行被忽略。
    • 键列为空的行被忽略。

  • 第一列key包含键名称或类别前缀。
  • 第二列description包含项目描述。
  • 所有后续列(语言代码,例如enpl等)包含翻译文件。
  • 将从第一个语言列开始解析,直到最后一个列或第一个空列,以先出现者为准。

占位符

  • 简单地在翻译中添加{placeholder_name}

复数

  • 复数由键元数据识别 - 如果键以以下之一结尾:
    • zero, one, two, few, many, other - 则被视为复数。
  • 复数使用特殊占位符{count}来标记用作翻译参数的值。

示例代码

以下是完整的示例代码,展示如何使用生成的Dart类:

import 'package:intl/intl.dart';

import 'l10n/_messages_all.dart';
import 'l10n/l10n.dart';

void main() async {
  print('MAIN');

  // 设置默认区域为波兰语
  Intl.defaultLocale = 'pl';
  await initializeMessages(Intl.defaultLocale);

  // 初始化本地化类
  final l10n = L10n();

  // 打印翻译结果
  print(l10n.title); // 输出标题
  print(l10n.login); // 输出登录文本
  print(l10n.singleArgument('arg')); // 输出单个参数的翻译
  print(l10n.twoArguments('arg1', 'arg2')); // 输出两个参数的翻译

  // 测试复数
  print(l10n.numberOfSongsAvailable(0)); // 输出歌曲数量为0的翻译
  print(l10n.numberOfSongsAvailable(1)); // 输出歌曲数量为1的翻译
  print(l10n.numberOfSongsAvailable(2)); // 输出歌曲数量为2的翻译
  print(l10n.numberOfSongsAvailable(5)); // 输出歌曲数量为5的翻译
  print(l10n.numberOfSongsAvailable(10)); // 输出歌曲数量为10的翻译
}
1 回复

更多关于Flutter Google Sheets转换ARB插件gsheet_to_arb的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


gsheet_to_arb 是一个用于将 Google Sheets 转换为 ARB(Application Resource Bundle)文件的 Flutter 插件。ARB 文件是 Flutter 国际化(i18n)中常用的一种 JSON 格式,用于存储应用程序的本地化字符串。

以下是使用 gsheet_to_arb 插件的步骤:

1. 安装 gsheet_to_arb 插件

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

dependencies:
  gsheet_to_arb: ^1.0.0

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

2. 准备 Google Sheets

在 Google Sheets 中创建一个表格,表格的每一列代表一种语言,每一行代表一个键值对。例如:

Key en es fr
hello Hello Hola Bonjour
goodbye Goodbye Adiós Au revoir

3. 获取 Google Sheets 的共享链接

将 Google Sheets 设置为“任何人可以查看”,然后获取其共享链接。链接的格式通常为:

https://docs.google.com/spreadsheets/d/<SPREADSHEET_ID>/edit#gid=<SHEET_ID>

4. 使用 gsheet_to_arb 插件

在你的 Dart 代码中,使用 gsheet_to_arb 插件将 Google Sheets 转换为 ARB 文件。以下是一个示例代码:

import 'package:gsheet_to_arb/gsheet_to_arb.dart';

void main() async {
  final spreadsheetId = '<SPREADSHEET_ID>';
  final sheetId = '<SHEET_ID>';
  final outputDirectory = 'lib/l10n';

  final converter = GSheetToArb(
    spreadsheetId: spreadsheetId,
    sheetId: sheetId,
    outputDirectory: outputDirectory,
  );

  await converter.convert();
}

5. 运行代码

运行你的 Dart 代码,gsheet_to_arb 插件将会从 Google Sheets 中读取数据,并将其转换为 ARB 文件,存储在指定的 outputDirectory 中。

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

生成的 ARB 文件可以直接用于 Flutter 的国际化支持。你可以使用 flutter_localizationsintl 包来加载和使用这些本地化字符串。

7. 更新 pubspec.yaml 文件

确保你的 pubspec.yaml 文件中包含以下依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  intl: ^0.17.0

8. 配置 l10n.yaml 文件

在项目根目录下创建一个 l10n.yaml 文件,配置 ARB 文件的位置:

arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart

9. 生成本地化代码

运行以下命令生成本地化代码:

flutter pub run intl_utils:generate

10. 在应用中使用本地化字符串

在你的 Flutter 应用中使用生成的本地化字符串:

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: AppLocalizations.localizationsDelegates,
      supportedLocales: AppLocalizations.supportedLocales,
      home: Scaffold(
        appBar: AppBar(
          title: Text(AppLocalizations.of(context)!.hello),
        ),
        body: Center(
          child: Text(AppLocalizations.of(context)!.goodbye),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!