From 6484adedaa5733d6672cab45aff71c983aadfc18 Mon Sep 17 00:00:00 2001 From: Yusarina Date: Tue, 26 Nov 2024 04:16:03 +0000 Subject: [PATCH] Fixes - Fixed issue where blender would error when exiting due to property being register twice. - Fixes missing strings. - Attempt at fixes properties not clearing correctly. - Updated Japanese json file with all latest strings. --- core/properties.py | 6 - core/register.py | 11 +- resources/translations/en_US.json | 18 +- resources/translations/ja_JP.json | 300 ++++++++++++++++++++++-------- 4 files changed, 249 insertions(+), 86 deletions(-) diff --git a/core/properties.py b/core/properties.py index f7656af..58cd396 100644 --- a/core/properties.py +++ b/core/properties.py @@ -23,12 +23,6 @@ def register() -> None: description=t("VisemePanel.selected_mesh.desc") ))) - register_property((bpy.types.Scene, "merge_armature_source", bpy.props.EnumProperty( - items=get_armatures_that_are_not_selected, - name=t("MergeArmatures.selected_armature.label"), - description=t("MergeArmatures.selected_armature.label") - ))) - register_property((bpy.types.Object, "material_group_expanded", bpy.props.BoolProperty( name="Expand Material Group", description="Show/hide materials for this mesh", diff --git a/core/register.py b/core/register.py index 1862e99..915c372 100644 --- a/core/register.py +++ b/core/register.py @@ -26,10 +26,19 @@ def register_properties(): setattr(prop[0], prop[1], prop[2]) else: prop() + +def clear_registration(): + __bl_classes.clear() + __bl_ordered_classes.clear() + __bl_props.clear() def unregister_properties(): for prop in reversed(__bl_props): - delattr(prop[0], prop[1]) + try: + delattr(prop[0], prop[1]) + except AttributeError: + continue + clear_registration() #- @989onan had to add this from Cats. This is extremely important else you will be screamed at by register order issues! # Find order to register to solve dependencies diff --git a/resources/translations/en_US.json b/resources/translations/en_US.json index 31c1cf1..5d045e2 100644 --- a/resources/translations/en_US.json +++ b/resources/translations/en_US.json @@ -169,6 +169,10 @@ "Tools.remove_zero_weight_bones.threshold.label": "Weight Threshold", "Tools.remove_zero_weight_bones.threshold.desc": "If a bone is not weighted to any part of any mesh under the armature with a threshold greater than this, it is removed", "Tools.connect_bones.label": "Connect Bones", + "Tools.bone_tools.label": "Bone Tools", + "Tools.additional_tools.label": "Additional Tools", + "Tools.merge_twist_bones.label": "Merge Twist Bones", + "Tools.merge_twist_bones.desc": "Merge twist bones into their parent bones", "Tools.connect_bones.desc": "Connect bones with their respective children", "Tools.connect_bones.invalid_armature": "Invalid armature selected", "Tools.connect_bones.min_distance.label": "Minimum Distance", @@ -223,6 +227,9 @@ "VisemePanel.start_viseme_creation": "Starting viseme creation...", "VisemePanel.viseme_created_successfully": "Viseme {viseme_name} created successfully", "VisemePanel.viseme_creation_completed": "Viseme creation completed.", + "MMDOptions.title": "MMD Options", + "MMDOptions.no_armature_selected": "No armature selected", + "MMDOptions.label": "MMD Options", "MMDOptions.cleanup_mesh.label": "Cleanup Mesh", "MMDOptions.cleanup_mesh.desc": "Clean up the mesh by removing empty objects, unused vertex groups, unused vertices, and empty shape keys", "MMDOptions.removing_empty_objects": "Removing empty objects", @@ -249,7 +256,8 @@ "MMDOptions.renaming_bones": "Renaming bones", "MMDOptions.armature_optimization_complete": "Armature optimization complete", "MMDOptions.convert_materials.label": "Convert Materials", - "MMDOptions.convert_materials.desc": "Convert materials to use Principled BSDF shader and fix MMD and VRM shaders", "MMDOptions.converting_materials": "Converting materials for {name}", + "MMDOptions.convert_materials.desc": "Convert materials to use Principled BSDF shader and fix MMD and VRM shaders", + "MMDOptions.converting_materials": "Converting materials for {name}", "Updater.label": "Updater", "Updater.CheckForUpdateButton.label": "Check for Updates", "Updater.CheckForUpdateButton.label_alt": "No Updates Available", @@ -282,7 +290,11 @@ "CreditsSupport.help_text1": "Check out our wiki first, we HIGHLY encourage", "CreditsSupport.help_text2": "that you read it before seeking further support.", "CreditsSupport.wiki_button": "Wiki", - "CreditsSupport.discord_button": "Join Discord" - + "CreditsSupport.discord_button": "Join Discord", + "TextureAtlas.include_in_atlas": "Include in Atlas", + "TextureAtlas.include_in_atlas_desc": "Include this material in the texture atlas", + "Scene.avatar_toolkit_updater_version_list.name": "Version List", + "Scene.avatar_toolkit_updater_version_list.description": "List of available versions to update to", + "TextureAtlas.no_materials_selected": "No materials selected for atlas" } } diff --git a/resources/translations/ja_JP.json b/resources/translations/ja_JP.json index 2b525e3..57dc4c2 100644 --- a/resources/translations/ja_JP.json +++ b/resources/translations/ja_JP.json @@ -1,150 +1,298 @@ { "authors": ["Avatar Toolkit Team"], "messages": { - "AutoVisemeButton.desc": "シェイプキーに基づいて自動的にビセームを作成する", + "AutoVisemeButton.desc": "シェイプキーに基づいて自動的にビセムを作成", "AutoVisemeButton.error.noShapekeys": "シェイプキーが見つかりません", "AutoVisemeButton.error.selectShapekeys": "シェイプキーを選択してください", - "AutoVisemeButton.label": "ビセームを作成", - "AutoVisemeButton.success": "ビセームが正常に作成されました", - "AvatarToolkit.alpha_warning": "これは早期アルファ版であり、バグや問題が発生する可能性があります。", - "AvatarToolkit.description": "Blenderでアバターを作成および編集するための", - "AvatarToolkit.label": "Avatar Toolkit", - "AvatarToolkit.welcome": "Avatar Toolkitへようこそ、", - "Export.resonite.desc": "すべてのアニメーションとマテリアルを含むGLBをエクスポートします。アニメーションデータについては以下を参照してください:", + "AutoVisemeButton.label": "ビセムを作成", + "AutoVisemeButton.success": "ビセムの作成に成功しました", + "AvatarToolkit.label": "Avatar Toolkit (アルファ版)", + "AvatarToolkit.desc1": "Avatar Toolkitは早期アクセス段階です", + "AvatarToolkit.desc2": "問題が発生する可能性があります。", + "AvatarToolkit.desc3": "問題を見つけた場合はGithubで報告してください。", + "Export.resonite.desc": "アニメーションとマテリアルを含むGLBをエクスポート。アニメーションデータについては:", "Export.resonite.label": "Resoniteにエクスポート", - "Importer.export_resonite.desc": "ResoniteにGLTFとしてエクスポートします。モデルがBlenderで正しいスケールであることを確認し、Resoniteでメートル単位でインポートしてください。", + "Importer.export_resonite.desc": "GLTFとしてResoniteにエクスポート。Blenderでモデルのスケールを確認し、Resoniteではメートル単位でインポートしてください。", "Importer.export_resonite.label": "Resoniteにエクスポート", - "Importer.export_vrchat.desc": "VRChatにエクスポートします。ChilloutVRでも動作する可能性があります。Catsのエクスポートに似ています。", + "Importer.export_vrchat.desc": "VRChatにエクスポート(ChilloutVRでも動作する可能性あり)。Catsのエクスポートに似ています。", "Importer.export_vrchat.label": "VRChatにエクスポート", "Importer.mmd_anim_importer.desc": "MMDアニメーション(.vmd)をインポート", "Importer.mmd_anim_importer.label": "MMDアニメーション", - "Importing.importer_search_term": "https://search.brave.com/search?q=Blender+{extension}+インポーターアドオン&source=web", - "Importing.need_importer": "{extension}タイプに必要なインポーターがありません!インポーター検索用のウェブブラウザを開きます...", + "Importing.importer_search_term": "https://search.brave.com/search?q=blender+{extension}+importer+addon&source=web", + "Importing.need_importer": "{extension}タイプに必要なインポーターがありません!インポーター検索用にウェブブラウザを開きます...", "Language.auto": "自動", "Language.en_US": "English", "Language.ja_JP": "日本語", "Optimization.applying_transforms": "トランスフォームを適用中...", - "Optimization.cleaning_material_names": "マテリアル名をクリーニング中...", - "Optimization.cleaning_material_slots": "マテリアルスロットをクリーニング中...", - "Optimization.clearing_unused_data": "未使用データをクリア中...", - "Optimization.combine_materials.desc": "ドローコールを減らしパフォーマンスを向上させるために類似したマテリアルを結合する", + "Optimization.cleaning_material_names": "マテリアル名を整理中...", + "Optimization.cleaning_material_slots": "マテリアルスロットを整理中...", + "Optimization.clearing_unused_data": "未使用データを削除中...", + "Optimization.materials_optimization_report": "マテリアル最適化完了:{num_combined}個のマテリアルを結合、{num_cleaned_slots}個のマテリアルスロットを整理、{num_cleaned_names}個のマテリアル名を整理、{num_removed_data_blocks}個の未使用データブロックを削除しました", + "Optimization.combine_materials.desc": "描画コールを減らしパフォーマンスを向上させるため、類似したマテリアルを結合", "Optimization.combine_materials.label": "マテリアルを結合", "Optimization.consolidating_materials": "マテリアルを統合中...", "Optimization.finalizing": "最終処理中...", "Optimization.fixing_uv_coordinates": "UV座標を修正中...", - "Optimization.join_all_meshes.desc": "ドローコールを減らすためにすべてのメッシュを1つのオブジェクトにマージする", + "Optimization.join_all_meshes.desc": "描画コールを減らすため、すべてのメッシュを1つのオブジェクトに結合", "Optimization.join_all_meshes.label": "すべてのメッシュを結合", - "Optimization.join_error": "メッシュ結合中にエラーが発生しました", + "Optimization.join_error": "メッシュ結合中にエラーが発生", "Optimization.join_operation_failed": "結合操作に失敗しました", - "Optimization.join_selected_meshes.desc": "選択したメッシュのみを1つのオブジェクトにマージする", + "Optimization.join_selected_meshes.desc": "選択したメッシュのみを1つのオブジェクトに結合", "Optimization.join_selected_meshes.label": "選択したメッシュを結合", - "Optimization.joinmeshes.label": "メッシュを結合:", + "Optimization.joinmeshes.label": "メッシュの結合:", "Optimization.joining_meshes": "メッシュを結合中...", "Optimization.label": "最適化", "Optimization.material_attribute_mismatch": "マテリアル{material_name}の属性が一致しません。スキップします", "Optimization.materials_combined": "{num_combined}個のマテリアルを結合しました", - "Optimization.meshes_joined": "メッシュが正常に結合されました", + "Optimization.meshes_joined": "メッシュの結合に成功しました", "Optimization.no_armature_selected": "アーマチュアが選択されていません", "Optimization.no_mesh_selected": "メッシュオブジェクトが選択されていません", - "Optimization.no_meshes_found": "選択されたアーマチュアに対応するメッシュが見つかりません", + "Optimization.no_meshes_found": "選択したアーマチュアにメッシュが見つかりません", "Optimization.options.label": "最適化:", "Optimization.preparing_meshes": "メッシュを準備中...", "Optimization.processing_mesh_no_shapekeys": "シェイプキーのないメッシュ「{mesh_name}」を処理中", "Optimization.processing_shapekey": "メッシュ「{mesh_name}」のシェイプキー「{shapekeyname}」を処理中", "Optimization.remove_doubles_completed": "重複頂点の削除が完了しました", - "Optimization.remove_doubles_safely.desc": "口の形状などの重要な特徴を保持しながら重複頂点を削除する", + "Optimization.remove_doubles_safely.desc": "口の形状などの重要な特徴を保持しながら重複頂点を削除します。\n素早い解決策ですが、動く頂点は結合しません。", "Optimization.remove_doubles_safely.label": "安全に重複頂点を削除", - "Optimization.select_armature": "アーマチュアを選択してください", - "Optimization.select_at_least_two_meshes": "少なくとも2つのメッシュオブジェクトを選択してください", - "Optimization.selected_meshes_joined": "選択したメッシュが正常に結合されました", - "Optimization.selecting_meshes": "メッシュを選択中...", - "Optimization.transform_apply_failed": "トランスフォームの適用に失敗しました", - "Optimization.vertex_excluded": "シェイプキーのインデックス「{index}」に移動した頂点があります。重複マージから除外します!", + "Optimization.remove_doubles_safely_advanced.label": "高度な安全重複頂点削除", + "Optimization.remove_doubles_safely_advanced.desc": "口の形状などの重要な特徴を保持しながら重複頂点を削除します。\n基本版と異なり、動く頂点も結合しますがシェイプキーは保持します。\n例:唇を閉じることはありませんが、唇を構成する分割されたポリゴンは修正します。", + "UVTools.align_uv_to_target.warning.too_much": "エラー!選択が多すぎます。2つのエッジを選択していますか?", + "UVTools.align_uv_to_target.warning.need_a_line": "各選択オブジェクトにUVポイントの1行が必要です。オブジェクト「{obj}」がこの要件を満たしていません!", + "avatar_toolkit.align_uv_edges_to_target.label": "UVエッジをターゲットに合わせる", + "avatar_toolkit.align_uv_edges_to_target.desc": "選択された各メッシュのUVポイントの線をアクティブメッシュの選択されたUVポイントの線に合わせます。\nあるモデルのテクスチャを別のモデルに適用する際に便利です。\n2Dカーソルからの距離を使用して各メッシュのUVポイントの線の開始点を識別します。", + "Quick_Access.selected_armature.label": "選択されたアーマチュア", + "Quick_Access.selected_armature.desc": "Avatar Toolkitの操作対象となる現在の「ターゲット」アーマチュア", "Quick_Access.export": "エクスポート", "Quick_Access.export_fbx.desc": "モデルをFBXとしてエクスポート", - "Quick_Access.export_fbx.label": "FBXをエクスポート", - "Quick_Access.export_menu.desc": "サポートされているフォーマットにエクスポート", + "Quick_Access.export_fbx.label": "FBXエクスポート", + "Quick_Access.export_menu.desc": "サポートされている形式にエクスポート", "Quick_Access.export_menu.label": "エクスポートメニュー", "Quick_Access.import": "インポート", "Quick_Access.import_export.label": "インポート/エクスポート:", "Quick_Access.import_menu.desc": "モデルをインポート", "Quick_Access.import_menu.label": "インポートメニュー", - "Quick_Access.import_pmd": "PMDをインポート", + "Quick_Access.import_pmd": "PMDインポート", "Quick_Access.import_pmd.desc": "MMD PMDモデルをインポート", - "Quick_Access.import_pmx": "PMXをインポート", + "Quick_Access.import_pmx": "PMXインポート", "Quick_Access.import_pmx.desc": "MMD PMXモデルをインポート", - "Quick_Access.import_success": "モデルが正常にインポートされました", + "Quick_Access.import_success": "モデルのインポートに成功しました", "Quick_Access.label": "クイックアクセス", "Quick_Access.options": "クイックアクセス:", "Quick_Access.select_armature": "アーマチュアを選択:", + "Quick_Access.apply_armature_failed": "シェイプキーの結合段階でポーズをアーマチュアに適用できませんでした!", + "Quick_Access.apply_pose_as_rest.desc": "現在のポーズをデフォルトの休止ポーズにします。", + "Quick_Access.stop_pose_mode.desc": "ポーズモードを終了し、ポーズモードの全ての表示ボーンのポーズをクリアします。", + "Quick_Access.apply_pose_as_rest.label": "ポーズを休止ポーズとして適用", + "Quick_Access.apply_pose_as_shapekey.desc": "現在のポーズを後で有効化できるシェイプキーとして作成します。\n顎の開閉位置を顔の動きのシェイプキーとして適用する際に便利です。", + "Quick_Access.apply_pose_as_shapekey.label": "ポーズをシェイプキーとして適用", + "Quick_Access.stop_pose_mode.label": "ポーズモードを終了", + "Quick_Access.start_pose_mode.desc": "Avatar Toolkitのターゲットアーマチュアのポーズモードを開始します。", + "Quick_Access.start_pose_mode.label": "ポーズモードを開始", "Quick_Access.select_export.label": "エクスポート方法を選択", "Quick_Access.select_export_resonite.label": "Resonite", "Settings.label": "設定", "Settings.language.desc": "アドオンのUI言語を選択", "Settings.language.label": "言語:", - "Settings.translation_restart_popup.description": "翻訳の更新に関する情報", + "Settings.translation_restart_popup.description": "翻訳の更新について", "Settings.translation_restart_popup.label": "翻訳の更新", - "Settings.translation_restart_popup.message1": "一部の翻訳は適用されない場合があります", - "Settings.translation_restart_popup.message2": "Blenderを再起動するまで。", + "Settings.translation_restart_popup.message1": "一部の翻訳はBlenderを再起動するまで", + "Settings.translation_restart_popup.message2": "適用されない場合があります。", "TextureAtlas.atlas_completed": "テクスチャアトラスの作成が完了しました", "TextureAtlas.atlas_error": "テクスチャアトラスの作成中にエラーが発生しました", "TextureAtlas.atlas_materials": "マテリアルをアトラス化", - "TextureAtlas.atlas_materials_desc": "モデルを最適化するためにマテリアルをアトラス化する", - "TextureAtlas.label": "テクスチャアトラス化", + "TextureAtlas.atlas_materials_desc": "モデルを最適化するためにマテリアルをアトラス化", + "TextureAtlas.label": "テクスチャアトラス", "TextureAtlas.loaded_list": "テクスチャアトラスマテリアルリストを読み込みました", "TextureAtlas.material_list_label": "テクスチャアトラスマテリアルリストのマテリアル", "TextureAtlas.reload_list": "テクスチャアトラスマテリアルリストを再読み込み", - "Tools.bones_translated_success": "すべての骨をヒューマノイド名に正常に変換しました", - "Tools.bones_translated_with_fails": "{translate_bone_fails}個の骨をヒューマノイド名に変換できませんでした。それらの名前に「」を追加します。", - "Tools.convert_to_resonite.desc": "モデルの骨の名前をResoniteと互換性のある名前に変換します", + "Tools.bones_translated_success": "すべてのボーンを正常にヒューマノイド名に変換しました", + "Tools.bones_translated_with_fails": "{translate_bone_fails}個のボーンをヒューマノイド名に変換できませんでした。名前に「」を追加します。", + "Tools.convert_to_resonite.desc": "モデルのボーン名をResonite互換の名前に変換", "Tools.convert_to_resonite.label": "Resoniteに変換", - "Tools.create_digitigrade_legs.desc": "選択した骨のチェーンからデジティグレード脚を作成する", - "Tools.create_digitigrade_legs.label": "デジティグレード脚を作成", - "Tools.digitigrade_legs.error.bone_format": "骨のフォーマットが正しくありません!4つの連続した骨のチェーンを選択してください!", - "Tools.digitigrade_legs.success": "デジティグレード脚が正常に作成されました", - "Tools.import_any_model.desc": "サポートされているモデル(FBX、SMD、DMX、GLTF、PMD、PMXなど)をインポートします。", + "Tools.create_digitigrade_legs.desc": "選択したボーンチェーンから獣脚を作成", + "Tools.create_digitigrade_legs.label": "獣脚を作成", + "Tools.digitigrade_legs.error.bone_format": "ボーンの形式が正しくありません!4つの連続したボーンのチェーンを選択してください!", + "Tools.digitigrade_legs.success": "獣脚の作成に成功しました", + "Tools.import_any_model.desc": "FBX、SMD、DMX、GLTF、PMD、PMXなど、サポートされているモデルをインポート", "Tools.import_any_model.label": "モデルをインポート", "Tools.label": "ツール", "Tools.no_armature_selected": "アーマチュアが選択されていません", "Tools.select_armature": "アーマチュアを選択してください", "Tools.tools_title.label": "ツール:", - "Tools.separate_by.label": "別:", + "Tools.separate_by.label": "分離方法:", "Tools.separate_by_materials.label": "マテリアルで分離", - "Tools.separate_by_materials.desc": "選択されたメッシュをマテリアルごとに分離します", - "Tools.separate_by_materials.success": "メッシュがマテリアルごとに正常に分離されました", - "Tools.separate_by_loose_parts.label": "バラバラの部分で分離", - "Tools.separate_by_loose_parts.desc": "選択されたメッシュをバラバラの部分ごとに分離します", - "Tools.separate_by_loose_parts.success": "メッシュがバラバラの部分ごとに正常に分離されました", + "Tools.separate_by_materials.desc": "選択したメッシュをマテリアルで分離", + "Tools.separate_by_materials.success": "メッシュをマテリアルで分離しました", + "Tools.separate_by_loose_parts.label": "分離パーツで分離", + "Tools.separate_by_loose_parts.desc": "選択したメッシュを分離パーツで分離", + "Tools.separate_by_loose_parts.success": "メッシュを分離パーツで分離しました", "Tools.apply_transforms.label": "トランスフォームを適用", - "Tools.apply_transforms.desc": "アーマチュアとそのメッシュに位置、回転、スケールを適用します", + "Tools.apply_transforms.desc": "アーマチュアとそのメッシュに位置、回転、スケールを適用", "Tools.apply_transforms.invalid_armature": "無効なアーマチュアが選択されています", - "Tools.apply_transforms.success": "アーマチュアとメッシュにトランスフォームが正常に適用されました", - "VisemePanel.create_visemes": "ビセームを作成", - "VisemePanel.creating_viseme": "ビセームを作成中:{viseme_name}", - "VisemePanel.creating_viseme_detail": "ビセームを作成中:{viseme_name}", - "VisemePanel.creating_visemes": "ビセームを作成中...", + "Tools.apply_transforms.success": "アーマチュアとメッシュにトランスフォームを適用しました", + "Tools.remove_unused_shapekeys.label": "未使用のシェイプキーを削除", + "Tools.remove_unused_shapekeys.tolerance.desc": "シェイプキーを保持する最小の頂点移動量\n(任意の座標での位置)", + "Tools.remove_unused_shapekeys.desc": "何も動かさないシェイプキーを削除します。\nカテゴリーシェイプキーは削除しません。\n(例:名前に「~」「-」「=」を含むもの)", + "Tools.remove_unused_shapekeys.tolerance.label": "位置の許容値", + "Tools.apply_shape_key.label": "シェイプキーをベースに適用", + "Tools.apply_shape_key.desc": "選択したシェイプキーをベースに適用し、デフォルトでオンにします。", + "Tools.apply_shape_key.error": "シェイプキーが何らかの理由でマージされませんでした!", + "Tools.remove_zero_weight_bones.success": "ウェイトのないボーンを削除しました", + "Tools.remove_zero_weight_bones.label": "ウェイトのないボーンを削除", + "Tools.remove_zero_weight_bones.desc": "閾値以下のウェイトを持つボーンをアーマチュアから削除します。", + "Tools.merge_bones_to_active.delete_old.desc": "マージ時に古いボーンを削除します。", + "Tools.merge_bones_to_active.delete_old.label": "古いボーンを削除", + "Tools.merge_bones_to_active.desc": "選択したボーンをアクティブなボーン(青または橙色で選択)にマージします。", + "Tools.merge_bones_to_active.label": "ボーンをアクティブなものにマージ", + "Tools.merge_bones_to_parents.delete_old.desc": "マージ時に古いボーンを削除します。", + "Tools.merge_bones_to_parents.delete_old.label": "古いボーンを削除", + "Tools.merge_bones_to_parents.desc": "選択した各ボーンをそれぞれの親ボーンにマージします。", + "Tools.merge_bones_to_parents.label": "ボーンを個別の親にマージ", + "Tools.remove_zero_weight_bones.threshold.label": "ウェイトの閾値", + "Tools.remove_zero_weight_bones.threshold.desc": "アーマチュア下のメッシュのどの部分にもこの閾値以上のウェイトがないボーンは削除されます", + "Tools.connect_bones.label": "ボーンを接続", + "Tools.bone_tools.label": "ボーンツール", + "Tools.additional_tools.label": "追加ツール", + "Tools.merge_twist_bones.label": "ツイストボーンをマージ", + "Tools.merge_twist_bones.desc": "ツイストボーンを親ボーンにマージ", + "Tools.connect_bones.desc": "ボーンをそれぞれの子ボーンと接続", + "Tools.connect_bones.invalid_armature": "無効なアーマチュアが選択されています", + "Tools.connect_bones.min_distance.label": "最小距離", + "Tools.connect_bones.min_distance.desc": "ボーンを接続する最小距離", + "Tools.connect_bones.success": "{bones_connected}個のボーンを接続しました", + "Tools.delete_bone_constraints.label": "ボーンの制約を削除", + "Tools.delete_bone_constraints.desc": "アーマチュアのボーンから全ての制約を削除", + "Tools.delete_bone_constraints.invalid_armature": "無効なアーマチュアが選択されています", + "Tools.delete_bone_constraints.success": "ボーンから{constraints_removed}個の制約を削除しました", + "Tools.convert_rigify_to_unity.label": "RigifyをUnityに変換", + "Tools.convert_rigify_to_unity.desc": "RigifyアーマチュアをUnityで使用できるように準備", + "Tools.convert_rigify_to_unity.success": "RigifyアーマチュアをUnity用に変換しました", + "VisemePanel.create_visemes": "ビセムを作成", + "VisemePanel.creating_viseme": "ビセムを作成中:{viseme_name}", + "VisemePanel.creating_viseme_detail": "ビセムを作成中:{viseme_name}", + "VisemePanel.creating_visemes": "ビセムを作成中...", "VisemePanel.error.noArmature": "アーマチュアが選択されていません", "VisemePanel.error.noMesh": "メッシュが選択されていません", - "VisemePanel.error.noShapekeys": "選択されたメッシュにシェイプキーがありません", - "VisemePanel.error.selectMesh": "ビセームを作成するメッシュを選択してください", - "VisemePanel.info.selectMesh": "ビセームを作成するメッシュを選択してください", - "VisemePanel.label": "ビセーム", - "VisemePanel.mixing_shape": "シェイプをミックス中:{shape_name}、値:{value}", - "VisemePanel.mouth_a.desc": "'A'の口の形状のシェイプキー", + "VisemePanel.error.noShapekeys": "選択したメッシュにシェイプキーがありません", + "VisemePanel.error.selectMesh": "ビセムを作成するメッシュを選択してください", + "VisemePanel.info.selectMesh": "ビセムを作成するメッシュを選択してください", + "VisemePanel.label": "ビセム", + "VisemePanel.mixing_shape": "シェイプを混合中:{shape_name} 値:{value}", + "VisemePanel.mouth_a.desc": "'A'の口の形のシェイプキー", "VisemePanel.mouth_a.label": "口 A", - "VisemePanel.mouth_ch.desc": "'CH'の口の形状のシェイプキー", + "VisemePanel.mouth_ch.desc": "'CH'の口の形のシェイプキー", "VisemePanel.mouth_ch.label": "口 CH", - "VisemePanel.mouth_o.desc": "'O'の口の形状のシェイプキー", + "VisemePanel.mouth_o.desc": "'O'の口の形のシェイプキー", "VisemePanel.mouth_o.label": "口 O", - "VisemePanel.removing_existing_viseme": "既存のビセームを削除中:{viseme_name}", - "VisemePanel.removing_existing_visemes": "既存のビセームを削除中...", + "VisemePanel.removing_existing_viseme": "既存のビセムを削除中:{viseme_name}", + "VisemePanel.removing_existing_visemes": "既存のビセムを削除中...", "VisemePanel.select_mesh": "メッシュを選択", - "VisemePanel.selected_shapes": "選択されたシェイプ:A={shape_a}、O={shape_o}、CH={shape_ch}", + "VisemePanel.selected_mesh.label": "選択されたメッシュ", + "VisemePanel.selected_mesh.desc": "ビセム操作用に現在選択されているメッシュ", + "VisemePanel.selected_shapes": "選択されたシェイプ:A={shape_a}, O={shape_o}, CH={shape_ch}", "VisemePanel.shape_intensity": "シェイプの強度", - "VisemePanel.shape_intensity_desc": "ビセームシェイプキーの強度", - "VisemePanel.sorting_shapekeys": "シェイプキーをソート中...", - "VisemePanel.start_viseme_creation": "ビセーム作成を開始...", - "VisemePanel.viseme_created_successfully": "ビセーム{viseme_name}が正常に作成されました", - "VisemePanel.viseme_creation_completed": "ビセーム作成が完了しました。" + "VisemePanel.shape_intensity_desc": "ビセムシェイプキーの強度", + "VisemePanel.sorting_shapekeys": "シェイプキーを並べ替え中...", + "VisemePanel.start_viseme_creation": "ビセム作成を開始...", + "VisemePanel.viseme_created_successfully": "ビセム{viseme_name}の作成に成功しました", + "VisemePanel.viseme_creation_completed": "ビセム作成が完了しました。", + "MergeArmatures.select_armature": "アーマチュアを選択してください", + "MergeArmatures.title.label": "アーマチュアのマージ:", + "MergeArmatures.label": "アーマチュアをマージ", + "MergeArmatures.selected_armature.label": "マージ元のアーマチュア", + "MergeArmatures.selected_armature.desc": "Avatar Toolkitのターゲットアーマチュアにマージされるアーマチュア", + "MergeArmatures.target_armature.label": "マージ先のアーマチュア", + "MergeArmatures.target_armature.desc": "アーマチュアのマージ先となるターゲットアーマチュア", + "MergeArmature.merge_armatures.label": "アーマチュアをマージ", + "MergeArmature.merge_armatures.desc": "{selected_armature_label}をAvatar Toolkitのターゲットアーマチュアにマージ", + "MergeArmature.merge_armatures.align_bones.label": "ボーンを整列", + "MergeArmature.merge_armatures.align_bones.desc": "マージ前にソースアーマチュアのボーンをターゲットアーマチュアに合わせて\nボーンを伸縮させます。", + "MergeArmature.merge_armatures.apply_transforms.label": "トランスフォームを適用", + "MergeArmature.merge_armatures.apply_transforms.desc": "マージ前にアーマチュアとそのメッシュにトランスフォームを適用します。", + "MMDOptions.optimize_armature.label": "アーマチュアを最適化", + "MMDOptions.optimize_armature.desc": "ボーンのロールの修正、ボーンの整列、ボーンの接続などでアーマチュアを最適化", + "MMDOptions.fixing_bone_rolls": "ボーンのロールを修正中", + "MMDOptions.aligning_bones": "ボーンを整列中", + "MMDOptions.connecting_bones": "ボーンを接続中", + "MMDOptions.deleting_bone_constraints": "ボーンの制約を削除中", + "MMDOptions.merging_bones_to_parents": "ボーンを親にマージ中", + "MMDOptions.reordering_bones": "ボーンを並べ替え中", + "MMDOptions.fixing_armature_names": "アーマチュア名を修正中", + "MMDOptions.renaming_bones": "ボーン名を変更中", + "MMDOptions.armature_optimization_complete": "アーマチュアの最適化が完了しました", + "MMDOptions.convert_materials.label": "マテリアルを変換", + "MMDOptions.convert_materials.desc": "マテリアルをPrincipled BSDFシェーダーを使用するように変換し、MMDとVRMシェーダーを修正", + "MMDOptions.converting_materials": "{name}のマテリアルを変換中", + "MMDOptions.title": "MMDオプション", + "MMDOptions.no_armature_selected": "アーマチュアが選択されていません", + "MMDOptions.label": "MMDオプション", + "MMDOptions.cleanup_mesh.label": "メッシュのクリーンアップ", + "MMDOptions.cleanup_mesh.desc": "空のオブジェクト、未使用の頂点グループ、未使用の頂点、空のシェイプキーを削除してメッシュをクリーンアップ", + "MMDOptions.removing_empty_objects": "空のオブジェクトを削除中", + "MMDOptions.removing_unused_vertex_groups": "未使用の頂点グループを削除中", + "MMDOptions.removing_unused_vertices": "未使用の頂点を削除中", + "MMDOptions.removing_empty_shape_keys": "空のシェイプキーを削除中", + "MMDOptions.optimize_weights.label": "ウェイトを最適化", + "MMDOptions.optimize_weights.desc": "頂点あたりのウェイト数を制限してウェイトを最適化", + "MMDOptions.max_weights.label": "最大ウェイト数", + "MMDOptions.max_weights.desc": "頂点あたりの最大ウェイト数", + "MMDOptions.merging_weights": "ウェイトを結合中", + "MMDOptions.removing_zero_weight_bones": "ウェイトのないボーンを削除中", + "MMDOptions.limiting_vertex_weights": "頂点ウェイトを制限中", + "MMDOptions.weight_optimization_complete": "ウェイトの最適化が完了しました", + "Updater.label": "アップデーター", + "Updater.CheckForUpdateButton.label": "アップデートを確認", + "Updater.CheckForUpdateButton.label_alt": "利用可能なアップデートはありません", + "Updater.UpdateToLatestButton.label": "{name}にアップデート", + "Updater.UpdateToSelectedButton.label": "アップデート", + "Updater.currentVersion": "現在のバージョン:{name}", + "Updater.CheckForUpdateButton.desc": "利用可能なアップデートを確認", + "UpdateToLatestButton.desc": "最新バージョンにアップデート", + "UpdateNotificationPopup.label": "アップデート通知", + "UpdateNotificationPopup.desc": "利用可能なアップデートについての通知", + "UpdateNotificationPopup.newUpdate": "新しいアップデートが利用可能:{version}", + "RestartBlenderPopup.label": "Blenderを再起動", + "RestartBlenderPopup.desc": "アップデートを完了するためにBlenderを再起動", + "RestartBlenderPopup.message": "アップデートが成功しました!Blenderを再起動してください。", + "check_for_update.cantCheck": "アップデートを確認できません", + "download_file.cantConnect": "アップデートサーバーに接続できません", + "download_file.cantFindZip": "アップデートファイルが見つかりません", + "download_file.cantFindAvatarToolkit": "アップデートパッケージ内にAvatar Toolkitファイルが見つかりません", + "CreditsSupport.label": "クレジット&サポート", + "CreditsSupport.credits_title": "クレジット", + "CreditsSupport.credits_text1": "Avatar Toolkitは以下のNeonekoチームによって作成されました:", + "CreditsSupport.credits_text2": "YusarinaとOnan989", + "CreditsSupport.credits_text3": "一部のコードはCats Blender Pluginを参考にしています。", + "CreditsSupport.credits_text4": "元のプラグインの貢献者に感謝します。", + "CreditsSupport.support_text1": "私たちの活動を支援したい場合は、", + "CreditsSupport.support_text2": "pally.ggページで寄付/投げ銭ができます。", + "CreditsSupport.support_title": "サポートする", + "CreditsSupport.support_button": "サポートする", + "CreditsSupport.help_title": "ヘルプが必要ですか?", + "CreditsSupport.help_text1": "まずはWikiをご確認ください。さらなるサポートを", + "CreditsSupport.help_text2": "求める前にWikiを読むことを強くお勧めします。", + "CreditsSupport.wiki_button": "Wiki", + "CreditsSupport.discord_button": "Discordに参加", + "TextureAtlas.include_in_atlas": "アトラスに含める", + "TextureAtlas.include_in_atlas_desc": "このマテリアルをテクスチャアトラスに含める", + "Scene.avatar_toolkit_updater_version_list.name": "バージョンリスト", + "Scene.avatar_toolkit_updater_version_list.description": "アップデート可能なバージョンのリスト", + "TextureAtlas.albedo": "アルベド", + "TextureAtlas.normal": "法線", + "TextureAtlas.emission": "発光", + "TextureAtlas.ambient_occlusion": "アンビエントオクルージョン", + "TextureAtlas.height": "ハイト", + "TextureAtlas.roughness": "ラフネス", + "TextureAtlas.error.label": "エラー", + "TextureAtlas.none.label": "なし", + "TextureAtlas.no_nodes_error.desc": "このマテリアルはノードを使用していません!", + "TextureAtlas.no_images_error.desc": "このマテリアルには画像がありません!", + "TextureAtlas.texture_use_atlas.desc": "{name}マップアトラスに使用するテクスチャ", + "TextureAtlas.no_materials_selected": "アトラス用のマテリアルが選択されていません", + "Optimization.select_armature": "アーマチュアを選択してください", + "CheckForUpdateButton.label": "アップデートを確認", + "CheckForUpdateButton.desc": "利用可能なアップデートを確認", + "UpdateToLatestButton.label": "最新バージョンにアップデート" } -} +} \ No newline at end of file