Starling Client CLI 使用的配置文件,其中包含要管理的资源的描述:要上传到国际化翻译平台的文件以及对应翻译的位置。
使用 Starling Client CLI 前,您应该预先生成配置文件,然后运行该工具,默认情况下,Starling Client CLI 会查找当前目录下名为 starling.yml 的配置文件。
创建配置文件,请执行以下命令:
$ starling client init
有效的 Starling Client CLI 配置文件应该包含以下结构,因此请确保所有需要的信息填写完成:
一个基础的配置文件需要包含以下内容:
"ak": "Access Key" "sk": "Secret Key" "basePath": "/project-base-path" "projectId": "ProjectId" # 下载设置同样可以直接在files中设置,这样只会对某一组文件生效 "download": { "namespaceId": "NamespaceId", "taskId": "TaskId" } "files": [ { "source": "/locale/zh/folder/*.xml", "translation": "/locale/%locale%/folder/%original_file_name%" } ]
根据上面的配置将源文件上传至国际化翻译平台:
$ starling client upload
从国际化翻译平台获取翻译结果,并按照配置存放:
$ starling client download
| 字段名称 | 必填 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| namespaceId | 是 | number[] | - | 项目空间Id,namespaceId与taskId只需配置一项,如果同时配置,以namespaceId为准 |
| taskId | 是 | number[] | - | 项目任务Id,taskId与namespaceId只需配置一项 |
| downloadAllSpaces | 否 | boolean | false | 下载全部空间下的文案,开启后会忽略 namespaceId 与 taskId 的字段配置 |
| replacePlaceholder | 否 | boolean | [string,string][] | false | 替换占位符,设置为true时,按照namespaceId对应空间配置的占位符进行替换;同时支持自定义占位符替换,如:[["%d","$d"]],会将翻译文案中 %d 替换为 $d |
| removeDeletedStrings | 否 | boolean | false | 从本地文件中删除此次下载中不包含的key |
| downloadOnlySource | 否 | boolean | false | 仅下载源文案 |
| targetLanguages | 否 | string[] | - | 下载翻译语言配置 |
| stringStatus | 否 | string[] | - | 语言状态,untranslated - 未翻译;translated - 已翻译;released - 已发布;unreleased - 未发布; |
| notAddingNewKeys | 否 | boolean | false | 国际化翻译平台添加的新key,不在本地文件同步新增 |
| keySuffix | 否 | string | - | 下载文案时,自定义 key 后缀 |
| keyPrefix | 否 | string | - | 下载文件时,自定义 key 前缀 |
| cleanUntranslatedStrings | 否 | boolean | false | 下载文件时,自动清理 translation 中未翻译 key,v1.1.4 版本以上可用。 |
同时,download支持在files每一项中进行配置,对单独文件或目录生效。
download: { "namespaceId": [62061], "taskId": [10920981], "replacePlaceholder": false, "removeDeletedStrings": false, "downloadOnlySource": false, "targetLanguages": [], "stringStatus": ["untranslated","translated","released","unreleased"] } # files中的配置 "files": [ { "source": "", "translation": "", "download": { # 与全局download配置项一致 } } ]
| 字段名称 | 必填 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| taskId | 否 | number | - | 本地新增key上传至平台时,需要添加到哪个任务 |
| uploadTranslation | 否 | boolean | - | 同时上传翻译文案 |
| targetLanguages | 否 | string[] | - | 上传翻译文案时,语言配置 |
同时,upload支持在files每一项中进行配置,对单独文件或目录生效。
"upload": { "taskId": "", "uploadTranslation": true, "targetLanguages": ["en","zh"] } # files 中的配置 "files": [ { "source": "", "translation": "", "upload": { # 与全局upload配置项一致 } } ]
上面提供的源文案和翻译文案配置示例中包含标准通配符(也称为通配符),可以更方便的处理多个文件。
以下是你可以使用的通配符:
*(星号)
表示文件或目录名称中的任何字符。如果您指定“*.xml”,它将包括所有xml文件,如“en.xml”、“strings.xml”以及其他任何以".xml"结尾的文件。
*(双星号)
递归匹配任何目录(包括子目录)。例如,您可以使用source: "/src/*/*.xml" 递归查找/src目录下所有的xml文件。
?(问号)
匹配任何单个字符。
更多配置请参考
Strling Client CLI 翻译文件配置对于以下占位符会自动替换:
| 占位符名称 | 描述 |
|---|---|
| %original_file_name% | 源文案文件名称+扩展名 |
| %file_name% | 源文案文件名称 |
| %file_extension% | 源文案文件扩展名 |
| %locale% | 语言名称 |
| %locale_with_underscore% | 语言名称 - 使用 _ 替代,例如:zh_CN |
| %android_code% | Android相关的“values-”目录,例如:values-zh |
| %osx_code% | osx相关的“.lproj”目录,例如:zh.lproj |
有时,有些文件和目录不需要在国际化翻译平台中进行翻译。这种情况下,可以将本地每个文件规则添加到项目的配置文件中。
"files":[ { "source": "/app/**/values/strings.xml", "translation": "/app/**/%android_code%/%original_file_name%", # 忽略internal目录下所有文件 "ignore": ['**/internal/**'], } ]