From 3f5b2f2d796c6f48de99a906df87e88744c36c7e Mon Sep 17 00:00:00 2001 From: Yusarina Date: Thu, 25 Jul 2024 03:46:13 +0100 Subject: [PATCH] Finale Translations --- functions/atlas_materials.py | 9 ++-- resources/translations/en_US.json | 4 ++ resources/translations/ja_JP.json | 85 +++++++++++++++++++++++++++---- ui/quick_access.py | 2 +- ui/tools.py | 2 - 5 files changed, 84 insertions(+), 18 deletions(-) diff --git a/functions/atlas_materials.py b/functions/atlas_materials.py index d1001aa..4c5bf83 100644 --- a/functions/atlas_materials.py +++ b/functions/atlas_materials.py @@ -10,10 +10,7 @@ from bpy.types import Material, Operator, Context, Object, Image, Mesh, MeshUVLo from ..core.register import register_wrap from ..core.common import SceneMatClass, material_list_bool from ..core.packer.rectangle_packer import MaterialImageList, BinPacker - - - - +from ..functions.translations import t def scale_images_to_largest(images:list[Image]) -> set: print([image.name for image in images]) @@ -270,11 +267,11 @@ class Atlas_Materials(Operator): mesh.materials.append(atlased_mat.material) - self.report({'INFO'}, t("TextureAtlas.atlas_completed")) + self.report({'INFO'}, t("TextureAtlas.atlas_completed")) return {"FINISHED"} except Exception as e: self.report({'ERROR'}, t("TextureAtlas.atlas_error")) raise e - return {"FINISHED"} + return {"FINISHED"} \ No newline at end of file diff --git a/resources/translations/en_US.json b/resources/translations/en_US.json index f5f3ad3..8d6f720 100644 --- a/resources/translations/en_US.json +++ b/resources/translations/en_US.json @@ -20,6 +20,7 @@ "Quick_Access.import_pmd": "Import PMD", "Quick_Access.import_pmd.desc": "Import MMD PMD Model", "Quick_Access.export_menu.label": "Export Menu", + "Quick_Access.export_menu.desc": "Export to a supported format", "Quick_Access.select_export.label": "Select Export Method", "Quick_Access.select_export_resonite.label": "Resonite", "Quick_Access.export_fbx.label": "Export FBX", @@ -48,6 +49,8 @@ "Optimization.processing_shapekey": "Processing shapekey \"{shapekeyname}\" on mesh \"{mesh_name}\"", "Optimization.processing_mesh_no_shapekeys": "Processing mesh with no shapekeys named \"{mesh_name}\"", "Optimization.remove_doubles_completed": "Remove doubles operation completed", + "Optimization.select_armature": "Please select an armature", + "Tools.select_armature": "Please select an armature", "Tools.label": "Tools", "Tools.tools_title.label": "Tools", "Tools.convert_to_resonite.label": "Convert to Resonite", @@ -59,6 +62,7 @@ "Tools.no_armature_selected": "No armature selected", "Tools.bones_translated_with_fails": "Failed to translate {translate_bone_fails} bones to humanoid names. Adding \"\" to their names.", "Tools.bones_translated_success": "Successfully translated all bones to humanoid names", + "Tools.import_any_model.desc": "Import any supported model, FBX, SMD, DMX, GLTF, PMD, PMX and more.", "TextureAtlas.label": "Texture Atlasing", "TextureAtlas.material_list_label": "Texture Atlas Material List Material", "TextureAtlas.reload_list": "Reload Texture Atlas Material List", diff --git a/resources/translations/ja_JP.json b/resources/translations/ja_JP.json index 0e9763e..fcbf679 100644 --- a/resources/translations/ja_JP.json +++ b/resources/translations/ja_JP.json @@ -1,9 +1,13 @@ { - "authors": ["Avatar Toolkit Team"], + "authors": ["Avatar Toolkit チーム"], "messages": { "Language.auto": "自動", - "Language.en_US": "英語", + "Language.en_US": "English", "Language.ja_JP": "日本語", + "AvatarToolkit.label": "アバターツールキット", + "AvatarToolkit.welcome": "アバターツールキットへようこそ、これは", + "AvatarToolkit.description": "Blenderでアバターを作成・編集するためのツールです。", + "AvatarToolkit.alpha_warning": "これは早期アルファ版なので、バグや問題が予想されます。", "Quick_Access.label": "クイックアクセス", "Quick_Access.import_export.label": "インポート/エクスポート", "Quick_Access.options": "クイックアクセスオプション", @@ -16,10 +20,14 @@ "Quick_Access.import_pmd": "PMDをインポート", "Quick_Access.import_pmd.desc": "MMD PMDモデルをインポート", "Quick_Access.export_menu.label": "エクスポートメニュー", + "Quick_Access.export_menu.desc": "サポートされているフォーマットにエクスポート", "Quick_Access.select_export.label": "エクスポート方法を選択", "Quick_Access.select_export_resonite.label": "Resonite", + "Quick_Access.export_fbx.label": "FBXをエクスポート", + "Quick_Access.export_fbx.desc": "モデルをFBXとしてエクスポート", + "Quick_Access.import_success": "モデルが正常にインポートされました", "Export.resonite.label": "Resoniteにエクスポート", - "Export.resonite.desc": "すべてのアニメーションとマテリアルを含むGLBをエクスポート。アニメーションデータについては以下を参照:", + "Export.resonite.desc": "すべてのアニメーションとマテリアルを含むGLBをエクスポートします。アニメーションデータについては以下を参照:", "Optimization.label": "最適化", "Optimization.options.label": "最適化オプション", "Optimization.combine_materials.label": "マテリアルを結合", @@ -28,16 +36,66 @@ "Optimization.join_all_meshes.desc": "すべてのメッシュを1つに結合", "Optimization.join_selected_meshes.label": "選択したメッシュを結合", "Optimization.join_selected_meshes.desc": "現在選択されているすべてのメッシュを1つに結合", + "Optimization.remove_doubles_safely.label": "安全に重複頂点を削除", + "Optimization.remove_doubles_safely.desc": "口などの部分が融合しないように注意しながら、すべてのメッシュの重複頂点を削除", + "Optimization.no_armature_selected": "アーマチュアが選択されていません", + "Optimization.no_meshes_found": "選択されたアーマチュアにメッシュが見つかりません", + "Optimization.materials_combined": "{num_combined}個のマテリアルを結合しました", + "Optimization.meshes_joined": "メッシュが正常に結合されました", + "Optimization.no_mesh_selected": "メッシュオブジェクトが選択されていません", + "Optimization.select_at_least_two_meshes": "少なくとも2つのメッシュオブジェクトを選択してください", + "Optimization.selected_meshes_joined": "選択されたメッシュが正常に結合されました", + "Optimization.vertex_excluded": "シェイプキーのインデックス\"{index}\"の頂点が移動しているため、重複マージから除外しました!", + "Optimization.processing_shapekey": "メッシュ\"{mesh_name}\"のシェイプキー\"{shapekeyname}\"を処理中", + "Optimization.processing_mesh_no_shapekeys": "シェイプキーのないメッシュ\"{mesh_name}\"を処理中", + "Optimization.remove_doubles_completed": "重複頂点の削除が完了しました", + "Optimization.select_armature": "アーマチュアを選択してください", + "Tools.select_armature": "アーマチュアを選択してください", + "Tools.label": "ツール", "Tools.tools_title.label": "ツール", "Tools.convert_to_resonite.label": "Resoniteに変換", - "Tools.convert_to_resonite.desc": "モデルのボーン名をResoniteと互換性のある名前に変換", + "Tools.convert_to_resonite.desc": "モデルのボーン名をResoniteと互換性のある名前に変換します", + "Tools.create_digitigrade_legs.label": "デジタイグレード脚を作成", + "Tools.create_digitigrade_legs.desc": "選択したボーンチェーンからデジタイグレード脚を作成", + "Tools.digitigrade_legs.error.bone_format": "ボーンフォーマットが正しくありません!4つの連続したボーンのチェーンを選択してください!", + "Tools.digitigrade_legs.success": "デジタイグレード脚が正常に作成されました", + "Tools.no_armature_selected": "アーマチュアが選択されていません", + "Tools.bones_translated_with_fails": "{translate_bone_fails}個のボーンをヒューマノイド名に変換できませんでした。それらの名前に\"\"を追加しています。", + "Tools.bones_translated_success": "すべてのボーンをヒューマノイド名に正常に変換しました", + "Tools.import_any_model.desc": "FBX、SMD、DMX、GLTF、PMD、PMXなど、サポートされているすべてのモデルをインポートします。", + "TextureAtlas.label": "テクスチャアトラス", + "TextureAtlas.material_list_label": "テクスチャアトラスマテリアルリストマテリアル", + "TextureAtlas.reload_list": "テクスチャアトラスマテリアルリストを再読み込み", + "TextureAtlas.loaded_list": "テクスチャアトラスマテリアルリストを読み込みました", + "TextureAtlas.atlas_materials": "アトラスマテリアル", + "TextureAtlas.atlas_materials_desc": "モデルを最適化するためにマテリアルをアトラス化", + "TextureAtlas.atlas_completed": "テクスチャアトラスの作成が完了しました", + "TextureAtlas.atlas_error": "テクスチャアトラスの作成中にエラーが発生しました", "VisemePanel.label": "ビセーム", + "VisemePanel.select_mesh": "メッシュを選択", + "VisemePanel.mouth_a.label": "口 A", + "VisemePanel.mouth_a.desc": "'A'の口の形のシェイプキー", + "VisemePanel.mouth_o.label": "口 O", + "VisemePanel.mouth_o.desc": "'O'の口の形のシェイプキー", + "VisemePanel.mouth_ch.label": "口 CH", + "VisemePanel.mouth_ch.desc": "'CH'の口の形のシェイプキー", + "VisemePanel.shape_intensity": "シェイプの強度", + "VisemePanel.shape_intensity_desc": "ビセームシェイプキーの強度", + "VisemePanel.create_visemes": "ビセームを作成", "VisemePanel.error.noMesh": "メッシュが選択されていません", "VisemePanel.error.noShapekeys": "選択されたメッシュにシェイプキーがありません", + "VisemePanel.error.selectMesh": "ビセームを作成するメッシュを選択してください", + "VisemePanel.error.noArmature": "アーマチュアが選択されていません", "VisemePanel.info.selectMesh": "ビセームを作成するメッシュを選択してください", - "VisemePanel.mouth_a.label": "口 A", - "VisemePanel.mouth_o.label": "口 O", - "VisemePanel.mouth_ch.label": "口 CH", + "VisemePanel.start_viseme_creation": "ビセーム作成を開始しています...", + "VisemePanel.selected_shapes": "選択されたシェイプ: A={shape_a}, O={shape_o}, CH={shape_ch}", + "VisemePanel.creating_viseme": "ビセームを作成中: {viseme_name}", + "VisemePanel.sorting_shapekeys": "シェイプキーをソート中...", + "VisemePanel.viseme_creation_completed": "ビセーム作成が完了しました。", + "VisemePanel.creating_viseme_detail": "ビセームを作成中: {viseme_name}", + "VisemePanel.removing_existing_viseme": "既存のビセームを削除中: {viseme_name}", + "VisemePanel.mixing_shape": "シェイプをミックス中: {shape_name} 値: {value}", + "VisemePanel.viseme_created_successfully": "ビセーム {viseme_name} が正常に作成されました", "AutoVisemeButton.label": "ビセームを作成", "AutoVisemeButton.desc": "シェイプキーに基づいて自動的にビセームを作成", "AutoVisemeButton.error.noShapekeys": "シェイプキーが見つかりません", @@ -45,10 +103,19 @@ "AutoVisemeButton.success": "ビセームが正常に作成されました", "Settings.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を再起動するまで。" + "Settings.translation_restart_popup.message2": "Blenderを再起動するまで。", + "Importing.need_importer": "{extension}タイプに必要なインポーターがありません!インポーター検索用のウェブブラウザを開いています...", + "Importer.mmd_anim_importer.label": "MMDアニメーション", + "Importer.mmd_anim_importer.desc": "MMDアニメーション(.vmd)をインポート", + "Importing.importer_search_term": "https://search.brave.com/search?q=blender+{extension}+importer+addon&source=web", + "Importer.export_resonite.label": "Resoniteにエクスポート", + "Importer.export_resonite.desc": "GLTFとしてResoniteにエクスポートします。Blenderでモデルが正しいスケールであることを確認し、Resoniteでメートル単位でインポートしてください。", + "Importer.export_vrchat.label": "VRChatにエクスポート", + "Importer.export_vrchat.desc": "VRChatにエクスポートします。ChilloutVRでも動作する可能性があります。Catsのエクスポートに似ています。" } } + diff --git a/ui/quick_access.py b/ui/quick_access.py index c3503f9..cf767a0 100644 --- a/ui/quick_access.py +++ b/ui/quick_access.py @@ -39,7 +39,7 @@ class AvatarToolkitQuickAccessPanel(bpy.types.Panel): class AVATAR_TOOLKIT_OT_export_menu(bpy.types.Operator): bl_idname = "avatar_toolkit.export_menu" bl_label = t("Quick_Access.export_menu.label") - bl_description = t("Quick_Access.import_pmx.desc") + bl_description = t("Quick_Access.export_menu.desc") @classmethod def poll(cls, context): diff --git a/ui/tools.py b/ui/tools.py index a660101..d139d7d 100644 --- a/ui/tools.py +++ b/ui/tools.py @@ -28,8 +28,6 @@ class AvatarToolkitToolsPanel(bpy.types.Panel): row.scale_y = 1.5 row.operator("avatar_toolkit.convert_to_resonite", text=t("Tools.convert_to_resonite.label")) row = layout.row(align=True) - row.operator("avatar_toolkit.remove_doubles_safely", text=t("Tools.remove_doubles_safely.label")) - row = layout.row(align=True) row.operator(CreateDigitigradeLegs.bl_idname, text=t("Tools.create_digitigrade_legs.label")) else: layout.label(text=t("Tools.select_armature"))