milvinae

web & product design.

Blenderで言語の切り替えめんどくさくない?


Blenderっていいですよね。
モデリング・スカルプト・モーショングラフィック・3Dアニメーション・2Dアニメーション・レンダリング・・・・・。
アニメーションの中割の作成からロトスコープまで・・・・。
それでいてFree。

無敵すぎませんか?
ありがとうBlender Organization。

そんなこんなで、世界中にユーザーがおりコミュニティの活動も活発です。
ネットで調べれば大体のことは教えてくれます。



が、


情報の大半は英語圏のもので、翻訳すればわかるものの、日本語でBlenderを運用している私たちにとっては”どの項目がどこにあったっけ?”と探すことが手間であります。

”Mesh to Points”ってどこや?
”Triangulate”ってなんや?
みたいなことがよくあるかと思います。


そこで、ボタン一発で表示言語を切り替えるアドオンを作りました。

bl_info = {
    "name": "Language Toggle",
    "author": "milvinae",
    "version": (1, 0),
    "blender": (4, 4, 0),
    "location": "メインメニュー > 切替",
    "description": "登録した2つの言語をワンクリックで切り替えるアドオン",
    "category": "Interface",
}

import bpy


# -----------------------------------------------------------------------------
# アドオンプリファレンス
# -----------------------------------------------------------------------------
class LANGUAGE_TOGGLE_Preferences(bpy.types.AddonPreferences):
    bl_idname = __name__

    lang1: bpy.props.StringProperty(
        name="言語1コード",
        description="例: 'ja_JP', 'en_US', 'fr_FR' など",
        default="ja_JP",
    )
    lang2: bpy.props.StringProperty(
        name="言語2コード",
        description="例: 'en_US', 'ja_JP' など",
        default="en_US",
    )

    def draw(self, context):
        layout = self.layout
        layout.label(text="切り替え対象の言語を設定します。")
        layout.prop(self, "lang1")
        layout.prop(self, "lang2")


# -----------------------------------------------------------------------------
# 言語切替オペレーター
# -----------------------------------------------------------------------------
class LANGUAGE_OT_toggle(bpy.types.Operator):
    bl_idname = "wm.language_toggle"
    bl_label = "言語切替"
    bl_description = "登録された2言語を切り替えます"

    def execute(self, context):
        prefs = bpy.context.preferences.addons[__name__].preferences
        lang1 = prefs.lang1
        lang2 = prefs.lang2

        current = bpy.context.preferences.view.language
        new_lang = lang2 if current == lang1 else lang1

        bpy.context.preferences.view.language = new_lang
        bpy.ops.wm.save_userpref()

        self.report({'INFO'}, f"言語を切り替えました: {new_lang}")
        return {'FINISHED'}


# -----------------------------------------------------------------------------
# メニュー
# -----------------------------------------------------------------------------
class LANGUAGE_MT_menu(bpy.types.Menu):
    bl_label = "切替"
    bl_idname = "LANGUAGE_MT_menu"

    def draw(self, context):
        layout = self.layout
        layout.operator("wm.language_toggle", text="言語切替", icon='FILE_REFRESH')

        prefs = bpy.context.preferences.addons[__name__].preferences
        layout.separator()
        layout.label(text=f"言語1: {prefs.lang1}")
        layout.label(text=f"言語2: {prefs.lang2}")


# -----------------------------------------------------------------------------
# メニューバーに追加
# -----------------------------------------------------------------------------
def draw_menu(self, context):
    self.layout.menu(LANGUAGE_MT_menu.bl_idname)


# -----------------------------------------------------------------------------
# 登録・解除
# -----------------------------------------------------------------------------
classes = (
    LANGUAGE_TOGGLE_Preferences,
    LANGUAGE_OT_toggle,
    LANGUAGE_MT_menu,
)

def register():
    for cls in classes:
        bpy.utils.register_class(cls)
    bpy.types.TOPBAR_MT_editor_menus.append(draw_menu)

def unregister():
    bpy.types.TOPBAR_MT_editor_menus.remove(draw_menu)
    for cls in reversed(classes):
        bpy.utils.unregister_class(cls)


if __name__ == "__main__":
    register()
  
<インストール方法>
1.上記コードをコピペして”language_toggle.py”でファイル保存
2.メインメニューの”編集(Edit)” - ”プリファレンス(preference)” - ”アドオン(add-ons)”
  右上の▼の”ディスクからインストール(install from disk)” から”language_toggle.py”をインストール

アドオンの詳細に、2つ言語を指定できる箇所があります。
切り替えボタンでこの2つの言語を即座に入れ替えることができる仕組みです。


インストールするとメインメニューに切り替えタブができていることが確認できます。
切替タブ内の”言語切替”を押すと・・・?


英語から日本語へ即座に切り替えることができました!
いちいちプリファレンスを開く必要がないのでとても快適です!

アレどこだっけ?この機能なんだっけ? な時にぜひご活用ください。



見ていただきありがとうございました!