忘却まとめ

Blenderの中級者・上級者向けの踏み込んだ情報や、アドオン・3DCGに関する情報を記事にします

Blender内のテキストを翻訳する・CSVファイルから翻訳を読み込む【Blender / アドオン / Python】

Python

投稿日:

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

アドオンの制作依頼はこちら

-Python

Copyright© 忘却まとめ , 2020 All Rights Reserved Powered by STINGER.