Skip to content
zorioning edited this page Aug 26, 2018 · 11 revisions

如何做汉化

一、需要汉化的地方主要有以下几处: 客户端,服务端。

(一)客户端主要是UI界面的汉化,需汉化的词句都分散在代码中,这些工作基本完工。

(二)服务端需要汉化的地方:

  1. data/config 目录,里面是xml文件,都是些精灵、物品和地图的属性描述。主要修改两个地方,标签、 标签,也就是名称和描述。 另外还有个需要修改的地方是怪物掉落物品的名称。针对xml要做的是关键字替换,需要配合date/langulge/zh_CN.txt 做全局替换。 建议先汉化zh_CN.txt, 然后再做替换。
  2. src/games/stendhal/server/下的 maps、entity、action目录,里面是NPC的对话、任务记录和菜单命令,汉化这些需要一个一个手工打开查找,一些对话是字符串的拼接,所以汉化这些内容需要有一定编程基础。详细方法请看第二章中的(二)夹杂在程序中的句子翻译

二、注意事项

(一)关键字替换。我用vscode做全局替换,搜索关键字时,要注意被替换的内容,别把不该替换的替换掉了。

####一般物品名称需要替换的地方有三处:xml中的物品name和打怪掉落物品item的name,npc对话和任务的关键物品,物品买卖的关键字。出现其他需要替换的地方就要小心,vscode可以去不需要替换的地方。核对清楚后再替换怪物名称需要替换的地方有下面几处:xml中的怪物名称,npc对话中的一些相关名词,一些任务中的打怪需求。经验总结有以下几点:

  1. 查找替换时加 "" (英文半角双引号),比如 "wolf"替换为"狼", 因为这样可以最大限度的少替换不该被替换的内容。虽会漏掉一些,但程序不会出错,如果不小心替换了程序中的变量什么的,造成程序无法正常运行就惨了。 搜完加引号的,然后再搜一遍不带引号的,检查一下有没有漏掉的地方。
  2. 就算加了双引号,还是有些不该替换的被替换,要格外小心。比如一些 类型属性名称与主名称相同,比如axe主名称是斧子,但类型class名称也是axe, 要注意替换时只替换主名稳,物品类型等其它属性名称不替换
  3. 先替换长字符串,再替换短的。比如 "sword"、"long sword"、"gold sword" 这些名称,如果先找sword, 肯定会找到 long sword 和 gole sword, 如果不小心替换了,后面再汉化long sword查找时会出现很多问题。

(二)夹杂在程序中的句子翻译

####因为大量NPC对话和客户端发送的命令都在程序中混着,所以汉化这些需要编程基础。翻译时要注意句子里面的特殊符号,常用的符号如下

  • # ,命令前缀。 比如 #帮助 ,要注意加#的词会在客户端加亮显示,客户输入这个词会触发事件,所以 #命令 的前后要有半角空格,

  •  再比如 #gold 命令本来是英文的,汉化中文时,同时要替换和 #gold 和同一文件 addReply("gold",...) 中的 “gold” . 这样命令才能生效。 
    
  • 一些常用命令我已做好,比如 #help , 我已替换为 #帮助,#帮忙 , #帮我 这些词都可用, 具体添加方法是修改 src/games/stendhal/server/entity/npc/ConversationPhrases.java 这个文件中的
    public static final List GREETING_MESSAGES = Arrays.asList("hi","hello", "喂", "嗨", "你好","您好") 另外还有

         "job", "work", "工作", "找工作"
         
         "help","帮助","求助","帮忙","帮我"
         
         task","quest", "favor", "favour", "任务","需要","需求";
         
         "done","finish", "complete","完成","好了","已完成";          
         
         "another", "abort","其他","其它","取消","另外";
         
          "offer", "deal", "trade","买卖","交易","价格","报价"
          
          "yes", "ok", "好的", "可以","好","是","中","行","要"
          
          NO_EXPRESSION, "nope","nothing", "none","不","不是","没有","不行","不好");
          
           "bye", "goodbye", "再见", "走了", "退出","拜拜");
    
  • !me ,遇到这个不要动,保留就行,只在宠物对话中见到过

  • [xxx] , 遇到中括号也不要动里面的内容