Blenderアドオンのメニューやオペレーター名などの英語を、日本語に翻訳して読みやすくすることができる。
この記事では、scvファイルにまとめた翻訳テキストを読み込む方法を紹介する。
もくじ
標準の翻訳辞書の作り方
translation_dict = { "en_US": { }, "ja_JP": { ("*", "hoge\nmoge"): "ほげ\nもげ", } }
CSVファイルの形にしなくても上記のtranslation_dictを登録すれば、Blenderに翻訳を読み込むことができる。
この記事では、これ以外の方法を紹介する。
CSVファイルの書き方
"ビューポートカラー","Viewport Color" "エミッションマテリアル","Emission Material" "マットリスト","Mat List"
"日本語","英語"のように書く。
- 翻訳元の英語文は、完全に一致するようにすること
- 空行は作らないこと
- ここで指定した文は、アドオン内のメニュー以外の場所でも全て翻訳される
- 単語などの短い英語を翻訳する時は注意が必要
CSVファイルの読み込み
def GetTranslationDict(): dict = {} # 直下に置かれているcsvファイルのパスを代入 path = os.path.join(os.path.dirname(__file__), "translation_dictionary.csv") with codecs.open(path, 'r', 'utf-8') as f: reader = csv.reader(f) dict['ja_JP'] = {} for row in reader: for context in bpy.app.translations.contexts: dict['ja_JP'][(context, row[1].replace('\\n', '\n'))] = row[0].replace('\\n', '\n') return dict
translation_dictionary.csvというCSVファイルを、codecs.openで開き、Blenderの翻訳辞書の形になるように整形する。
改行コードである「\n」が、「\\n」に変換されてしまうため、replaceで戻してやる必要がある。
登録
try: translation_dict = GetTranslationDict() bpy.app.translations.register(__name__, translation_dict) except: pass
アドオンの再読み込み時に登録解除が失敗することがあるようなので、既存のものが残っていた場合でも失敗しないようにtryを付ける。
tryをつければ、エラーがあっても動作を中止しないでexceptの処理を行う。
登録解除
try: bpy.app.translations.unregister(__name__) except: pass