Jump to content

[教程] 如何制作语言包?


Recommended Posts

语言包一共分为三大类:普通语言包、搞怪语言包(自定义语言包)和它的分支功能性语言包

语言包是由"string"字符串组成的,总共分为三部分:

 

例:

开头部分:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<strings is_primary="0" lang="zh" lang_full="简体中文 (Simplified Chinese)" typeface="sc">

"version="1.0"" 声明用的xml版本是1.0.

"encoding="UTF-8"" 声明用xml传输数据的时候的字符编码,假如文档里面有中文,编码方式不是UTF-8,传输过去再解码的话中文就会是乱码.

"standalong"用来标记是否是一个独立的xml,默认是yes,值 yes 表示这个 XML 文档是自包含的(self-contained).

值是no表示这个XML不是独立的而是依赖于外部所定义的一个DTD.

"lang="表示的是编码语言,例如zh简体中文,zh-Hant繁体中文,en英文,es西班牙语等等.

"lang_full="是语言的全称,zh就是简体中文 (Simplified Chinese),zh-Hant就是繁體中文 (Traditional Chinese),es就是Español (Spanish)等等.

"typeface="是字体的种类,在这里sc是宋体.

 

中间部分(主要部分):

 <string id="9">培育屋</string>

中间部分也分为三个部分:

第一部分:<string id="9">  string表示为数据类型,id为变量.

此处意思为 定义一个字符串变量id,并赋值为空字符串.

第二部分:><  将空字符串赋值,此处是“培育屋”.

第三部分:</string> 表示这一行的结束.

 

结尾部分:

</strings>

表示结束全部字符串.

 

还有一种与上述不同,但用法基本相似:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> (第一部分)
<ds_strings_archive archive_type="0" lang="zh" region_id="3">
  <string block_id="0" entry_id="0" table_id="1">玩家{00}</string> (第二部分)
</ds_strings_archive> (第三部分)

在此不过多赘述.

但是切忌去随意触碰第一部分,第二部分除"><"之外的部分,第三部分.

如果你不懂的话,修改后可能会造成错误.

 

 

所以说制作或修改语言包,都是更改的"><"中间的部分.

"><"中间的部分你可以填写任意你想填写的东西,标点符号最好为英文标点符号,避免出错.

所以如果你想自定义任何地方所说的话,尝试修改"><"即可.

例:

修改上、下线提示:

原版:

    <string id="2604">{00}上线了.</string>
    <string id="2605">{00}下线了.</string>

修改后:

    <string id="2604">{00}复活了.</string>
    <string id="2605">{00}去世了.</string>

修改之后,保存,便可以上线测试.

所以以上讲的是搞怪语言包(自定义语言包).

 

下面来讲功能性语言包:

功能性语言包主要就是速度快,或表示详细.

或有意识的去把某些东西整理整齐.

速度快,主要是借助于"\n"换行符的应用(我将在下文讲更多符).

在对话气泡中,"\n"主要是翻页的作用,比如说PC对话,每换一个气泡,就需要键入一次"\n".

而在对战中,"\n"主要是换行的作用,但是对战界面一次只能换行一次,也就是一页只有两行,如果超过两行,则会在下一页的第一行开头显示,以此类推.

表示详细,例如表示出宝可梦的属性.

就是查找到宝可梦的名字,再在其周围修改.

或者你可以自定义更多的部分,方便理解.

 

对于这三种语言包,一件重要的事情是:每个地区的编号"regin_id",例:

<strings lang="zh" lang_full="简体中文 (Simplified Chinese)" is_primary="0" typeface="sc" is_override="1" region_id="0">

"0"对应的是常规语言包.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ds_strings_archive archive_type="0" lang="zh" region_id="2">

"2"对应的是合众语言包.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ds_strings_archive archive_type="0" lang="zh" region_id="3">

"3"对应的是神奥语言包.

 

 

就这么多,我将在二楼讲解输出时控制的格式符,以及一些方便编辑的方法.

如有任何错误,请指出.

感谢阅读 🙂

Edited by Thekingofglory
Link to comment

接下来讲输出时控制的格式符:

\n 将光标移动到下一行(称为换行符).

\t 将光标移动到下一个制表位(称为制表符), 一个制表位等于8个空格.

\r 将光标移动到当前行的开头(称为回车符).

\f 将光标移动到下一页(换页符).

这些一般都用来控制输出内容的格式,在输出的时候用.

但在MMO中,只有换行符"\n"起作用,换页符也由它完成.

所以你想达到"极速",在对话框中什么都不说,就可以直接把全部文本替换成一个"\n",这应该是比一个空格要快的.

如果你想做闪光高亮的话,你可以现在语言包外测试,比如说我选择的是游戏公告栏.

因为有些字符在游戏中显示的是"OBJ"乱码,或根本不予显示,所以说找一个合适的字符是重要的.

