gtx-cli@2.3.0
概述
在 gtx-cli 2.3.0 中,我们更新了 translate 和 upload 命令的行为,并让翻译流程更加透明。
Translate
过去,translate 不仅会触发翻译,还会在后台执行一次性项目设置 (生成你在仪表板中看到的上下文和术语表) 。
在较小的项目中,这个过程很快;但在较大的代码库中,设置可能耗时过长并触发超时,让人误以为翻译失败了。
用户虽然会以为 translate 失败了,但实际上设置会异步完成,翻译也会生成,只是不会被下载,最终导致体验不完整且令人困惑。
设置
现在,设置是一个单独的步骤。我们对它进行了优化,以尽量降低超时的发生概率。
但考虑到设置仍有可能失败,翻译流程不再“依赖”设置完成。现在,整个流程大致如下:
- **上传:**上传文件并确认成功。
- **设置 (仅在需要时) :**启动设置任务并等待;如果失败或超时,就继续往下执行。
- **翻译:**根据你已上传的文件创建翻译任务。
如果设置能及时完成,那当然最好。即使失败或超时,我们也会继续,并告知你具体发生了什么。你仍然可以拿到翻译结果。
运行 npx gtx-cli translate 时,你会看到:
Starting translation...
Files to translate:
- your/file/path.mdx
- ...
Uploading files to General Translation API...
✔ Files uploaded successfully
Setting up project...
# 如果设置成功
Setup successfully completed.
# 如果设置超时
⚠ Setup timed out — proceeding without setup: Timed out while waiting for setup generation
# 如果设置失败
⚠ Setup failed — proceeding without setup: <error message>
# 无论如何,继续执行翻译
Creating 12 translation(s)
[0/12] translations completed
your/file/path.mdx [es]通过这项更改,我们现在可以保证:即使极少数情况下设置失败,你的翻译仍然会生成。
我们还认为,这能让你更清楚地了解我们如何以及在何处生成会影响翻译结果的内容;同时,也让新增设置步骤变得毫无负担,因为这些步骤绝不会阻止翻译继续进行。
上传
我们还让 upload 更灵活了。早期版本默认你总是会同时上传源文件及其翻译,这并不适用于所有工作流。现在你可以:
- 仅上传源文件 (暂时不含翻译) 。
- 同时上传源文件和翻译。
我们仍会根据你的仓库结构和配置自动识别翻译。上传后,你会立即在你的仪表板中看到这些文件。
如果这是你的 gt.config.json:
{
"defaultLocale": "en",
"locales": ["es", "fr"],
"files": {
"json": { "include": ["src/i18n/en/**/*.json"] }
}
}执行 npx gtx-cli upload:
# 仅源文件(未找到本地翻译):
Starting upload...
Files to upload:
- src/i18n/en/common.json -> es, fr
...
Uploading 1 file(s) to General Translation...
✔ Files uploaded successfully
Done!
# 在您的仪表板中,您将看到:
# src/i18n/en/common.json
# 暂无对应的翻译。如果检测到现有的本地翻译:
Starting upload...
Files to upload:
- src/i18n/en/common.json -> es, fr
Uploading 3 file(s) to General Translation...
✔ Files uploaded successfully
Done!
# 在您的仪表板中,您将看到:
# src/i18n/en/common.json
# 以及区域设置下拉菜单中对应的西班牙语和法语翻译版本。如果某个区域设置的翻译文件缺失,我们会上传源文本,并跳过该缺失的翻译。
如果你有本地翻译,但只想上传源文本,请在运行 upload 之前先从 gt.config.json 中移除 locales:
{
"defaultLocale": "en",
"locales": [],
"files": {
"json": { "include": ["src/i18n/en/**/*.json"] }
}
}上传会覆盖现有翻译
请注意: 运行
upload时,我们检测到并上传的某个文件/区域设置对应的任何已翻译文件,都会覆盖当前该文件/区域设置下已存储的内容。
- 如果只想上传源文件,请在执行
upload前先从gt.config.json中移除目标 locales。- 如果你需要先审核更改,请使用单独的项目,或在上传前先导出当前翻译。
- 缺失的翻译会被跳过;已有的翻译会被覆盖。