[教程] 制作自定义语言包:从入门到入完门 (转载备份) |
您所在的位置:网站首页 › 语言设置的中文怎么写 › [教程] 制作自定义语言包:从入门到入完门 (转载备份) |
解释一下为什么会有这篇专栏:mcbbs把我认为不错的一篇帖子关闭了,使用解锁卡解锁后怕再次关闭,于是转载一下。 原帖:https://www.mcbbs.net/forum.php?mod=viewthread&tid=997830 原作者:https://www.mcbbs.net/home.php?mod=space&uid=10240 卡狗 目录前言 提取语言文件 修改语言文件 制作资源包 维护语言文件 制作自定义语言包:从入门到入完门 制作自定义语言包是很简单的事情,但是似乎没有一个专门的教程可供参考。此外 1.17 增加了 114514 个新名词,单单一个 Grimstone 就吵了 1919 个小时,所以似乎制作一个属于自己的语言包成为了“等待官方翻译出来”或者“如果你不喜欢官方翻译,那就去成为翻译组头子”的另一个新选择。好了,闲话少叙,让我们马上开始。 感谢 mm2bc 对本文排版的支持。 提取语言文件 语言文件并没有直接摆在游戏目录的某个显眼的地方,它被修改了名字,和众多文件一起混淆在了一起。所以我们就得找到这个语言文件。 首先打开 .minecraft/assets/indexes 这个目录。如果你不知道怎么打开这个目录,请去问答版提问“如何打开 Minecraft 根目录”。打开之后,你会看到 1.15.json, 1.16.json 这样的版本 json 文件。要修改哪个版本,就打开哪个版本的 json。我们准备修改 1.16 的语言文件,所以打开 1.16.json。 打开之后,我们会看到密密麻麻的字符。问题不大,我们只需要按下 ctrl + F,输入 zh_cn,回车,就可以跳转到中文语言文件的相关信息。例如,我当前版本跳转到的内容是: "minecraft/lang/zh_cn.json": {"hash": "c671d99955e327e2f429759118000c1808ba6428", "size": 348289} (除此之外你可能也会看到有一个条目也带有 zh_cn 的字样,那个是 Realms 相关的语言文件,不用理会。) 注意到 hash 后面的那串数字字母混合物:c671d99955e327e2f429759118000c1808ba6428,这个就是语言文件的真实文件名。现在你有两种方法寻找这个文件。 第一种。打开 .minecraft/assets/objects,你会看到许多两个字符命名的文件夹。文件夹的名字是什么,里面装着的就是以这个名字打头的文件。所以,我们就根据 hash 值开头的 c6,打开 c6 文件夹。 然后,用你的火眼金睛找出 c671d99955e327e2f429759118000c1808ba6428 在哪里。 第二种。拜托,Windows 自带的搜索功能虽然差强人意,但那至少还是能够差强人意的是吧。在文件管理器右上角直接搜索就好了。 修改语言文件 不管准备使用什么方法,请先把语言文件复制一个副本出来,然后更名为 zh_cn.json。 当你打开这个文件一看,瓦,这是啥玩意啊?现在你有两种办法完成对语言文件的魔改。 注意,如果你想为最新的快照修改翻译,请看第二种方法。 还原转义了的字符 请注意:这里我们做一个 python 的操作示例,这个方法比较基础,所以可以根据自己的需要进行改进或者使用其它语言,也是可以的。当然,如果你不想输入任何代码,请看第二种处理方式。 由于语言文件里是 unicode 转义字符,所以我们可以尝试把它还原,然后查找直接你想修改的条目。 在你存放 zh_cn.json 的文件夹下打开 python 命令行或新建 .py 脚本,运行以下代码,即可获得一个还原好的 json 文件。 import jsonwith open("zh_cn.json", mode = "r", encoding="utf-8") as f: ori = json.loads(f.read())with open("zh_cn.json", mode = "w", encoding="utf-8") as f: json.dump(ori, f, ensure_ascii = False, indent = 4) 再次打开它,你就能看到字符都被还原了。比如,我们觉得音乐唱片这个翻译糟糕透顶,就可以使用 ctrl + F 找到相应的条目,然后修改成豪俊金曲。别忘了保存! 直接修改语言文件 如果我们不还原,如何知道条目对应了什么信息呢?答案在 Crowdin 上。 注册账号,打开 https://crowdin.com/project/minecraft/zh-CN#,你会看到不同版本的语言文件。 点进目标版本的文件,比如,我们这里点进 1.16/Minecraft Game,在左上角的 Search in file 处搜索当前游戏中的译名,或者英语模式下的原名,即可找到对应的翻译条目。 找到了条目之后,我们就可以看到条目在语言文件中对应的键,回到语言文件中搜索就可以找到了。 找到之后,可以直接修改,不需要转换成 \u 开头的转义字符。 这个方法甚至适用于最新快照新增条目的修改。比如,20w13a 中添加了 Strider,但是你如果在语言文件中搜索 item.minecraft.strider_spawn_egg,你发现查无此项。为了添加翻译,只需要直接在 json 文件中新建一个键值对。 制作资源包 现在你有两种选择:直接替换原有的中文语言包,或者新建一个属于自己的语言。这两种方法差异不大,我们先看第一种。 直接替换原有语言文件 首先你要知道如何制作资源包。这里我们只简要介绍一下,具体的修改请在 Wiki 中搜索“资源包”或者去问答版发帖。 在 .minecraft/resourcepack 文件夹下新建一个文件夹。名字无所谓,我们这里起个 awesomePack 好了。然后,在里面新建一个 pack.mcmeta 文件。对于 1.16 版本,往里面添加如下内容: { "pack": { "pack_format": 5, "description": "教学用语言包" }} 文件添加好了之后,新建文件夹 assets/minecraft/lang/。把你刚才编辑好的 zh_cn.json 文件丢进去。 一切完成后,现在你的资源包文件结构长这样: .├── assets│ └── minecraft│ └── lang│ └── zh_cn.json└── pack.mcmeta 新建自己的语言 如果要新建自己的语言,就需要再修改一下 pack.mcmeta。 { "pack": { "pack_format": 5, "description": "教学用语言包" }, "language": { "zh_114514": { "name": "中文", "region": "下北泽", "bidirectional": "false" } }} 然后把刚才的 zh_cn.json 改成 zh_114514.json。打开语言列表,你就看到了自己的新语言。 维护语言文件 如果你修改的条目过多,那么每次语言文件更新的时候,需要重新把自己的大量修改添加回去,那就太可怕了! 其实,使用一些程序合并新旧语言文件就好了。这里提供一个 python 的示例: import json # 读取文件。请自己调整文件路径。f = open("zh_114514.json")g = open("new.json")old = json.loads(f.read())new = json.loads(g.read())f.close()g.close() # 合并新条目for i in new: if i not in old: old[i]=new[i] # 保存with open("zh_114514.json", mode = "w", encoding="utf-8") as f: json.dump(old, f, ensure_ascii = False, indent = 4) 以下是原帖截图 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |