快轉到主要內容

Minecraft Add-On如何製作多國語言?.lang與Rawtext的用法,自動翻譯按鈕、告示牌、書本

分類   遊戲攻略 Minecraft
標籤   Minecraft Add-On Minecraft Resource Pack Minecraft Command
🗓️ 民國110年 辛丑年
✍ 切換正體/簡體字
目錄

Minecraft基岩版支援多國語系,主要透過資源包控制,例如物品可按照玩家遊戲的語言,來顯示在地化的中文或英文名稱;書本、告示牌亦可透過Rawtext製作雙語版。

如果某個Add-On只有英文,透過新增中文.lang檔案就能翻譯Add-On,又不更動整體檔案結構。

本文討論.lang檔案和Rawtext的用法。

1. .lang檔案的用法
#

請先下載 原版資源包

.lang檔案可於texts資料夾找到,裡面的就是遊戲介面的翻譯文本,如果覺得基岩版的中文翻譯很怪,亦可自行校正,例如巴哈 修正奇怪翻譯的資源包

1.1. .lang檔案基本語法
#

等號左方是原始的字串鍵值,右方是翻譯後呈現的結果:

原版資源包/texts/zh_TW.lang的內容

createWorldScreen.action.editLocal=創造無限!	#
createWorldScreen.action.local=創造世界!	#
createWorldScreen.action.realms=創造世界!	#
createWorldScreen.action.realmsReset=重設 Realm	#

「##」開頭的行視為註解。此外原版資源包為保持多語系文字工整,會在字串後面按一個TAB鍵,再加上一個「#」。

原版資源包/texts/zh_TW.lang的內容

## Note, trailing spaces will NOT be trimmed. If you want room between the end of the string and the start of a
## comment on the same line, use TABs.
accessibility.disableTTS=文字轉換語音已停用	#
accessibility.enableTTS=文字轉換語音已啟用	#

%s是特殊的變數,代表動態的名稱,例如以下記分板指令的文本翻譯:

原版資源包/texts/zh_TW.lang

commands.scoreboard.teams.list.count=顯示計分板上 %1$d 個隊伍:																###1: Number of Teams
commands.scoreboard.teams.list.empty=記分板上沒有註冊的隊伍													###
commands.scoreboard.teams.list.entry=- %1$s:「%2$s」有 %3$d 個玩家																	###1: Team Name ##2: Team Display Name ##3: Number of Players
commands.scoreboard.teams.list.player.count=顯示隊伍 %2$s 中 %1$d 個玩家:														###1: Number of Players ##2 Team Name

1.2. Add-On的.lang檔案
#

Add-On的.lang檔案還可以翻譯以下內容,按照不同語言顯示對應的文本:

  • 物品名稱
  • 方塊名稱
  • 按鈕文字
  • GUI文字
  • 行為包/資源包的名稱&說明

範例:在Add-On資源包/texts/,新增二個副檔名為.lang的檔案,美式英文就是en_US.lang,繁體中文就是zh_TW.lang

├─texts
│      en_US.lang
│      zh_TW.lang

