LocalizableGoogleSheets
管理 iOS 从 Google Sheets 进行翻译的工具
先决条件
-
安装Docker
-
创建一个包含称为 "Translations" 的工作表的 Google Sheets,其结构如下:
key en pt key.in.dot.notation 英语中的文本 葡萄牙语中的文本 - 您可以在标题中添加
-
及任何注释或说明,例如en - English
或key - 开发者密钥,非开发者请勿编辑
- 如果想要添加其他列,请在标题的开始处添加
-
,则它们将被忽略。
- 您可以在标题中添加
-
如果您希望支持复数,请添加第二个工作表,其结构如下:
VARIABLE EXAMPLE LANG ZERO ONE TWO FEW MANY OTHER ${ice_cream_toppings} 你的冰淇淋上有很多 ${ice_cream_toppings} en 无原料 一点原料 两处原料 少量原料 很多原料 ${ice_cream_toppings} 原料 ${ice_cream_toppings} 你的冰淇淋上有很多 ${ice_cream_toppings} pt 零原料 一个原料 两个原料 少量原料 很多原料 ${ice_cream_toppings} 原料 - 请参阅 Apple 本地化文档 和 Unicode 复数规则 了解关于如何以及何时使用零、一、二、多数、少数和其他列的更多信息(只有其他是必需的)。
-
激活 Google Sheets API
- 转到 Google APIs 控制台
- 选择现有项目或创建一个新的项目。
- 点击 启用 APIs 和服务,然后查找并启用 Google Sheets API 此链接可能因多种因素而跳转。
- 在仪表板上选择“凭证”,然后创建一个新的“OAuth客户端ID”凭证,类型为“其他”,并下载JSON文件。
- 创建凭证后,您需要通过在同意界面中选择支持邮箱并点击保存来设置OAuth同意屏幕。
- 将文件保存在安全的地方,并在下一步中使用它。
-
准备好Google表格的ID。
- 您可以在Google文档的URL中找到此ID,例如,对于示例URL
https://docs.google.com/spreadsheets/d/1RT1c2zcTMk_dR3qYVq9GKXJthczACCJbqulVqbQrFxI/
,那么ID就是1RT1c2zcTMk_dR3qYVq9GKXJthczACCJbqulVqbQrFxI
。
快速开始
构建Docker容器
bin/setup.sh
运行本地化bash脚本
bin/localisation.sh -s 表格ID -p Xcode项目路径 -c 凭证JSON文件路径
这将生成代码并将文件复制到XCode项目中。
首次运行
-
在运行脚本之前
- 在Xcode项目中启用本地化(即创建
Localizable.strings
和Localizable.stringsdict
文件)
- 在Xcode项目中启用本地化(即创建
-
首次运行脚本时,您需要
- 将枚举(
.swift
)文件复制到repo中
- 将枚举(
注意事项
-
键名“key.in.dot.notation”将生成名为“KeyInDotLocalizable”的枚举,具有值“notation”
-
要将包含动态值的字符串进行本地化,请将动态值用
<< >>
包围,例如This is a <dynamicValue>
将生成一个具有名为dynamicValue
的命名参数的可本地化键,您可以在应用程序中使用该键。 -
可以为多个值添加相同的键,并通过在
plural
行中使用zero
、one
、two
、few
、many
或other
- 这些是 Swift 支持的复数形式 - 来生成并将其添加到Localizable.stringsdict
中。注意:这里可能只有一个动态值,不支持同一键的多个复数形式。
防止手动编辑生成的文件
脚本会生成一个 .checksum.localizablegooglesheets
文件,其中包含每个 Localizable.strings
文件的 sha1 校验和,以及一个 .validate_checksum.sh
文件,该文件将 .checksum.localizablegooglesheets
文件中的校验和与当前 Localizable.strings
文件的 shasum
进行验证。这两个文件将通过脚本复制到提供的 XCode 项目路径根目录。
注意:如果您将这两个文件移动到另一个目录,脚本将覆盖它们而不是复制到根文件夹;如果您这样做,请务必更新 Run Script
路径。
如果任意的 Localizable.strings
文件已被手动编辑,验证器将失败构建
要使用此验证,请添加一个包含以下行的新的 Build Phase - Run Script
"${PROJECT_DIR}/.validate_checksum.sh"
就是这样!
概要
localisation - generate swift enums, `localizable.strings`, `localizable.stringsdict` files, and a CSV snapshot from a Google Sheet
./bin/localisation -s <sheet_id> -p <project_dir> -c <google_credentials_json>
MANDATORY ARGUMENTS
-s <id> id of google sheet to process
-p <path> path to project dir to automatically update files
-c <path> path to the google cloud credentials
OPTIONAL ARGUMENTS
-b set this flag to bypass the csv generation and use the CSV that's in the specified dir
-o <path> path to folder to generate code into (defaults to output folder in project)
-h display this help text
示例
要运行示例项目,首先克隆存储库,然后在 Example 目录中运行 pod install
。
要求
安装
LocalizableSheets 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile 中:
pod 'LocalizableGoogleSheets'
如何工作
本地化脚本被封装在一个方便的 dockerized bash 脚本中,便于使用,但它是用 Python 3.7 编写的。
它首先从 Google Sheet 生成 CSV 快照,然后将其复制到项目目录中。如果指定了 -b
选项,则跳过生成,脚本将在项目目录中搜索 CSV。
生成一个包含键的枚举并复制到每个项目的相应目录中。这是通过搜索前一个枚举的位置并替换它来实现的。
为每个本地化生成一个 localizable.strings
文件,并将其复制到项目目录中,替换现有的文件。同样适用于 Localizable.stringsdict
文件。
如果没有文件要替换,复制将 不会 工作。这意味着您必须在第一次运行时手动复制文件。您还需要将相关文件添加到项目中。