如新闻中所公布的那样,我们已经为Liberogic的网站提供了多语言支持!
目前我们只支持 6 种语言,但说实话,做好一种语言后其他的都差不多。如果想要实现 Google 那样的全语言支持,技术上也是可行的。
从"首先尝试翻译"开始的实验
起点很简单。
"既然 Web 无障碍支持改善了,来自国外的访问也在增加,那不如试试翻译一下?"
就是这么轻松的想法。
不过,认真做的话其实意外地复杂。翻译 API、缓存、构建、成本、缓存更新……诸如此类,想象之外的"复杂的幕后"问题确实存在。
因此,这次的多语言化采用了Google Cloud Translation API,并采用在构建时自动翻译的机制。
大致流程是这样的
构建时会运行 scripts/translate-html-cache.mjs。
如果缓存(translate-cache.json)中已有翻译过的文本,就使用这些文本;否则调用 Google 翻译 API 进行翻译。
新的翻译会被追加到缓存中,下次可以重新使用。但由于自动部署环境中缓存无法生效,关键是要在本地先构建并推送一次。
这样做可以避免不必要的 API 计费。(一开始的时候,你会发现自己经常在看 Google 计费界面……哈哈)
与翻译习惯对抗
实际尝试后,会产生各种各样的翻译。
"リベロジック株式会社"变成了"Liberogic Inc.",有时甚至变成了"Libelogic"……。
说实话,谁都不知道了。我也试过 Google 的术语表(Glossary)功能,但它只在句子级别有效,对于"Liberogic 株式会社"这样的单个术语很难进行控制。
因此最终,我们自己实现了替换逻辑。
en: [
{ from: /Liberlogic/g, to: 'Liberogic' },
{ from: /Libelogic/g, to: 'Liberogic' },
],
de: [
{ from: /Liberlogic/g, to: 'Liberogic' },
{ from: /Libelogic/g, to: 'Liberogic' },
],
此外,我们还与Google表格实现了集成,可以自动反映在其中注册的规则。这样"Liberogic"和"Liberogic爷"都能被保护。
如何选择支持的语言
最初是6种语言,因为英语、中文(繁体・简体)、法语、西班牙语和日语本来就有。
在Slack上也有过这样的对话。
俄语怎么办?韩语和泰语怎么样?
「阿拉伯语 CSS 比较麻烦,稍后再处理」
不,印地语好像会导致访问量激增,还是算了吧
……就这样用比较随意的方式选定了语言。
不过,据说用这6种语言可以覆盖全球75%以上的用户,我在某个地方看到过这样的说法。
其实全球化推进得相当快?
目前 URL 示例如下:
今后计划将其扩展到约30种语言(?)。
届时还计划挑战支持从右到左的阿拉伯语(rtl对应)。
敬请期待!
总结:推荐轻松实现多语言化
本次方案完全满足那些"先尝试翻译一下!"的客户需求。
通过 Google Cloud Translation API 和缓存管理,可以相对低成本地构建多语言网站。
这也是在开展全面本地化之前的试验阶段的理想选择。
✳️ 顺便说一下
虽然多语言版本中可能存在某些措辞或布局不完美之处,但我们正在逐步修正,诚恳期待您的理解和支持。(因优先发布,细节部分稍后通过 CSS 调整!)
🌏 最后再说一句
"Even if translation isn't perfect, the world will understand."
With that spirit, Liberogic continues building the Web today. Even when things aren't perfect, communication happens. That's why we try things ourselves first before presenting to our clients. We embrace failure, we embrace experimentation. Day after day, Liberogic tests and validates at the frontlines of the Web.
And yet, even as we say this, Google Translate continues to evolve every single day! The end.
既是公司代表,也始终是合作伙伴。喜欢理解新技术,享受事物变得便捷的那一刻,是个痴迷于现场工作的人。对未来技术充满期待,无论多大年纪都想继续体验新事物。
森本
项目经理 / 创意总监 / 2007年创立