你可以一行一行来做,一般都是横着做,是把所有的字像打印机一样横向打出来,包括空格的距离,打出后,如果你想换行(也就是回车),键入一个"\n"即可.

 

替换角色、名称:

所有的名称都是按照{00}、{01}排列的,以此类推.

如果你想改的话,需要在游戏运行到此处时,记住名称的出现顺序,想改成纯文本的时候,删除{00}包括"{}",

改成你想要的即可.

 

之后来分享一些方便编辑的方法:

首先,在查找的时候,可以使用快捷键"Ctrl+F"呼出"查找",能提高一些效率.

也可以适当使用"复制"、"粘贴":"Ctrl+C"、"Ctrl+V"来提高效率.

比如说你想把很多句话改成"\n",可以复制它("Ctrl+C"),选择其他你想改的话,直接按"Ctrl+V"即可.

如果你想让代码在一页显示更多或更少的话,可以长按"Ctrl"并配合鼠标滚轮,实现放大(向前滚)和缩小(向后滚),触摸板也是如此.

如果你想要打开的更快捷,可以右键单击.xml文件,点击"打开方式(H)",点击"选择其他打开方式",在出现的窗口中单击你的应用,我这里是"记事本",在下方勾选"始终使用此应用打开.xml文件"即可.

如果你想要快速的查看自己改的怎么样,可以在游戏中直接点击"Ctrl+F6",出现"Strings Reloaded"后,重启一次你改的对话框即可.

如果你在做外文语言包的话(比如说我),外文是没有"<string block_id="X" entry_id="0" table_id="X">"这段的,所以说你把它复制下来,粘贴到"strings_XX.xml"是不会运行的.

但是你可以将同种类型的(<string id="X">)粘贴到一个.xml文件里,包括外文和中文,这也是修改外文的一种方法.

没有必要去按照strings_id排列的顺序去编辑,你可以随意找一个位置来编辑(但是事先把原有你想要替换的删除),strings_id的排列顺序只是为了更清晰.

 

然后是关于称呼的一些问题:

我觉得没有必要去刻意强调"您"之类的敬称,我感觉这样会显得很做作,因为同样都是玩家,去掉一切修饰都是一样的.

如果你想标记你的ID,为语言包留下印记或者防伪,总共有两种方式:

游戏输出端和语言包内部.

游戏输出端:

你可以选择在一些常用的地方去写上你的ID,比如说登陆界面.

切忌去在一些重要的地方标记你的名字,比如说PC对话、商店这样看久了会让人觉得很烦.

一定要让你的介绍简短!!!千万不要将QQ群之类的加入到任何地方.

比如说登录界面:我替换了登录界面的"加载中...请稍候.",写了很多很多东西在登录界面,但是,我们都知道,登录界面加载的很快,写很多东西是读不完的,如果你写很多东西,一闪而过,这样会引起一些不必要的麻烦.

QQ群,你加在游戏中,也会让一些人觉得很反感.

语言包内部:

这个很简单,在</strings>结束字符串之外再另起一行,输入"<!-- ___________ -->"即可(替换掉"________").

但是也千万不要把QQ群也写在这里,因为没有人会去拆包找这些东西的.

所以说,最好是把你想写的、介绍的东西写在你发帖的帖子里面,因为如果他想下载,那就一定会去读的

当然,QQ群也加在帖子里,我个人认为帖子末尾最好,因为开门见山有种广告的感觉,帖子中间不为人发觉,所以说帖子末尾更加适合

 

关于一些更便捷的方法:

你可以把你的语言包名字改成你想要的,例:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<strings is_primary="0" lang="king" lang_full="king typeface="sc">

 把"lang=" '____' "和 "lang_full='_____' "后面的更改一下

第一个是语言的主类型,为了不和原版重叠,你可以定义一个别的(但是必须是英文)第二个是在游戏设置里显示的语言,全部改好后,来到游戏测试:

点击设置—语言就可以了

这是我改的:

image.png.c40009597d4d0a8d0ad8480b07742667.png

在你把每一个语言包都更改后,你就可以得到了一个专属的语言包测试,不损害原版中文语言包

Edited by Thekingofglory
Link to comment
于2022/8/23 AM3点07分,Thekingofglory 说:

如果你想要快速的查看自己改的怎么样,可以在游戏中直接点击"Ctrl+F6",出现"Strings Reloaded"后,重启一次你改的对话框即可.

谢谢大佬对于创作语言包的详细描述,我补充一点吧:

 

用记事本打开语言包文件,并修改后,一定要保存下文件(最好在修改前每个文件都备份下),再按键盘最左下角的“Ctrl”和上面的功能键“F6”,重置语言包,再在游戏里重新启动一次所改动的对话框即可。

 

pokemmo原版语言包的四个地区中,在每个地区的PC回复时,NPC的对话在语言包中的位置都不太一样,推荐在测试新编辑的文本时,不要选在PC回复的对话,可以修改语言包里的功能指示牌的文本测试效果。

