Translation Popup now added.

Due to some werid thing in Blender 4.2+ where we just can't get descriptions to translate, we now tell the user some translations won't apply unto restart.
This commit is contained in:
Yusarina
2024-07-22 01:56:22 +01:00
parent cce7e986bb
commit ee84ae640a
5 changed files with 43 additions and 5 deletions
+6 -1
View File
@@ -12,7 +12,12 @@ def register():
default=default_language, default=default_language,
update=update_language update=update_language
) )
bpy.types.Scene.avatar_toolkit_language_changed = bpy.props.BoolProperty(default=False)
def unregister(): def unregister():
if hasattr(bpy.types.Scene, "avatar_toolkit_language"): if hasattr(bpy.types.Scene, "avatar_toolkit_language"):
del bpy.types.Scene.avatar_toolkit_language del bpy.types.Scene.avatar_toolkit_language
if hasattr(bpy.types.Scene, "avatar_toolkit_language_changed"):
del bpy.types.Scene.avatar_toolkit_language_changed
+4 -2
View File
@@ -87,8 +87,10 @@ def update_language(self, context):
print(f"Updating language to: {self.avatar_toolkit_language}") # Debug print print(f"Updating language to: {self.avatar_toolkit_language}") # Debug print
save_preference("language", int(self.avatar_toolkit_language)) save_preference("language", int(self.avatar_toolkit_language))
load_translations() load_translations()
# Reload the addon # Set a flag to indicate that a language change has occurred
bpy.ops.script.reload() context.scene.avatar_toolkit_language_changed = True
# Show popup after language change
bpy.ops.avatar_toolkit.translation_restart_popup('INVOKE_DEFAULT')
# Initial load of translations # Initial load of translations
print("Performing initial load of translations") # Debug print print("Performing initial load of translations") # Debug print
+5 -1
View File
@@ -31,7 +31,11 @@
"Tools.convert_to_resonite.desc": "Converts bone names on a model to names compatable with Resonite", "Tools.convert_to_resonite.desc": "Converts bone names on a model to names compatable with Resonite",
"Settings.label": "Settings", "Settings.label": "Settings",
"Settings.language.label": "Language", "Settings.language.label": "Language",
"Settings.language.desc": "Select the language for the addon's UI" "Settings.language.desc": "Select the language for the addon's UI",
"Settings.translation_restart_popup.label": "Translation Update",
"Settings.translation_restart_popup.description": "Information about translation updates",
"Settings.translation_restart_popup.message1": "Some translations may not apply",
"Settings.translation_restart_popup.message2": "until you restart Blender."
} }
} }
+5 -1
View File
@@ -31,6 +31,10 @@
"Tools.convert_to_resonite.desc": "モデルのボーン名をResoniteと互換性のある名前に変換します", "Tools.convert_to_resonite.desc": "モデルのボーン名をResoniteと互換性のある名前に変換します",
"Settings.label": "設定", "Settings.label": "設定",
"Settings.language.label": "言語", "Settings.language.label": "言語",
"Settings.language.desc": "アドオンのUI言語を選択してください" "Settings.language.desc": "アドオンのUI言語を選択してください",
"Settings.translation_restart_popup.label": "翻訳の更新",
"Settings.translation_restart_popup.description": "翻訳の更新に関する情報",
"Settings.translation_restart_popup.message1": "一部の翻訳は適用されない場合があります",
"Settings.translation_restart_popup.message2": "Blenderを再起動するまで。"
} }
} }
+23
View File
@@ -15,3 +15,26 @@ class AvatarToolkitSettingsPanel(bpy.types.Panel):
def draw(self, context): def draw(self, context):
layout = self.layout layout = self.layout
layout.prop(context.scene, "avatar_toolkit_language", text=t("Settings.language.label")) layout.prop(context.scene, "avatar_toolkit_language", text=t("Settings.language.label"))
@register_wrap
class AVATAR_TOOLKIT_OT_translation_restart_popup(bpy.types.Operator):
bl_idname = "avatar_toolkit.translation_restart_popup"
bl_label = t("Settings.translation_restart_popup.label")
bl_description = t("Settings.translation_restart_popup.description")
bl_options = {'INTERNAL'}
def execute(self, context):
if context.scene.avatar_toolkit_language_changed:
# Reload the addon after the popup is closed
bpy.ops.script.reload()
context.scene.avatar_toolkit_language_changed = False
return {'FINISHED'}
def invoke(self, context, event):
return context.window_manager.invoke_props_dialog(self, width=300)
def draw(self, context):
layout = self.layout
layout.label(text=t("Settings.translation_restart_popup.message1"))
layout.label(text=t("Settings.translation_restart_popup.message2"))