游戏的多语言版本解决方案

最近在做游戏的多语言版本,台湾版和韩国版。
海外版本就涉及一个语言翻译的问题,比如台湾版用繁体字,韩国版用的韩语。

一个Unity3D游戏中,使用中文的地方有以下几个地方:

  1. 代码中出现中文,比如一些飘字或文字提示等
  2. 配置表中出现的中文,比如道具名字、玩法描述等
  3. 带有中文字体的图片资源
  4. Prefab中Text里的中文

那么解决多语言版本的首先要解决问题就是,要把游戏中的所有中文抽取出来,尽可能集中放在一张表中,方便拿给相关人员翻译。

具体思路如下:
代码和配置表的处理方案:

  1. 写一个中文正则工具,把代码中出现的中文抽取出来,生成Excel表,方便拿给相关人员翻译。
  2. 使用一个有含义字符串替换原来中文,代码中有一句中文:Tips.ShowMeg("挑战次数用完,明日再来"),替换Tips.ShowMsg(Language.GetWord(10001)),其中Language.GetWord是用来根据Id获取语言包的接口,10001是Id,这个Id是唯一的,根据这个Id索引出被翻译的内容。
    3.做文本替换的时候,需要去重,因为代码中或配置表中会有很多重复的中文,避免翻译重复的文本。

带有中文字体的处理方案:
把游戏中所有带有中文字的图片找出来,让美术翻译好再替换回去。
前期规划好的话,这个找图片的工作就不大,比如带有中文的图片的命名规范好,如后面带有xxx_isfont.png类似,这样,那么做一个小工具,遍历下资源目录,可以很方便的把_isfont资源找出来,这里值得注意的是,找出来的资源按原本的目录结构与命名交给美术同事,翻译好再替换,这样处理起来方便,也不会破坏资源依赖。

预设中文的处理方案:
前期的做法,我把prefab的中文全部抽出来,放到配置表中,保存具体Text的路径,然后prefab加载完成的时候再重新刷新Text组件。但是这会造成资源的浪费,问题替换工作完全可以在游戏开始前替换好。

  1. 把prefab的Text里的中文抽出来,放到一张Excel中,保存Text的路径
  2. 翻译好后,再重新根据Text路径把翻译好的文本设上去,保存预设。

以上是游戏多语言版的解决思路,使用Python中的xlrd和lxwt制作小工具。配置表中替换文本的时候,避免递归死循环,代码和配置表使用Utf-8格式。

你可能感兴趣的:(游戏的多语言版本解决方案)