LocalizableGoogleSheets 1.0.0

LocalizableGoogleSheets 1.0.0

Sam DeanKerr Marin Milleratom.oil 维护。



  • nmpsilva、deanWomborne、kerrmarin 和 atomoil

LocalizableGoogleSheets

管理 iOS 从 Google Sheets 进行翻译的工具

先决条件

  1. 安装Docker

  2. 创建一个包含称为 "Translations" 的工作表的 Google Sheets,其结构如下:

    key en pt
    key.in.dot.notation 英语中的文本 葡萄牙语中的文本
    • 您可以在标题中添加 - 及任何注释或说明,例如 en - Englishkey - 开发者密钥,非开发者请勿编辑
    • 如果想要添加其他列,请在标题的开始处添加 -,则它们将被忽略。
  3. 如果您希望支持复数,请添加第二个工作表,其结构如下:

    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} 原料
  4. 激活 Google Sheets API

    • 转到 Google APIs 控制台
    • 选择现有项目或创建一个新的项目。
    • 点击 启用 APIs 和服务,然后查找并启用 Google Sheets API 此链接可能因多种因素而跳转
    • 在仪表板上选择“凭证”,然后创建一个新的“OAuth客户端ID”凭证,类型为“其他”,并下载JSON文件。
    • 创建凭证后,您需要通过在同意界面中选择支持邮箱并点击保存来设置OAuth同意屏幕。
    • 将文件保存在安全的地方,并在下一步中使用它。
  5. 准备好Google表格的ID。

  • 您可以在Google文档的URL中找到此ID,例如,对于示例URLhttps://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.stringsLocalizable.stringsdict文件)
  • 首次运行脚本时,您需要

    • 将枚举(.swift)文件复制到repo中

注意事项

  • 键名“key.in.dot.notation”将生成名为“KeyInDotLocalizable”的枚举,具有值“notation”

  • 要将包含动态值的字符串进行本地化,请将动态值用 << >> 包围,例如 This is a <dynamicValue> 将生成一个具有名为 dynamicValue 的命名参数的可本地化键,您可以在应用程序中使用该键。

  • 可以为多个值添加相同的键,并通过在 plural 行中使用 zeroonetwofewmanyother - 这些是 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 文件。

如果没有文件要替换,复制将 不会 工作。这意味着您必须在第一次运行时手动复制文件。您还需要将相关文件添加到项目中。