如何发布译文,让我的应用用上它们?
发布是让译文对你的应用真正生效的一步。在发布之前,你写下的一切只存在于面板中。
中间既没有构建,也没有部署。
会发生什么
Code
Publish
→ 译文被写入 CDN 源站
→ 已变更的部分清除缓存
→ 你的应用在下一次请求时取到新版本具体操作
- 打开你的项目
- 点击 Publish
- 读一读它列出的内容——这才是重点
- 确认
弹窗会准确列出即将上线的内容,并做了分组,让你能亲眼看到,而不是仅凭一个数字。
确认之前先看清列表
草稿也会一并发布。 这一点常让人意外,所以直说:发布操作同时包含已批准的译文和草稿。API 自身的默认行为是仅发布已批准的;面板刻意放宽了这一点,好让弹窗列出的内容就是真正发出去的内容——显示“12 条就绪”却只发布 9 条会更糟。
由此可知:草稿并不意味着“不能上线”,而是“还没有人为它背书”。如果你需要审批成为真正的关卡,请在发布前完成审校,而不要指望状态本身拦住内容。参见如何审校并批准译文?。
访客多久能看到
CDN 以一分钟缓存提供译文,发布会清除已变更的部分——所以通常的答案是几秒,而一分钟是上限。
可能额外引入延迟的层:
| 层 | 延迟 |
|---|---|
| CDN 边缘 | 发布时清除;否则 max-age=60 |
| SDK 内存缓存 | 最长为其刷新间隔 |
| Next.js ISR | 你设置的 revalidate 值 |
如果你的应用在构建期渲染译文,或者把它们缓存一小时,那个数字来自你,而不是我们。我已经发布,但应用仍显示旧译文会带你找出是哪一层在拖后腿。
使用 CLI #
Bash
better-i18n publish:status # 现在发布会上线哪些内容
better-i18n publish # 执行发布在流水线中先运行 publish:status 很值得——对于“还有没有待发布的内容”,它给出的是诚实的答案。
没有回滚
发布不做版本管理,也没有可恢复的快照。修复一次错误发布,就是修改译文后重新发布——大约一分钟,因此很少构成危机;但这也意味着审校发生在按钮之前,而不是之后。
每一次发布都会记录为一个可查看的任务:
Bash
better-i18n syncs list
better-i18n syncs get <syncId>
Better I18N