hogepiyo

かつてはマイクラのModを作っていたがひざに矢を受けた

langファイルによるローカライズについて

LanguageRegistryとさよならしよう

Forge for minecraft 1.6.2から, assets/(.*)/lang/*.langファイルを自動で読み込んでくれるようになった. そのためもういちいちコード内でLanguageRegistry.addName()やloadLocalization()のようなメソッドを呼ぶ必要がなくなった. そのためlangファイルを言語別に書けばよいだけなうえ, 他の言語ファイルもおけばいいだけになった. なおlangファイルのフォーマットはJavaのpropertiesと同じである.

langファイルのサンプル

en_US.lang(英語)

tile.infernalfurnace.name=InfernalFurnace
tile.dwarvenOre.mithril.name=Mithril Ore
tile.dwarvenOre.ebony.name=Ebony Ore

ja_JP.lang(日本語)

tile.infernalfurnace.name=地獄かまど
tile.dwarvenOre.mithril.name=ミスリル鉱石
tile.dwarvenOre.ebony.name=エボニー鉱石

※日本語に限らないが, langファイルの文字コードUTF-8(BOM無し)にすること.

(マイクラ内部の言語コード).langという形式であれば自動で読み込んでくれる.

Properties形式について

minecraftにはunlocalizedNameとdisplayNameという2つの名前があり, langファイルではその2つを対応させればよい. propertiesの左辺はunlocalizedName(内部名)なのでブロックとアイテムは以下のようになる.

tile.hogehoge.name(ブロックの場合)
tile.hogehoge.piyopiyo.name(メタデータを使ったブロックの場合)
item.hogehoge.name(アイテムの場合)
item.hogehoge.piyopiyo.name(メタデータを使ったアイテムの場合)

他にもContainerの名前, CreativeTab, Enchantmentなど, 内部名で扱っているものはすべてlangファイルからローカライズできる.