G2Rail多语言支持

上周上线了G2Rail的28国语言支持。大约花了两个星期左右的时间完成了这部分工作。正好朋友圈有几位小伙伴询问是怎样做到的,所以在这里回答一下。

G2Rail火车票覆盖国家和地区

背景:因为疫情影响,国内的旅游市场基本已经Shut down,所以对于G2Rail来说很重要的是能够拓展国际市场,这样可以减少对于中国市场的依赖。同时从竞争对手来看,基本上只能提供很少的语言选择,而且对于使用多语言搜索和展示比较弱,这样可以更好地建立G2Rail在地面交通市场这方面的竞争优势。

挑战包括:

  • 程序方面,G2Rail目前有桌面网页、手机网页、小程序和App (XMove App)。小程序因为只有中国市场用,所以不需要支持。
  • 数据方面,地理数据方面包括、有十几万个火车站,全球五千多个城市,接通了52个国家;交通元数据方面,有几十个铁路公司的几百种不同的火车,每种火车有不同的舱位,还有铁路公司还有几百种不同的车票种类,舱位和票种都有很多说明。
  • 界面展示,消息提示,邮件,短信提醒

我的做法是如下:

第一步地理数据

国家和城市的名称全部翻译成多语种,数量比较少,所以这部分通过Google翻译网页手动就可以很快完成。

比较复杂的是火车站数据,因为数据量太多,而且很多是当地语言,翻译成其他语种正确率太低。通过Google翻译网页翻译需要很长时间,所以需要调用Google Translate API,这又产生另外的问题,Google Translate API不是免费的,而且比如从波兰车站从波兰语翻译成菲律宾语、泰米尔语往往不堪入目,性价比会比较低。所以我接下来现做的是车站数据的整理,首先需要把车站与对应的城市做映射(因为铁路公司并不会给我们提供城市等地理信息,需要自己整理)。对于五十几个国家的重点城市,分别找出相应的主要车站。主要车站的另外一个标准是过去在G2Rail网站和XMove App上所有出过票的车站。整理完车站数据之后,就可以写程序调用Translate API去翻译了。翻译完成之后再人工审核。审核结束之后,写脚本导入数据库。

第二步是交通元数据

因为涉及到很多专业术语,而且有相当多比较类似的信息,所以在翻译之前,我把所有的文案标准化,同时语义化(以后会分享),并作出内容切分。切分之后,舱位其实只有不到二十个条目需要翻译,车票描述退改签条款也不过十几个。但这背后意味着调整系统,能够适配生成标准化文案。

第三步界面展示

G2Rail后台使用Ruby on Rails,前台是Vue和Flutter。Ruby部分展示信息更多存放在Yml里,Vue是放在Javascript里面,Flutter是在arb文件里面。接下来是写脚本去摘取这些文件里面的信息,并调用Translate API去翻译,并生成各语言的yml,js, arb文件。不少小语种的支持还是比较弱,尤其文案里面有参数的时候,问题更多,所以花了一些精力去审校,修正。

第四步系统修改

首先是数据库结构的调整,调查出所有需要调整的Table,然后写Migration去升级。接下来调整各部分程序,增加对于新语种的支持。同时也支持根据浏览器语言设置偏好,自动切换语言。

第五步商品数据修整

在初步Alpha环境上线测试过程中发现,系统里不少产品数据缺少多语言支持,所以对于这类产品数据和文案做出调整。

从法兰克福到柏林的ICE高铁泰文界面
Share