2010-09-02

アドオンの日本語化

とても今更だけど、アドオンの日本語化手順についての覚え書き。


もちろん、アドオンによって簡単に日本語化できるモノと、簡単にはできないモノがある。
一番簡単 (たぶん) なのは、Curseforge に Localization タブがあって誰でも編集できる状態のモノ。
たとえば ABugCatcher はこれに該当する。

この場合、翻訳する言語 (たとえば Japanese) をクリックすると Key, English, Current Japanese, New translation がずらっと並んだページになる。ここで New translation のところに翻訳後の文を書いて、一番下にある Save ボタンをクリックすればOK。
あとは作者が取り込んでくれるのを気長に待てば良い。
  • 注意: %s や %d 等、色が変わっているところはそのままにすること。全角 (%s など) にするのもダメ。


待てない、または Localization タブがない、あるいは編集できない (例:DailyNotes) 場合、直接ファイルを編集する。
基本的には、locale とか language というフォルダの中にあるファイルを編集または追加し、それを使うようにアドオンを一部修正することになる。

たとえば DailyNotes の場合、Locales と言うフォルダの中に言語ごとのメッセージが書かれたファイル群 (de.lua, en.lua, es.lua, ...) が入っているので、まずは適当なファイルをコピーして jp.lua を作る。
この .lua ファイルはちょっとした書式に従っているだけのただのテキストファイルなので、あとは UTF-8 が使えるエディタで中身を書き換えていけば良い。
  • メモ帳は UTF-8 で保存してもダメらしい、たぶん BOM 付きなんでしょう。
  • 個人的には Notepad++ を使ってるけど、窓の杜に載るような、ある程度有名なものならフリーウェアでも大体対応しているはず。
  • UTF-8 (BOM付き) と UTF-8N (BOM無し) が選べる場合、UTF-8N (BOM無し) を選ぶこと。

サンプル。こんな感じで Key = "翻訳後の文字列" にしていけば良い。
"" の中だけ書き換えればいいって事。簡単。
-----------------------------------------------------------------------
-- Dailynotes - JP
-----------------------------------------------------------------------
DN_F_COUNT = "所持数"
DN_F_TARGET= "必要数"
DN_F_LEVEL = "レベル"
DN_F_NAME  = "クエスト名"
DN_F_ZONE  = "地域"
DN_F_ITEM  = "必要アイテム"
DN_F_XP    = "経験値"

次に、新しく作った jp.lua を使うように、もう1カ所変更する。
これは探し方がほんのちょっと面倒くさい。
メインっぽいファイルから GetLanguage() と言う文字列を探す。
DailyNotes だと以下のようなところで見つかる。

dailynotes.lua 73~90行目

function DailyNotes.LoadDB(loc)

  --loc = "kr"
  if not string.find("en,de,fr,es,vn,ru,kr", loc) then loc="en" end

  DailyNotes.LoadFile("Interface/Addons/dailynotes/Locales/"..loc..".lua")
  DailyNotes.LoadFile("Interface/Addons/dailynotes/quest_db.lua")

  -- count quest
  DailyNotes.Quest_count = 0
  for _,_ in pairs(DailyNotes.DB_Quests) do
     DailyNotes.Quest_count = DailyNotes.Quest_count+1
  end
end


-- LOAD DB
DailyNotes.LoadDB(string.sub(GetLanguage():lower(),1,2))
変えないといけないのは、一番下…ではなくて76行目の "en,de,fr,es,vn,ru,kr" の部分。
これは何をしているかというと、対応していない言語 (en, de, fr, es, vn, ru, kr 以外) だったら "en" つまり英語にしている。
この状態ではせっかく作った日本語ファイルは使われずに英語になってしまう。
そこで、対応している言語のリストに日本語 (jp) も加える。
  if not string.find("en,de,fr,es,vn,ru,kr,jp", loc) then loc="en" end
これで、英語、ドイツ語、フランス語、スペイン語、ベトナム語、ロシア語、韓国語、そして日本語が使えるようになる。
DailyNotes では GetLanguage() の上の方にあったけど、大抵はすぐ下に同じようなリストがあるので、そこに JP か jp を加えれば良い。
大文字か小文字かは、他の言語名に合わせる。大文字を使う方が多いかな?

最後に、ちゃんと表示できているか確認して終了。
エラーが出る場合は、言語ファイルの " が消えていないかや、ファイル名の大文字小文字を間違えていないかなどを確認すると良いかも。

0 件のコメント:

コメントを投稿