注册 登录
主题 : 文本修改的思考
级别: 精灵王

UID: 94657
精华: 0
发帖: 786
可可豆: 4936 CB
威望: 4886 点
在线时间: 1608(时)
注册时间: 2011-09-23
最后登录: 2018-09-10
0 楼:  发表于: 2018-04-17 09:53    发自: Web Page
来源于 教程分享 分类

文本修改的思考   


前些天,做了一些 游戏 文本 翻译的工作。

游戏中,有很多文本,

而这些文本,又很散,所以,修改起来,很麻烦,


修改文本的时候, 我关心的,就是 可逆性,

比如, 现在是 中文, 要改成 韩文, 日文, 或者英文,

那么,会不会 在修改成 某种语言后,

又要求 改回 中文呢?


当代码中,出现

var label =  this.level + "级" ;

这样的字样时, 修改成英文时,

可能会改成

var label = "Level " + this.level;

假如这么写的话,

要改回中文时,

又要改成 var label =  this.level + "级" ;

假如,现在,

需求是,打两个包,一个中文的,一个英文的,怎么办?

这个就是 硬编码的 害处, 修改的时候,非常的麻烦,

那么,有没有什么比较好的解决方法呢?

可以这样,

var label = null;

if(isChinese())
{
    label =  this.level + "级" ;
}
else if(isEnglish())
{
    label =  "Level " + this.level;
}

这样,修改的时候,

中文和英文的切换,几秒钟就能搞定了。

但是,这里有一个问题,

那就是 同一个包体内, 包含了英文和中文 两套资源,

而现实中,只是用到了其中一套。


还有比较现实的问题是,

假如,现在是一个 水浒游戏,

现在,要改成 封神榜的人物, 里面的中文很多地方都要改,

比如, 原本叫 武力值, 现在叫 法力值 怎么办?

原本叫 突破, 现在叫 入化 怎么办?

假如,现在, 让打两套包,一套是 水浒的,一套是 封神榜的,怎么办?


还有可能是 三套, 西游,水浒,三国。

如果在游戏最初做的时候,就考虑到这种问题,就好做。

可以把游戏中的文本,都放在 res中 作为资源,动态加载进来。

如果为了将来修改方便, 最好不要把所有的东西,都放在一起,

而是,每个界面,单独处理。

比如, A 界面中,

原本的,

var label =  this.level + "级" ;

就变成了  var label =  script.getLabel(this.level);

A界面对应自己的一个脚本文件,  比如叫 A.script

var script =  ScriptManager.create("res/uiScript/A.script");


而在脚本中,

对应一个函数

string  getLabel(number level)
{
       return   level + "级" ;
}


那么,要改成因为的时候,

并不是修改 A.script 中的函数 string  getLabel(number level)

而是, 有两个 叫 A.scirpt 的文件,

一个是

string  getLabel(number level)
{
       return   level + "级" ;
}

一个是

string  getLabel(number level)
{
       return    "Level " + level ;
}


中文有一套 资源文件夹, 英文有一套资源文件夹,

两套中,没有交集,

这样,替换的时候,并不是修改代码,

而是直接替换文件夹,

这样, 三国, 水浒, 西游记,

实际上,就是 三套 独立的文件夹,

修改的时候,根本不知道 其他资源的存在,

这样, 即使 修改 100套, 每一次,问题的复杂度,也都是 1, 而不是 同时处理多个。


最后,就是实际的问题,

假如,一个游戏,最初的时候,就是如此设计的,那么,就好改,

如果,一个游戏,里面已经到处都是用 硬编码写成的了,

那么,这么修改的工作量,可能就很大,

在这种情况下,出于实际问题的考虑,


var label = null;

if(isChinese())
{
    label =  this.level + "级" ;
}
else if(isEnglish())
{
    label =  "Level " + this.level;
}

也是一种解决问题的办法。


事情没发生之前,有潜在问题,都好改,

已经发生了,再改,往往就晚了一步,

晚了一步,付出的代价,可能就天差地别了。






本站内容均为本站转发,已尽可能注明出处。因未能核实来源或转发内容图片有权利瑕疵的,请及时联系本站,本站会第一时间进行修改或删除。 QQ : 3442093904

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部