前言

無奈 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) 的翻譯提供貢獻。