Link to comment
1 minute ago, Urz said:

谢谢大佬对于创作语言包的详细描述,我补充一点吧:

 

用记事本打开语言包文件,并修改后,一定要保存下文件(最好在修改前每个文件都备份下),再按键盘最左下角的“Ctrl”和上面的功能键“F6”,重置语言包,再在游戏里重新启动一次所改动的对话框即可。

 

pokemmo原版语言包的四个地区中,在每个地区的PC回复时,NPC的对话在语言包中的位置都不太一样,推荐在测试新编辑的文本时,不要选在PC回复的对话,可以修改语言包里的功能指示牌的文本测试效果。

感谢感谢^^

Link to comment
于2022/8/23 AM3点07分,Thekingofglory 说:

没有必要去按照strings_id排列的顺序去编辑,你可以随意找一个位置来编辑(但是事先把原有你想要替换的删除),strings_id的排列顺序只是为了更清晰.

没必要删除的。

 

可以把自己修改的语言包文本整理好,在每次游戏更新后,放在新的语言包文件的末尾中,因为后面的文本是会替换掉前面的文本的。

 

比如说在语言包最下面放入:

 

    <string id="2604">{00}上线了.</string>
    <string id="2604">{00}复活了.</string>
 

 

那么在游戏中有好友上线所显示的是:{00}(好友名字)复活了.

Link to comment
于2022/8/23 AM3点07分,Thekingofglory 说:

一定要让你的介绍简短!!!千万不要将QQ群之类的加入到任何地方.

啊这……有很多玩家在更新游戏后,不知道去哪里寻找最新的语言包,所以我才加入了QQ群号,在商店那里,我想……方便大家的话也没啥问题吧……

Link to comment
3 minutes ago, Urz said:

没必要删除的。

 

可以把自己修改的语言包文本整理好,在每次游戏更新后,放在新的语言包文件的末尾中,因为后面的文本是会替换掉前面的文本的。

 

比如说在语言包最下面放入:

 

    <string id="2604">{00}上线了.</string>
    <string id="2604">{00}复活了.</string>
 

 

那么在游戏中有好友上线所显示的是:{00}(好友名字)复活了.

可能是我为了防止冲突的习惯吧,改别的会有冲突

Just now, Urz said:

啊这……有很多玩家在更新游戏后,不知道去哪里寻找最新的语言包,所以我才加入了QQ群号,在商店那里,我想……方便大家的话也没啥问题吧……

耽误游戏时长(doge

Link to comment
于2022/8/23 AM3点07分,Thekingofglory 说:

比如说登录界面:我替换了登录界面的"加载中...请稍候.",写了很多很多东西在登录界面,但是,我们都知道,登录界面加载的很快,写很多东西是读不完的,如果你写很多东西,一闪而过,这样会引起一些不必要的麻烦.

我还是把语言包说明以及详细的使用方法都放在开头吧,想看的玩家可以自行截图,这样……应该……没问题吧……?

Link to comment
于2022/8/23 AM3点07分,Thekingofglory 说:

所以说,最好是把你想写的、介绍的东西写在你发帖的帖子里面,因为如果他想下载,那就一定会去读的

好用的语言包是一传十,十传百,百传千,千传万的。

 

跟我讲,一般来说经由朋友分享使用语言包的,基本上都是不看论坛不看帖子的,这也就是我为啥要把语言包使用指南放在游戏中开头的原因,我也试过写在帖子里,然后写了几千字就没有然后了。

 

更新了语言包还要写帖子,太麻烦了,比如说我下次语言包会优化四地区传火的文本,稍微高端一点的玩家看一眼都会知道语言包这里优化了啥,而不是把优化的地方写在帖子里面让玩家阅读。

 

一般玩家想知道的也并不是你的语言包更新的过程,他们最想知道语言包里加的符号是些什么意思。

Link to comment
  • 4 weeks later...
  • 2 weeks later...
12小时前,Thekingofglory 说:

做一个外语和汉语两个版本的

我认为,双语完全没有必要

理由是:①每个人的母语只有一个,如果一个人只会中文,当然不会看英文,如果一个人只会看英文,当然也不会看中文,如果你是天才,都会,那么你也会从中选择一种语言阅读罢了,花里胡哨。②部分的地方可能会遇到字数限制,例如商店NPC的售卖物品名称

 

MMO共使用英语、法语、德语、西班牙语、葡萄牙语、意大利语、荷兰语、波兰语、希腊语、土耳其语、菲律宾语、俄语、韩语、日语、简/繁体中文十五种语言,另有其他语言仍未被翻译,如果你会使用这类未翻译的语言,可尝试帮助官方成员制作这些语言的语言包,我相信这会是一大壮举!

IMG_20221009_095616.jpg

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.