前言

无奈 Minecraft (我的世界) 太贵,正好看到有一个 Minecraft 的开源复刻版 — Minetest

虽然生态比不上 Minecraft (不过也有很多 Mod 可用了), 不过对于我这种三分钟热度的玩家也足够。

安装

首先安装 Minetest (以 Arch 为例)。

sudo pacman -S minetest

设置中文

安装后,打开发现是英文界面 (好惭愧,目前我并没有无障碍玩英文游戏的能力), 看来游戏并没有读取系统的 Locale 设置。

那就手动设置成中文, 在 Settings - Advanced Settings - Client and Server 中, 找到 Luanguage 选项,将其设置成 zh_CN

欸,咋还是英文呢? 重启之。欸,还是如此。

Debug

难不成,这玩意在中文圈太小众, 没人持续翻译,导致翻译文件已不可用?

项目主页 看了一下, po/zh_CN/minetest.po 文件的上次修改时间为 16 hours ago

翻译文件还挺新的,那会不会是游戏本身有 Bug?

在 Issues 搜索了一圈, 的确有个有关中文翻译不可用的 Bug — Why zh_CN in blacklist

不过从下面的回复来看,这个问题应该已经修复。 所以 Upstream 是没有问题的。

Bug Reports

正当毫无头绪时,突然想起前段时间折腾 MTPandroid-file-transfer 包中缺少了必要的依赖 (.rules?)。

说不定这个包有问题。

看了下 Mintest 包的详情页, 好家伙,果然有一大堆翻译文件没有打包进去。

遂向打包者提交一个 Bug — [minetest] 0.4.17.1-1 Translation files are missing

用赃方法实现中文支持

虽然已向打包者反馈, 但是也并不知道多久才能 Fix。

那就意味着现在不能玩?那怎么能行。 目前还能有以下几种方法让其支持中文:

  • 自己 打包 (打包一时爽,一直打包就一直爽。但是并不想持续维护包,所以 Pass 掉)

  • 手动替换翻译文件 (以下是尝试过程,不过不知为啥这个方法会无效)

  • 从官方 Repo 编译安装 (以下是尝试过程,可以正常使用中文)

手动替换翻译文件

首先安装 PoEdit (这个工具能将 .po 文件编译成 .mo 文件)。

sudo pacman -S poedit

然后下载 po/zh_CN/minetest.po 文件, 用 PoEdit 将其编译成 minetest.mo 文件。

如果秉持着尽量少改动系统文件的原则

先设置 LOCPATH 变量。

export LOCPATH=$HOME/.config/locale

再将 minetest.mo 文件复制到 $HOME/.config/locale/zh_CN/LC_MESSAGES 目录下。

如果无所谓是否改动系统文件

直接将 minetest.mo 文件复制到 /usr/share/locale/zh_CN/LC_MESSAGES 目录下。

从官方 Repo 编译安装

官方已有详细的 编译教程, 这里就不再重复。

如果 Tool chain 和 Dependency 没问题的话, 应该很快就能编译完成,然后启动。

欸?还是不能使用中文,

看了下 locale 目录, 居然没有 zh_CN/LC_MESSAGES/minetest.mo 文件。 (明明记得在编译信息中看到已找到 zh_CN 的 locale 的)。

那就再看看编译输出信息。

在 cmake 时,的确先已找到各语言的 locale,如下:

-- Found GetText: /usr/include  
-- GetText enabled; locales found: be;ca;cs;da;de;dv;eo;es;et;fr;he;hu;id;it;ja;jbo;kn;ko;ky;lt;ms;nb;nl;pl;pt;pt_BR;ro;ru;sl;sr_Cyrl;sv;sw;tr;uk;zh_CN;zh_TW

但是,接着又冒出来一个 blacklist

-- Locale blacklist applied; Locales used: ca;cs;da;de;dv;eo;es;et;fr;hu;id;it;ja;jbo;kn;lt;ms;nb;nl;pl;pt;pt_BR;ro;ru;sl;sr_Cyrl;sv;sw;tr;uk

没想到最终还是是 Upstream 的问题, 但是懒得深究为啥会有个 blacklist 了。

直接在 repo/locale 目录中创建 zh_CN/LC_MESSAGES 文件夹。 然后将上面已编译好的 zh_CN 的 minetest.mo 文件复制到 repo/locale/zh_CN/LC_MESSAGES 目录下。

然后启动,可以正常读取系统的 Locale 设置并显示成相应的语言啦。

列个 TODO (TODO 自己都笑了)

后记

在查看 po/zh_CN/minetest.po 简体中文的翻译文件时, 发现了几处很明显的翻译错误。

遂去 Minetest 的翻译主页 看了下。 好吧,简体中文的翻译进度 只有一半, 然后顺手改了那几处翻译错误。

So?如果你也喜欢 Minetest,欢迎为简体中文 (zh_CN) 的翻译提供贡献。