简体中文
利用 ChatGPT 进行高效的国际化
本文分享了我们使用 ChatGPT API 高效支持产品国际化(即 i18n)的经验,提供了有关集成 API,优化翻译结果和优化指令的提示,以获得更好的结果。
在当今的全球市场中,产品的国际化(即 i18n)是必不可少的。通过支持多种语言,产品可以吸引和服务全球的用户群,增强用户体验,提高用户忠诚度,增加市场份额。然而,国际化支持往往伴随高昂的成本和复杂的维护:
- 建立语言支持需要专业的团队和选择合适的合作伙伴,这需要时间和精力。
- 传统的翻译流程速度慢且需要手动干预,使其难以跟上产品的迭代。
在本文中,我们将分享 Logto 团队利用 ChatGPT 及其 API 高效支持我们产品国际化同时尽量降低成本的经验。
我们如何处理国际化
在集成了 ChatGPT API 之前,我们遵循一个传统的翻译流程来支持我们产品的国际化。这个流程是这样的:
- 对于每种语言,我们创建一个包含多个 TypeScript 文件的翻译文件夹。每个文件包含一个 TypeScript 对象,对象中的键值对表示短语键和它们的翻译。
- 要添加一个新的短语,我们手动为每种语言的翻译文件添加一个新的键值对。
- 在每种语言的根目录中,我们创建了一个 index.ts 文件,该文件导出了该语言的所有翻译文件。
下面是 zh-HK 语言的 index.ts 文件的一个例子:
为在 UI 中显示一个短语,我们使用了一个函数,该函数基于当前的环境获取翻译。我们使用点注释方式访问嵌套的对象或键。
例如,如果用户正在使用英文浏览 器:
面临的挑战
我们在这个方法中遇到了两个主要的挑战:
- 随着语言和短语的数量增加,维护翻译文件变得困难。手动将新的短语添加到每种语言都耗时并且容易出错。
- 翻译过程不可靠。没有专门的翻译团队,我们依赖社区用户进行大部分翻译。他们做得非常好,但难免会出现翻译不完整和不一致的情况。
引入 ChatGPT
随着 ChatGPT 的流行,我们发现了一个有趣的用例。无意中,我们将一个 TypeScript 短语对象复制到 ChatGPT 中,发现它能够在保持代码结构的同时翻译代码段。这个发现让我们很兴奋。
例如:
然后的结果:
这是非常了不起的。在现实世界中,我们也有历史文件中包含一些用 // UNTRANSLATED
标记的未翻译的短语:
ChatGPT 甚至能够“部分地”翻译代码段,消除了最后的障碍。然而,它还远远不够完美。让我们来看看我们遇到的问题。