輸入以下內容(#開頭的是註解):

Add-On資源包/texts/en_US.lang

pack.name=Kancolle RP

pack.description=v1.1.0. §lCreator:§r§b§nTwitter@Ivon852. §r§lLicense & credits:§rVoices, music in this Add-on are owned by C2Praparat.

item.spawn_egg.entity.kancolle:akashi.name=Spawn Akashi

entity.kancolle:akashi.name=Akashi

action.interact.akashi.start_repairing=Start repairing

Add-On資源包/texts/zh_TW.lang

##資源包名稱
pack.name=艦隊收藏Add-On資源包
pack.description=v1.1.0. §l作者:§r §b§nTwitter@Ivon852。§r§l版權訊息:§r本Addon內的音聲及音樂為C2機關所持有。
##生怪蛋物品
item.spawn_egg.entity.kancolle:akashi.name=生成 明石
##實體名稱
entity.kancolle:akashi.name=明石
##互動按鈕
action.interact.akashi.start_repairing=開始維修

texts目錄還可以新增languages.json的檔案,記載這個Add-On所加入的語言:

[
  "en_US",
  "zh_TW"
]

一般來說,若Add-On裡面沒有玩家目前遊戲的語言,預設都會顯示英文,再不然就是顯示像item.spawn之類的原始字串。

行為包也可以放置.lang檔案,但僅用於翻譯行為包的名稱。

但是,有些Add-On的文本是寫死的 (hard-coded),沒有使用.lang的語法,那就得到行為包裡面看每個檔案的字串了。

1.3. 如何在Add-On檔案使用.lang的語法
#

例如資源包manifest.jsonheader{}需改寫成以下樣式,讓name的屬性讀取pack.name的字串自動翻譯文字:

"header": {
    "name": "pack.name",
    "description": "pack.description",
    "uuid": "e3ce74be-9b4d-4cd3-a948-bea0af40ec81",
    "min_engine_version": [
        1,
        16,
        0
    ],
    "version": [
        1,
        2,
        0
    ]
}

如果某實體的行為包檔案有互動按鈕組件,修改按鈕的interact_text字串成.lang的語法。

"minecraft:interact": {
    "interactions": [
        {
            "on_interact": {
                "filters": {},
                "target": "self",
                "event": "bf109g6:shoot"
            },
            "use_item": true,
            "cooldown": 1,
            "interact_text": "action.interact.bf109g6.fire"
        }
    ]
}

方塊或物品顯示翻譯名稱:

"minecraft:display_name": {
    "value": "item.newitem:supersword.name"
}

GUI標題的翻譯:

"minecraft:crafting_table": {
    "custom_description": "container.newblock.info",
    "grid_size": 3,
    "crafting_tags": [
        "info"
    ]
}

2. Rawtext的用法
#

Rawtext(原始文字格式)主要用於指令、書本、告示牌,這樣就可以製作多語系的內容。

翻譯文本主要還是寫在.lang檔案裡面,但是語法上比較統一。

2.1. Rawtext基本語法
#

{"rawtext":[{"translate":"字串鍵值"}]}

當遊戲中出現{"rawtetext"}的文本,遊戲會自動從資源包中搜尋字串,並顯示相對應的翻譯文本。

如果使用"with",可指定帶入特定變數,例如這個原本只會顯示「已將(執行者的名字)設為管理員」:

/tellraw @a { "rawtext" : [ { "translate" : "commands.op.success"} ] }

但是若加入"with",原本顯示執行者欄位的變數,便會代換成「已將Steve設為管理員」。

/tellraw @a { "rawtext" : [ { "translate" : "commands.op.success", "with" : [ "Steve" ] } ] }

With甚至可以做到「換行」,見2.3. 多語種書本一節。

2.2. 多語種告示牌
#

資源包/texts/zh_TW.lang

sign.my_customtext=星爆...氣流斬!

裝上資源包,並在世界的告示牌輸入:

{"rawtext":[{"translate":"sign.my_customtext"}]}

就會變成如下樣子:

2.3. 多語種書本
#

示範製作一本二頁的雙語書。

資源包/texts/zh_TW.lang

##第一頁,二行,用「%1」換行
book.mystory.page1=凡具有生命者,都不斷的在超越自己。%1%1而人類,你們又做了什麼?

##第二頁,二行,用「%1」換行
book.mystory.page2=成為你自己!你現在所做、所想、所追求的一切,都不是你自己。%1%1每個年輕的心靈日日夜夜都聽見這個呼喚,並且為之戰慄。

裝上資源包,在書本第一頁輸入:

{"rawtext":[{"translate":"book.mystory.page1","with":["n"]}]}

在書本第二頁輸入:

{"rawtext":[{"translate":"book.mystory.page2","with":["n"]}]}

呈現結果 (滑鼠點一下即會重新顯示rawtext的語法):

2.4. 多語種指令訊息
#

可用於/tellraw/titleraw等指令。

資源包/texts/zh_TW.lang

message.custom.msg1=第一賣冰,第二做醫生。

遊戲中使用該指令:

/tellraw @a {"rawtext":[{"translate":"message.custom.msg1","with":["n"]}]}

呈現結果:

參考資料
#

Text and Localization - Bedrock Wiki

基岩版原始JSON文字格式 - Minecraft Wiki

相關文章

Minecraft Add-On 自訂實體掉落物與loot指令用法
分類   遊戲攻略 Minecraft
標籤   Minecraft Add-On Minecraft Command
Add-On 自訂Minecraft NPC的對話框 & dialogue指令用法
分類   遊戲攻略 Minecraft
標籤   Minecraft Add-On Minecraft World Minecraft Command
合成台方塊自訂UI|Minecraft基岩版Add-On模組製作教學
分類   遊戲攻略 Minecraft
標籤   Minecraft Add-On Minecraft Resource Pack

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。