[教程] 制作自定义语言包:从入门到入完门 (转载备份)

您所在的位置:网站首页 语言设置的中文怎么写 [教程] 制作自定义语言包:从入门到入完门 (转载备份)

[教程] 制作自定义语言包:从入门到入完门 (转载备份)

#[教程] 制作自定义语言包:从入门到入完门 (转载备份)| 来源: 网络整理| 查看: 265

解释一下为什么会有这篇专栏: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