现在的位置: 首页 > 综合 > 正文

魔兽世界私服trinitycore2的架构(6)国际化

2013年10月14日 ⁄ 综合 ⁄ 共 4242字 ⁄ 字号 评论关闭

 在T端中,是由数据库保存终端的显示信息,比如物品的名称。默认情况下,他们是enUS英文的。不过,我们需要将他们修改为中文模式。在芒果以及国内比较著名的私服中,都是直接在原地修改的,我原来也是。不过后来发现这样很容易出错,所以仔细研究了下T端的初始化过程,发现了很多有趣的事情。下面,我们先描述下这个过程:

1、客户端在登录认证的时候,会提供一个国家代号,uint8[4],比如:

    enUS=0, koKR=1,frFR=2,deDE=3,zhCN=4,zhTW=5,esES=6,esMX=7,ruRU=8

2、认证成功之后,这个国家代号,如中国大陆为“zhCN”,会被转化为代码4保存在realmd.account的locale字段中。同时,会话也会记录这个代码【4】 。

3、以任务为例,当玩家打开任务列表时,任务的ID和标题会被加载进来,T端判断当前的国家代码,如果非enUS的,会根据id检索国际化map,检索出相应的标题。然后返回给客户端。

 

上面我们看到了,在T端,实际上英文和国际化文字在数据库中是同时存在的,那么,他们是如何存储的呢?在M端和T端中,都有这么几个表:

1、locales_achievement_reward

2、locales_creature

3、locales_gameobject

4、locales_item

5、locales_npc_option

6、locales_npc_text

7、locales_page_text

8、locales_points_of_interest

9、locales_quest

 

以生物【creature】为例,locales_creature有这么几个字段:

1、entry

2、name_loc1 ... name_loc8

3、subname_loc1 ... subname_loc8

 

其他几个也一样,他的结构总是为key + [fieldname]_loc[locale_code] 。key就是这个表的关键字,fieldname就是需要国际化的字段,locale_code是个列表,固定从1...8。和locales_creature相对应的是creature_template表,这个定义表明,creature_template表中name/subname两个字段需要国际化。我们中国大陆的代码是4,所以,只要填写name_loc4和subname_loc4就行了。

从locales_XXXX总结下需要汉化的每个表的字段如下:

1、achievement_reward [entry + subject + text]

2、creature_template [entry + name + subname]

3、gameobject_template [entry + name + castbarcaption]

4、item_template [entry + name + description]

5、npc_option [entry + option_text + box_text]

6、npc_text [entry + text0_0 + text0_1 + text1_0 + text1_1 + text2_0 + text2_1 + text3_0 + text3_1 +

                      text4_0 + text4_1 + text5_0 + text5_1 + text6_0 + text6_1 + text7_0 + text7_1]

7、page_text[entry + text]

8、points_of_interest [entry + icon_name]

9、quest_template[entry + title + details + objectives + offerrewardtext + requestitemtext + endtext +

        objectivetext1 + objectivetext2 + objectivetext3 + objectivetext4]

 

嗯,终于把这个机制写好了。下面就是怎么汉化的问题。有个很多网站提供魔兽世界的翻译信息,比如多玩或者艾泽拉斯地理以及178等。

假如有个物品,编号编号[entry]是[44444],那么你连接【http://db.178.com/wow/cn/item/44444.html】,可以看到这是【黑暗蛛魔胸甲】,在网上看到个方法是这样的:【http://db.178.com/wow/cn/a/item/44444.js】,他会返回这样的内容

 

从中可以解出需要的信息。这个地址的格式是:http://db.178.com/wow/[locale]/a/[type]/[entry].js,其中[locale]是cn,表示简体中文,台湾应该是tw;[type]是类型,有item/npc等;而[entry]就是表格中的entry值。

 

还有些很奇怪的单词或者名称不一定有,那么就需要翻译了。有个地址不错,输入这个地址:

http://db.ngacn.cc/tips/index.php?key=Might of Kalimdor Archmage&word=1,他会输出:

Might of Kalimdor Archmage   卡利姆多联军大法

0.006599

表示“Might of Kalimdor Archmage” 的中文意思是【卡利姆多联军大法师】,0.006599是他的执行时间。

 

注意,将你所要查的东西都可以放在key后面,不过最好用加入&word=1,不然,输出就不会这么简单。

 

好了,累死,终于写好了。我在www.romandion.com提供我的成果,如果你需要的话,用用户locale,密码为空连接到上去,推荐navicat。可以随时看到我汉化的结果。如果你以及汉化好了,欢迎共享。加入我的群【32285689】,大家互相学习,不过群是实名制,请见谅。

 

 

抱歉!评论已关闭.