feat: Add VRM Blender addon with complete import/export functionality

- Add core VRM addon infrastructure with manifest and registration
- Add common utilities module with file system, logging, and conversion helpers
- Add human bone mapper with support for multiple rigging standards (Mixamo, MMD, Unreal, Rigify, etc.)
- Add VRM 0.x and 1.x format support with property groups and handlers
- Add editor UI panels for VRM metadata, spring bones, and MToon materials
- Add exporter with glTF2 extension support for VRM format serialization
- Add importer with scene reconstruction and armature generation
- Add MToon shader support with auto-setup and material migration
- Add spring bone physics simulation with constraint handling
- Add node constraint editor for advanced rigging control
- Add comprehensive validation and error handling with user dialogs
- Add scene watcher for real-time property synchronization
- Add workspace management and preference system
- Include Python cache files and Blender manifest configuration
- This is the initial commit establishing the complete VRM addon ecosystem for Blender
This commit is contained in:
2026-01-01 14:21:56 +08:00
commit 091ad6a49a
243 changed files with 60636 additions and 0 deletions

1
locale/__init__.py Normal file
View File

@@ -0,0 +1 @@
# SPDX-License-Identifier: MIT OR GPL-3.0-or-later

Binary file not shown.

Binary file not shown.

Binary file not shown.

781
locale/ja_jp.py Normal file
View File

@@ -0,0 +1,781 @@
# SPDX-License-Identifier: MIT OR GPL-3.0-or-later
locale_key = "ja_JP"
translation_dictionary: dict[tuple[str, str], str] = {
(
"*",
"The installed VRM add-on is not compatible with Blender {blender_version}."
+ " Please upgrade the add-on.",
): "インストールされているVRMアドオンは、"
+ "Blender {blender_version}には未対応です。\n"
+ "アドオンをアップデートしてください。",
(
"*",
"The installed VRM add-\n"
+ "on is not compatible with\n"
+ "Blender {blender_version}. Please update.",
): "インストールされている\n"
+ "VRMアドオンは、Blender {blender_version}\n"
+ "には未対応です。アドオンを\n"
+ "アップデートしてください。",
(
"*",
"The installed VRM add-on is not compatible with Blender {blender_version}."
+ " The VRM may not be exported correctly.",
): "インストールされているVRMアドオンは、Blender {blender_version}には未対応です。"
+ "VRMが正しくエクスポートされない可能性があります。",
(
"*",
"VRM add-on is not compatible with Blender {blender_version_cycle}.",
): "VRMアドオンはBlenderの{blender_version_cycle}版には未対応です。",
(
"*",
"VRM add-on is\n"
+ "not compatible with\n"
+ "Blender {blender_version_cycle}.",
): "VRMアドオンはBlender\n" + "{blender_version_cycle}版には未対応です。",
(
"*",
"VRM add-on is not compatible with Blender {blender_version_cycle}."
+ " The VRM may not be exported correctly.",
): "VRMアドオンはBlenderの{blender_version_cycle}版には未対応です。"
+ "VRMが正しくエクスポートされない可能性があります。",
(
"*",
"The VRM add-on has been updated."
+ " Please restart Blender to apply the changes.",
): "VRMアドオンはアップデートされました。"
+ "変更を適用するためにBlenderを再起動してください。",
(
"*",
"The VRM add-on has been\n"
+ "updated. Please restart Blender\n"
+ "to apply the changes.",
): "VRMアドオンはアップデート\nされました。"
+ "変更を適用するため\n"
+ "Blenderを再起動してください。",
("*", 'Set shading type to "Material"'): "3Dビューをマテリアルプレビューに設定",
("*", 'Set view transform to "Standard"'): "ビュー変換を「標準」に設定",
(
"*",
'Set an imported armature display to "Wire"',
): "アーマチュアのビューポート表示を「ワイヤーフレーム」に設定",
(
"*",
'Set an imported armature display to show "In-Front"',
): "アーマチュアを最前面に表示",
(
"*",
"Set an imported bone shape to default",
): "ボーンの形状表示をデフォルトのものにする",
(
"*",
"Enable MToon Outline Preview",
): "MToonアウトラインのプレビューを有効にする",
(
"*",
"Enable Preview",
): "プレビューを有効にする",
("*", "Export Invisible Objects"): "非表示のオブジェクトも含める",
("*", "Export Only Selections"): "選択されたオブジェクトのみ",
("*", "Enable Advanced Options"): "高度なオプションを有効にする",
(
"*",
"Export All Bone Influences",
): "全てのボーンウェイトをエクスポートする",
(
"*",
"By default, 4 bone influences\n"
+ "are exported for each vertex. Many\n"
+ "apps truncate to 4. Increasing it\n"
+ "may cause jagged meshes.",
): "デフォルトでは頂点1つにつき\n"
+ "ウエイトを4つエクスポートします。\n"
+ "多くのアプリでは4つに制限する\n"
+ "ため、これを増やすと予期しない\n"
+ "メッシュの変形が発生する可能性が\n"
+ "あります。",
(
"*",
"Don't limit to 4, most viewers truncate to 4, "
+ "so bone movement may cause jagged meshes",
): "4つに制限しません。ほとんどのビューアでは4つに制限するため、"
+ "ボーンを動かした際に予期しないメッシュの変形が発生する可能性があります。",
("*", "Export Lights"): "ライトをエクスポートする",
(
"*",
"There is no consensus on how\n"
+ "to handle lights in VRM, so it is\n"
+ "impossible to predict what the\n"
+ "outcome will be.",
): "VRMにおけるライトの扱いは\n"
+ "現在コンセンサスが無く、どのような\n"
+ "結果になるか予測不能です。",
("*", "Export glTF Animations"): "glTFアニメーションをエクスポートする",
(
"*",
"UniVRM does not export\n"
+ "glTF Animations, so it is disabled\n"
+ "by default. Please consider using\n"
+ "VRM Animation.",
): "UniVRMがglTFアニメーションを\n"
+ "エクスポートしないのでデフォルトで\n"
+ "無効です。VRMアニメーションの利用\n"
+ "を検討してください。",
("*", "Use Sparse Accessors"): "スパースアクセッサを利用する",
(
"*",
"The file size will be reduced,\n"
+ "but it will no longer be readable by\n"
+ "older apps with UniVRM 0.115.0 or\n"
+ "earlier.",
): "ファイルサイズが削減されますが\n"
+ "UniVRM 0.115.0以下の古いアプリで\n"
+ "読めなくなります。",
(
"*",
"No errors found. Ready to export VRM",
): "エラーはありませんでした。VRMのエクスポートをすることができます",
(
"*",
"No errors found. But there are {warning_count} warning(s)."
+ " The output may not be what you expected.",
): "エラーはありませんでしたが、{warning_count}件の警告があります。"
+ "期待通りの出力にはならないかもしれません。",
("*", "VRM Export"): "VRMエクスポート",
("*", "Create VRM Model"): "VRMモデルを作成",
("*", "Check VRM Model"): "VRMモデルのチェック",
(
"*",
"Add MToon shader node group",
): "MToonシェーダーードグループを追加",
("*", "Extract texture images into the folder"): "テクスチャ画像をフォルダに展開",
(
"*",
"Don't overwrite existing texture folder",
): "すでに存在するテクスチャ画像フォルダを上書きしない",
(
"*",
'Official add-on "glTF 2.0 format" is required. Please enable it.',
): "公式アドオン「glTF 2.0 format」が必要です。有効化してください。",
(
"*",
"For more information please check following URL.",
): "詳しくは下記のURLを確認してください。",
(
"*",
"Multiple armatures were found. Please select one to export as VRM.",
): "複数のアーマチュアが存在します。"
+ "VRMとしてエクスポートするアーマチュアを選択してください。",
("*", "Import Anyway"): "インポートします",
("*", "Export Anyway"): "エクスポートします",
(
"*",
"There is a high-impact warning. VRM may not export as intended.",
): "影響の大きい警告があります。"
+ "意図通りのVRMがエクスポートされないかもしれません。",
("*", "A light is required"): "ライトが必要です",
("*", "License Confirmation"): "ライセンスの確認",
(
"*",
'This VRM is licensed by VRoid Hub License "Alterations: No".',
): "指定されたVRMにはVRoid Hubの「改変: NG」ライセンスが設定されています。",
(
"*",
'This VRM is licensed by UV License with "Remarks".',
): "指定されたVRMには特記事項(Remarks)付きのUVライセンスが設定されています。",
(
"*",
'The VRM selects "Other" license but no license url is found.',
): "指定されたVRMには「Other」ライセンスが設定されていますが、"
+ "URLが設定されていません。",
(
"*",
"This VRM is not allowed to be edited. Please check its license",
): "このVRMは改変不可に設定されています。ライセンスを確認してください。",
(
"*",
'The vertex "{parent_name}" is set as the parent of "{name}",'
+ " but this is not supported in VRM.",
): "{name}」の親として「{parent_name}」の頂点が設定されていますが、"
+ "VRMでは未対応です。",
(
"*",
'"{lattice}" is set as the {parent_type} for "{name}",'
+ " but this is not supported in VRM.",
): "{name}」の{parent_type}として「{lattice}」が設定されていますが、"
+ "VRMでは未対応です。",
(
"*",
"glTF nodes (mesh, bone) cannot have duplicate names."
+ " {name} is duplicated.",
): "glTFード要素(メッシュ、ボーン)の名前は重複してはいけません。"
+ "{name}」が重複しています。",
(
"*",
"The same name cannot be used"
+ " for a mesh object and a bone."
+ ' Rename either one whose name is "{name}".',
): "メッシュオブジェクトとボーンで同じ名前を使うことができません。"
+ "名前が「{name}」のどちらかの名前を変更してください。",
(
"*",
'The "{name}" mesh has both a non-armature modifier'
+ " and a shape key. However, they cannot coexist"
+ ", so shape keys may not be exported correctly.",
): "メッシュ「{name}」に"
+ "アーマチュア以外のモディファイアとシェイプキーが両方設定されていますが、"
+ "それらは共存できないためシェイプキーが正しく出力されないことがあります。",
(
"*",
'Spring "{spring_name1}" and "{spring_name2}" have'
+ ' common bone "{bone_name}".',
): "Spring 「{spring_name1}」と「{spring_name2}」が"
+ "{bone_name}」ボーンを共有しています。",
(
"*",
'"{export_only_selections}" is enabled' + ", but no mesh is selected.",
): "{export_only_selections}」が有効ですが、メッシュが一つも選択されていません。",
("*", "There is no mesh to export."): "エクスポート対象のメッシュがありません。",
(
"*",
"VRM exporter needs only one armature not some armatures.",
): "VRM出力の際、選択できるアーマチュアは1つのみです。複数選択されています。",
(
"*",
"Required VRM Human Bones",
): "VRM必須ボーン",
(
"*",
"Optional VRM Human Bones",
): "VRMオプションボーン",
(
"*",
'Required VRM Human Bone "{humanoid_name}" is'
+ " not assigned. Please confirm hierarchy"
+ " of {humanoid_name} and its children."
+ ' "VRM" Panel → "VRM 0.x Humanoid"{humanoid_name}'
+ " will be empty or displayed in red"
+ " if hierarchy is wrong",
): "VRM必須ボーン「{humanoid_name}」が未割り当てです。"
+ "「VRM」パネルの「VRM 0.x Humanoid」→「VRM必須ボーン」で"
+ "{humanoid_name}」ボーンの設定をしてください。",
(
"*",
'Couldn\'t assign "{bone}" bone'
+ ' to VRM Human Bone "{human_bone}". '
+ 'Confirm hierarchy of "{bone}" and its children. '
+ '"VRM" Panel → "Humanoid""{human_bone}" is empty'
+ " if wrong hierarchy",
): "ボーン「{bone}」をVRMヒューマンボーン「{human_bone}」に"
+ "割り当てることができませんでした。"
+ "「VRM」パネルの「VRM 0.x Humanoid」で"
+ "{human_bone}」ボーンの設定を確認してください。",
(
"*",
'Required VRM Human Bone "{humanoid_name}" is'
+ " not assigned. Please confirm hierarchy"
+ " of {humanoid_name} and its children. "
+ '"VRM" Panel → "Humanoid"{humanoid_name}'
+ " will be empty or displayed in red"
+ " if hierarchy is wrong",
): "VRM必須ボーン「{humanoid_name}」が未割り当てです。"
+ "「VRM」パネルの「Humanoid」→「VRM必須ボーン」で"
+ "{humanoid_name}」ボーンの設定をしてください。",
(
"*",
'Please assign Required VRM Human Bone "{name}".',
): "VRM必須ボーン「{name}」を割り当ててください。",
(
"*",
'Please assign "{parent_name}"'
+ ' because "{name}" requires it as its child bone.',
): "{parent_name}」を割り当ててください。"
+ "子ボーンである「{name}」の割り当てに必要になります。",
(
"*",
'Non-triangular faces detected in "{name}". '
+ "They will be triangulated automatically.",
): "{name}」のポリゴンに三角形以外のものが含まれます。"
+ "自動的に三角形に分割されます。",
(
"*",
'VRM Human Bone "{child}" needs "{parent}".'
+ " Please confirm"
+ ' "VRM" Panel → "Humanoid"'
+ '"Optional VRM Human Bones""{parent}".',
): "VRMヒューマンボーン「{child}」は「{parent}」が必要です。"
+ "「VRM」パネルの「Humanoid」→「VRMオプションボーン」で"
+ "{parent}」ボーンの設定をしてください。",
(
"*",
'Object "{name}" contains a negative value for the scale;'
+ " VRM 1.0 does not allow negative values to be specified"
+ " for the scale.",
): "オブジェクト「{name}」にスケールにマイナス値が含まれています。"
+ "VRM 1.0ではスケールにマイナス値を指定できません。",
(
"*",
'Node Constraint "{owner_name} / {constraint_name}" has'
+ " a circular dependency",
): "ノードコンストレイント「{owner_name} / {constraint_name}」に"
+ "循環依存関係が存在します。",
("*", "No armature exists."): "アーマチュアが存在しません。",
(
"*",
'vertex index "{vertex_index}" is no weight'
+ ' in "{mesh_name}".'
+ " Add weight to parent bone automatically.",
): "{mesh_name}」の頂点id「{vertex_index}」にウェイトが乗っていません。"
+ "親ボーンへのウエイトを自動で割り当てます。",
(
"*",
'vertex index "{vertex_index}" has'
+ ' too many (over 4) weight in "{mesh_name}".'
+ " It will be truncated to 4 descending"
+ " order by its weight.",
): "{mesh_name}」の頂点id「{vertex_index}」に影響を与えるボーンが5以上あります。"
+ "重い順に4つまでエクスポートされます。",
(
"*",
'"{material_name}" needs to enable'
+ ' "VRM MToon Material" or connect'
+ " Principled BSDF/MToon_unversioned/TRANSPARENT_ZWRITE"
+ ' to "Surface" directly. Empty material will be exported.',
): "マテリアル「{material_name}」は「VRM MToon Material」を有効にするか"
+ "「プリンシプルBSDF」「MToon_unversioned」「TRANSPARENT_ZWRITE」の"
+ "いずれかを直接「サーフェス」に指定してください。空のマテリアルを出力します。",
(
"*",
'"{image_name}" was not found at file path "{image_filepath}". '
+ "Please load the file in Blender.",
): '{image_name}」の画像ファイルが指定ファイルパス「"{image_filepath}"'
+ "に存在しません。画像を読み込み直してください。",
(
"*",
"firstPersonBone was not found. "
+ 'VRM HumanBone "head" will be used automatically instead.',
): "firstPersonBoneが設定されていません。"
+ "代わりにfirstPersonBoneとしてVRMヒューマンボーン「head」を自動で設定します。",
(
"*",
'A mesh named "{mesh_name}" is assigned to a blend'
+ ' shape group named "{blend_shape_group_name}" but'
+ " the mesh will not be exported",
): "Blend Shape Group「{blend_shape_group_name}」にメッシュ「{mesh_name}」が"
+ "割り当てられていますが、そのメッシュはエクスポートされません",
(
"*",
'A shape key named "{shape_key_name}" in a mesh'
+ ' named "{mesh_name}" is assigned to a blend shape'
+ ' group named "{blend_shape_group_name}" but the'
+ " shape key doesn't exist.",
): "Blend Shape Group「{blend_shape_group_name}」にメッシュ"
+ "{mesh_name}」のシェイプキー「{shape_key_name}」が割り当てられていますが、"
+ "そのようなシェイプキーは存在しません",
(
"*",
'need "{expect_node_type}" input' + ' in "{shader_val}" of "{material_name}"',
): "{material_name}」の「{shader_val}」には、"
+ "{expect_node_type}」を直接つないでください。 ",
(
"*",
'Image in material "{material_name}" is not set.' + " Please add an image.",
): "マテリアル「{material_name}」に"
+ "テクスチャが設定されていないimageードがあります。"
+ "削除か画像を設定してください。",
("*", "Symmetrize VRoid Bone Names on X-Axis"): "VRoidのボーン名をX軸対称化",
(
"*",
"Make VRoid bone names X-axis mirror editable",
): "VRoidのボーン名をX軸対称編集が可能な名前に変換",
("*", "Current Pose"): "現在のポーズ",
("*", "Save Bone Mappings"): "ボーンの対応を保存",
("*", "Load Bone Mappings"): "ボーンの対応を読み込み",
(
"*",
"All Required VRM Human Bones have been assigned.",
): "全てのVRM必須ボーンの割り当てが行われました。",
(
"*",
"There are unassigned Required VRM Human Bones. Please assign all.",
): "未割り当てのVRM必須ボーンが存在します。"
+ "全てのVRM必須ボーンを割り当ててください。",
("Operator", "Automatic Bone Assignment"): "ボーンの自動割り当て",
("Operator", "Preview MToon 0.0"): "MToon 0.0のプレビュー",
("Operator", "VRM Humanoid"): "VRMヒューマイド",
("Operator", "VRM License Confirmation"): "VRM利用条件の確認",
("Operator", "Required VRM Human Bones Assignment"): "VRM必須ボーンの設定",
(
"*",
"Conditions exported as Roll Constraint\n"
+ " - {copy_rotation}\n"
+ " - Enabled\n"
+ " - No Vertex Group\n"
+ " - {axis} is one of X, Y and Z\n"
+ " - No Inverted\n"
+ " - {mix} is {add}\n"
+ " - {target} is {local_space}\n"
+ " - {owner} is {local_space}\n"
+ " - No circular dependencies\n"
+ " - The one at the top of the list of\n"
+ " those that meet all the conditions\n",
): "Roll Constraintになる条件\n"
+ " - {copy_rotation}\n"
+ " - 有効状態\n"
+ " - 頂点グループの指定無し\n"
+ " - {axis}はXYZのどれか一つを指定\n"
+ " - 反転は無し\n"
+ " - {mix}{add}\n"
+ " - {target}{local_space}\n"
+ " - {owner}{local_space}\n"
+ " - 循環依存関係が存在しない\n"
+ " - 複数が条件を満たす場合は一番上にあるもの\n",
(
"*",
"Conditions exported as Aim Constraint\n"
+ " - {damped_track}\n"
+ " - Enabled\n"
+ " - Target Bone {head_tail} is 0\n"
+ " - No Follow Target Bone B-Bone\n"
+ " - No circular dependencies\n"
+ " - The one at the top of the list of\n"
+ " those that meet all the conditions\n",
): "Aim Constraintになる条件\n"
+ " - {damped_track}\n"
+ " - 有効状態\n"
+ " - ターゲットボーンの{head_tail}が0\n"
+ " - ターゲットボーンのBボーンには従わない\n"
+ " - 循環依存関係が存在しない\n"
+ " - 複数が条件を満たす場合は一番上にあるもの\n",
(
"*",
"Conditions exported as Rotation Constraint\n"
+ " - {copy_rotation}\n"
+ " - Enabled\n"
+ " - No Vertex Group\n"
+ " - {axis} is X, Y and Z\n"
+ " - No Inverted\n"
+ " - {mix} is {add}\n"
+ " - {target} is {local_space}\n"
+ " - {owner} is {local_space}\n"
+ " - No circular dependencies\n"
+ " - The one at the top of the list of\n"
+ " those that meet all the conditions\n",
): "Rotation Constraintになる条件\n"
+ " - {copy_rotation}\n"
+ " - 有効状態\n"
+ " - 頂点グループの指定無し\n"
+ " - {axis}はXYZ全て指定\n"
+ " - 反転は無し\n"
+ " - {mix}{add}\n"
+ " - {target}{local_space}\n"
+ " - {owner}{local_space}\n"
+ " - 循環依存関係が存在しない\n"
+ " - 複数が条件を満たす場合は一番上にあるもの\n",
("*", "Axis Translation on Export"): "エクスポート時の軸の変換",
(
"*",
"Offset and Scale are ignored in VRM 0.0",
): "VRM 0.0ではオフセットとスケールは無視されます",
(
"*",
'Material "{name}" {texture}\'s Offset and Scale are' + " ignored in VRM 0.0",
): "VRM 0.0ではマテリアル「{name}」の{texture}のオフセットとスケールは無視されます",
(
"*",
"Offset and Scale in VRM 0.0 are" + " the values of the Lit Color Texture",
): "VRM 0.0でのオフセットとスケールはLit Colorテクスチャの値になります",
(
"*",
'Material "{name}" {texture}\'s Offset and Scale'
+ " in VRM 0.0 are the values of"
+ " the Lit Color Texture",
): "VRM 0.0でのマテリアル「name」の{texture}のオフセットとスケールは"
+ "Lit Colorテクスチャの値になります",
(
"*",
'It is recommended to set "{colorspace}"'
+ ' to "{input_colorspace}" for "{texture_label}"',
): "{texture_label}{input_colorspace}には「{colorspace}」の設定が推奨されます",
(
"*",
'It is recommended to set "{colorspace}"'
+ ' to "{input_colorspace}" for "{texture_label}"'
+ ' in Material "{name}"',
): "マテリアル{name}{texture_label}{input_colorspace}には"
+ "{colorspace}」の設定が推奨されます。",
(
"*",
"VRM Material",
): "VRMマテリアル",
(
"*",
"Enable VRM MToon Material",
): "VRM MToonマテリアルを有効にする",
(
"*",
"Export Shape Key Normals",
): "シェイプキー法線をエクスポートする",
(
"*",
'The "Screen Coordinates" display is not yet implemented.\n'
+ 'It is displayed in the same way as "World Coordinates".',
): "「Screen Coordinates」の表示は未実装です\n"
+ "「World Coordinates」と同じ表示をします",
(
"*",
"How to export this material to VRM.\n"
+ "Meet one of the following conditions.\n"
+ " - VRM MToon Material is enabled\n"
+ ' - Connect the "Surface" to a "Principled BSDF"\n'
+ ' - Connect the "Surface" to a "MToon_unversioned"\n'
+ ' - Connect the "Surface" to a "TRANSPARENT_ZWRITE"\n'
+ " - Others that are compatible with the glTF 2.0 add-on export\n",
): "VRMにこのマテリアルをエクスポートする方法\n"
+ "次のいずれかの条件を満たしてください。\n"
+ " - VRM MToonマテリアルが有効\n"
+ " - 「サーフェス」に「プリンシプルBSDF」を指定\n"
+ " - 「サーフェス」に「MToon_unversioned」を指定\n"
+ " - 「サーフェス」に「TRANSPARENT_ZWRITE」を指定\n"
+ " - その他、glTF 2.0アドオンのエクスポートに対応しているもの\n",
(
"*",
"Enable Animation",
): "アニメーションを有効にする",
("*", "Armature not found"): "アーマチュアが見つかりませんでした",
(
"*",
"Please assign required human bones",
): "必須のヒューマンボーンの割り当ててください",
("*", "Please set the version of VRM to 1.0"): "VRMのバージョンを1.0にしてください",
(
"*",
"VRM Animation export requires a VRM 1.0 armature",
): "VRM Animationのエクスポートには、VRM 1.0のアーマチュアが必要です",
(
"*",
"VRM Animation import requires a VRM 1.0 armature",
): "VRM Animationのインポートには、VRM 1.0のアーマチュアが必要です",
("*", "Armature to be exported"): "エクスポート対象のアーマチュア",
(
"*",
(
"Animations to be exported\n"
+ "- Humanoid bone rotations\n"
+ "- Humanoid hips bone translations\n"
+ "- Expression preview value\n"
+ "- Look At preview target translation\n"
),
): (
"エクスポートされるアニメーション\n"
+ "- Humanoidボーンの回転値\n"
+ "- Humanoid Hipsボーンの移動値\n"
+ "- Expressionのプレビュー値\n"
+ "- Look Atプレビューターゲットの移動値\n"
),
("*", "Armature to be animated"): "アニメーション適用対象のアーマチュア",
(
"*",
"https://vrm-addon-for-blender.info/en-us/animation/",
): "https://vrm-addon-for-blender.info/ja-jp/animation/",
("Operator", "Open help in a Web Browser"): "Webブラウザでヘルプを開く",
("*", "Allow Non-Humanoid Rig"): "人型以外のリグを許可する",
(
"*",
"VRMs exported as Non-Humanoid\n"
+ "Rigs can not have animations applied\n"
+ "for humanoid avatars.",
): (
"人型以外のリグでVRMエクスポートを\n"
+ "すると、人型アバター用のアニメーションが\n"
+ "適用されません。"
),
(
"*",
"This armature will be exported but not as a humanoid."
+ " It cannot have animations applied"
+ " for humanoid avatars.",
): "アーマチュアは人型では無いリグでエクスポートされます。"
+ "人型アバター用のアニメーションが適用されません。",
(
"Operator",
"Blender 4.2 Material Upgrade Warning",
): "Blender 4.2でのマテリアルアップグレードの警告",
(
"*",
'Updating to Blender 4.2 may unintentionally change the "{alpha_mode}"'
+ ' of some MToon materials to "{transparent}".\n'
+ 'This was previously implemented using the material\'s "{blend_mode}"'
+ " but since that setting was removed in Blender 4.2.\n"
+ 'In the current VRM add-on, the "{alpha_mode}" function has been'
+ " re-implemented using a different method. However, it\n"
+ "was not possible"
+ " to implement automatic migration of old settings values because those"
+ " values could no longer be read.\n"
+ 'Please check the "{alpha_mode}" settings for materials that have'
+ " MToon enabled.\n"
+ "Materials that may be affected are as follows:",
): "Blender 4.2へのアップデートに伴い、一部のMToonマテリアルの"
+ "{alpha_mode}」設定が意図せず「{transparent}」に変化している\n"
+ "可能性があります。当該機能は今までマテリアルの「{blend_mode}」設定で"
+ "実装されていましたが、Blender 4.2からその設定が\n"
+ "削除されたためです。"
+ "現在のVRMアドオンでは「{alpha_mode}」の機能は別の方式で再実装"
+ "されましたが、古い設定値の自動移行は、\n"
+ "古い設定値自体がもう読めないため実装が不可能でした。"
+ "MToonが有効なマテリアルの「{alpha_mode}」設定の確認をお願いします。\n"
+ "影響のある可能性のあるマテリアルは次の通りです。",
(
"Operator",
"File Compatibility Warning",
): "ファイルの互換性の警告",
(
"*",
"The current file is not compatible with the running Blender.\n"
+ "The current file was created in Blender {file_version}, but the running"
+ " Blender version is {app_version}.\n"
+ "This incompatibility may result in data loss or corruption.",
): "現在のファイルは実行中のBlenderと互換性がありません。\n"
+ "現在のファイルはBlender {file_version}で作られたファイルですが、"
+ "起動中のBlenderの\n"
+ "バージョンは{app_version}のため互換性ありません。そのため、"
+ "一部のデータが消えたり\n"
+ "壊れたりすることがあります。",
("VrmAddon", "Open Documentation"): "関連ドキュメントを開く",
(
"*",
"The current file is not compatible with the installed VRM Add-on.\n"
+ "The current file was created in VRM Add-on {file_addon_version}, but the"
+ " installed\n"
+ "VRM Add-on version is {installed_addon_version}. This incompatibility\n"
+ "may result in data loss or corruption.",
): "現在のファイルはインストール済みのVRMアドオンと互換性がありません。\n"
+ "現在のファイルはVRMアドオンのバージョン{file_addon_version}で作られた"
+ "ファイルですが、\nインストール済みのVRMアドオンのバージョンは"
+ "{installed_addon_version}のため互換性がありません。\n"
+ "そのため、一部のデータが消えたり壊れたりすることがあります。",
(
"Operator",
"VRM Add-on Compatibility Warning",
): "VRMアドオンの互換性の警告",
(
"Operator",
"Bone Assignment Diagnostics",
): "ボーン割り当ての診断",
(
"*",
"Shows the cause of the bone assignment error"
" or the reason why none of the bone assignment candidates exist.",
): "ボーン割り当てのエラーの原因や、"
+ "ボーンの割り当て候補が存在しない理由を表示します。",
(
"*",
'Assignment of the VRM Human Bone "{vrm_human_bone}"',
): "VRMヒューマンボーン「{vrm_human_bone}」の割り当て",
(
"*",
'The bone "{bone_name}" of the armature "{armature_object_name}"'
+ ' can be assigned to the VRM Human Bone "{human_bone_name}".',
): "アーマチュア「{armature_object_name}」のボーン「{bone_name}」は"
"VRMヒューマンボーン「{human_bone_name}」へ割り当てることができます。",
(
"*",
'The bone "{bone_name}" of the armature "{armature_object_name}"'
+ ' cannot be assigned to the VRM Human Bone "{human_bone_name}".',
): "アーマチュア「{armature_object_name}」のボーン「{bone_name}」は"
+ "VRMヒューマンボーンの「{human_bone_name}」へ割り当てることができません。",
(
"*",
'The armature "{armature_object_name}" does not have any bones'
+ ' that can be assigned to the VRM Human Bone "{human_bone_name}".',
): "アーマチュア「{armature_object_name}」にはVRMヒューマンボーン"
+ "{human_bone_name}」へ割り当てることができるボーンが存在しません。",
(
"*",
'Being a descendant of the bone "{bpy_bone}" assigned'
+ ' to the VRM Human Bone "{human_bone}"',
): "VRMヒューマンボーン「{human_bone}」に割り当てられているボーン"
+ "{bpy_bone}」の子孫",
(
"*",
'The bone assigned to the VRM Human Bone "{human_bone}" must'
+ " be descendants of the bones assigned \nto the VRM human"
+ ' bone "{parent_human_bone}". However, it cannot retrieve'
+ " bone candidates because there\nis an error in the"
+ ' assignment of the VRM Human Bone "{parent_human_bone}".'
+ " Please resolve the error in the\nassignment of the VRM"
+ ' Human Bone "{parent_human_bone}" first.',
): "VRMヒューマンボーン「{human_bone}」へ割り当てるボーンは、VRMヒューマンボーン"
+ "{parent_human_bone}」に割り当てるボーンの\n子孫である必要があります。しかし、"
+ "VRMヒューマンボーン「{parent_human_bone}」に割り当てエラーがあるためボーンの"
+ "候補を取得できません。\n先にVRMヒューマンボーン「{parent_human_bone}」の"
+ "割り当てのエラーを解消してください。",
(
"*",
'Sharing the root bone with the bone "{bpy_bone}" assigned'
+ ' to the VRM Human Bone "{human_bone}"',
): "VRMヒューマンボーン「{human_bone}」に割り当てられているボーン「{bpy_bone}」と"
+ "ルートボーンを共有している",
(
"*",
'Being an ancestor of the bone "{bpy_bone}" assigned'
+ ' to the VRM Human Bone "{human_bone}"',
): "VRMヒューマンボーン「{human_bone}」に割り当てられているボーン"
+ "{bpy_bone}」の祖先",
(
"*",
'Not being an ancestor of the bone "{bpy_bone}" assigned'
+ ' to the VRM Human Bone "{human_bone}"',
): "VRMヒューマンボーン「{human_bone}」に割り当てられているボーン"
+ "{bpy_bone}」の祖先では無い",
(
"*",
"Bones that meet all of the following conditions will be "
+ "candidates for assignment:",
): "次の条件を全て満たすボーンが割り当て候補になります。",
(
"*",
"Failed to export VRM.",
): "VRMのエクスポートに失敗しました。",
(
"*",
"Failed to export VRM Animation.",
): "VRM Animationのエクスポートに失敗しました。",
(
"*",
"Failed to import VRM.",
): "VRMのインポートに失敗しました。",
(
"*",
"Failed to import VRM Animation.",
): "VRM Animationのインポートに失敗しました。",
(
"Operator",
"Save Error Message",
): "エラーメッセージを保存",
("Operator", "Open Support Site"): "サポートサイトを開く",
(
"*",
"Automatic T-Pose Conversion is enabled."
+ " There is a setting"
+ ' in "VRM" panel → "VRM 0.x Humanoid""T-Pose".',
): "自動Tポーズ化が有効です。"
+ "「VRM」パネルの「VRM 0.x Humanoid」→「T-Pose」に設定があります。",
(
"*",
"Automatic T-Pose Conversion is enabled."
+ " There is a setting"
+ ' in "VRM" panel → "Humanoid""T-Pose".',
): "自動Tポーズ化が有効です。"
+ "「VRM」パネルの「Humanoid」→「T-Pose」に設定があります。",
(
"*",
'<Please use "VRM Material" panel instead>',
): "「VRMマテリアル」パネルを使用してください",
(
"*",
"https://github.com/vrm-c/vrm-specification/blob/c24d76d99a18738dd2c266be1c83f089064a7b5e/specification/VRMC_vrm-1.0/humanoid.md#humanoid-bone-parent-child-relationship",
): "https://github.com/vrm-c/vrm-specification/blob/c24d76d99a18738dd2c266be1c83f089064a7b5e/specification/VRMC_vrm-1.0/humanoid.ja.md#ヒューマノイドボーンの親子関係",
("Operator", "Restore Shape Key Assignments"): "シェイプキーの割り当てを復元する",
}

8
locale/ruff.toml Normal file
View File

@@ -0,0 +1,8 @@
extend = "../../../pyproject.toml"
[lint]
allowed-confusables = [
"\u30ce", # Katakana Letter No
"\uff0c", # Fullwidth Comma
"\uff1a", # Fullwidth Colon
]

View File

@@ -0,0 +1,7 @@
# SPDX-License-Identifier: MIT OR GPL-3.0-or-later
from . import ja_jp, zh_hans
translation_dictionary = {
ja_jp.locale_key: ja_jp.translation_dictionary,
zh_hans.locale_key: zh_hans.translation_dictionary,
}

920
locale/zh_hans.py Normal file
View File

@@ -0,0 +1,920 @@
# SPDX-License-Identifier: MIT OR GPL-3.0-or-later
import bpy
# https://projects.blender.org/blender/blender/commit/0ce02355c1d0fb676167b7070870c8b5ef6ce048
locale_key = "zh_CN" if bpy.app.version < (4, 0) else "zh_HANS"
translation_dictionary: dict[tuple[str, str], str] = {
(
"*",
"The installed VRM add-on is not compatible with Blender {blender_version}."
+ " Please upgrade the add-on.",
): "已安装的 VRM 附加组件有"
+ "Blender {blender_version}尚不支持。。\n"
+ "更新附加组件。",
(
"*",
"The installed VRM add-\n"
+ "on is not compatible with\n"
+ "Blender {blender_version}. Please update.",
): "已安装\n"
+ "VRM 附加组件是 Blender {blender_version}\n"
+ "尚不支持。 插件。\n"
+ "请更新。",
(
"*",
"The installed VRM add-on is not compatible with Blender {blender_version}."
+ " The VRM may not be exported correctly.",
): "已安装的 VRM 附加组件与 Blender {blender_version} 不兼容。"
+ "可能无法正确导出 VRM。",
(
"*",
"VRM add-on is not compatible with Blender {blender_version_cycle}.",
): "VRM 附加组件尚未与 {blender_version_cycle} 版本的 Blender 兼容。",
(
"*",
"VRM add-on is\n"
+ "not compatible with\n"
+ "Blender {blender_version_cycle}.",
): "VRM 附加组件Blender\n" + "尚未支持 {blender_version_cycle} 版本的 。",
(
"*",
"VRM add-on is not compatible with Blender {blender_version_cycle}."
+ " The VRM may not be exported correctly.",
): "VRM 附加组件与 {blender_version_cycle} 版本的 Blender 尚不兼容。"
+ "可能无法正确导出 VRM。",
(
"*",
"The VRM add-on has been updated."
+ " Please restart Blender to apply the changes.",
): "已更新 VRM 附加组件。" + "重启 Blender 以应用更改。",
(
"*",
"The VRM add-on has been\n"
+ "updated. Please restart Blender\n"
+ "to apply the changes.",
): "VRM 附加组件\n已更新。" + "要应用更改\n" + "Blender重新启动。",
("*", 'Set shading type to "Material"'): "将 3D 视图设置为材质预览",
("*", 'Set view transform to "Standard"'): "将视图转换设置为 “标准”",
(
"*",
'Set an imported armature display to "Wire"',
): "将armature视口显示设置为 “线框”",
(
"*",
'Set an imported armature display to show "In-Front"',
): "armature显示在最前面",
(
"*",
"Set an imported bone shape to default",
): "默认显示骨骼形状。",
(
"*",
"Enable MToon Outline Preview",
): "允许MToon轮廓线预览",
("*", "Export Invisible Objects"): "包括隐藏对象",
("*", "Export Only Selections"): "仅选定对象",
("*", "Enable Advanced Options"): "启用高级选项",
("*", "Don't overwrite existing texture folder"): "不要覆盖现有纹理文件夹",
(
"*",
"Export All Bone Influences",
): "导出所有骨骼重量",
(
"*",
"Don't limit to 4, most viewers truncate to 4, "
+ "so bone movement may cause jagged meshes",
): "不限于四个。 大多数观众将自己限制为四人,因为、"
+ "移动骨骼时可能会发生意外的网格变形。",
("*", "Export Lights"): "输出灯光",
(
"*",
"No errors found. Ready to export VRM",
): "未发现任何错误。。可导出 VRM",
(
"*",
"No errors found. But there are {warning_count} warning(s)."
+ " The output may not be what you expected.",
): "没有错误。、{warning_count}有关于此的警告。。" + "输出结果可能与预期不同。",
("*", "VRM Export"): "VRM 输出",
("*", "Create VRM Model"): "创建 VRM 模型",
("*", "Check VRM Model"): "按VRM 模型标准检查",
("*", "Extract texture images into the folder"): "将纹理图像解压到文件夹中。",
(
"*",
'Official add-on "glTF 2.0 format" is required. Please enable it.',
): "需要使用 glTF 2.0 格式的官方插件。 请激活它",
(
"*",
"For more information please check following URL.",
): "如需了解更多信息,请查看下面的 URL。",
(
"*",
"Multiple armatures were found. Please select one to export as VRM.",
): "存在多个armatures。。" + "选择要导出为 VRM 的armatures。",
("*", "Import Anyway"): "强制导入",
("*", "Export Anyway"): "强制导出",
(
"*",
"There is a high-impact warning. VRM may not export as intended.",
): "有影响较大的警告。。" + "VRM 可能无法按预期输出。",
("*", "A light is required"): "需要照明。",
("*", "License Confirmation"): "许可确认。",
(
"*",
'This VRM is licensed by VRoid Hub License "Alterations: No".',
): "指定的 VRM 具有 VRoid Hub 的许可「改変: 禁止」。。",
(
"*",
'This VRM is licensed by UV License with "Remarks".',
): "指定的 VRM 具有 UV License的许可(Remarks)。",
(
"*",
'The VRM selects "Other" license but no license url is found.',
): "指定的 VRM 具有「Other」许可证规定、" + "未设置 URL。",
(
"*",
"glTF nodes (mesh, bone) cannot have duplicate names."
+ " {name} is duplicated.",
): "glTF 节点元素(网格,骨骼)名称不得重复。。" + "{name}」是重复的。。",
(
"*",
"The same name cannot be used"
+ " for a mesh object and a bone."
+ ' Rename either one whose name is "{name}".',
): "网格对象和骨骼不能使用相同的名称。" + "名称:「{name}」更改以下名称之一。",
(
"*",
'The "{name}" mesh has both a non-armature modifier'
+ " and a shape key. However, they cannot coexist"
+ ", so shape keys may not be exported correctly.",
): "网格「{name}」に"
+ "non-armature修改器和形态键都已设置但、"
+ "它们不能共存,形态键可能无法正确输出。",
(
"*",
'Spring "{spring_name1}" and "{spring_name2}" have'
+ ' common bone "{bone_name}".',
): "Spring 「{spring_name1}」と「{spring_name2}」が"
+ "{bone_name}」有共用骨骼。",
(
"*",
'"{export_only_selections}" is enabled' + ", but no mesh is selected.",
): "{export_only_selections}」是有效的,但没有选择任何网格。",
("*", "There is no mesh to export."): "无网格可导出。",
(
"*",
"Only one armature is required for VRM export." + " Multiple armatures found.",
): "只能为 VRM 输出选择一个armatures。 可多次选择。",
(
"*",
'Required VRM Human Bone "{humanoid_name}" is'
+ " not assigned. Please confirm hierarchy"
+ " of {humanoid_name} and its children."
+ ' "VRM" Panel → "VRM 0.x Humanoid"{humanoid_name}'
+ " will be empty or displayed in red"
+ " if hierarchy is wrong",
): "VRM必须的骨骼「{humanoid_name}」是未指定的。。"
+ "「VRM」面板「VRM 0.x Humanoid」→「VRM必须的骨骼」将为空或显示为红色"
+ "{humanoid_name}」如果层次结构有误。",
(
"*",
'Couldn\'t assign "{bone}" bone'
+ ' to VRM Human Bone "{human_bone}". '
+ 'Confirm hierarchy of "{bone}" and its children. '
+ '"VRM" Panel → "Humanoid""{human_bone}" is empty'
+ " if wrong hierarchy",
): "骨骼「{bone}」到 VRM 骨「{human_bone}」无法分配。"
+ "「VRM」面板「VRM 0.x Humanoid」で"
+ "{human_bone}」检查骨骼设置。",
(
"*",
'Required VRM Human Bone "{humanoid_name}" is'
+ " not assigned. Please confirm hierarchy"
+ " of {humanoid_name} and its children. "
+ '"VRM" Panel → "Humanoid"{humanoid_name}'
+ " will be empty or displayed in red"
+ " if hierarchy is wrong",
): "VRM必须的骨骼「{humanoid_name}」是未指定的。。"
+ "「VRM」面板「Humanoid」→「VRM必须的骨骼」将为空或显示为红色"
+ "{humanoid_name}」如果层次结构有误。",
(
"*",
'Please assign Required VRM Human Bone "{name}".',
): "请分配所需的 VRM 骨 「{name}」。",
(
"*",
'Please assign "{parent_name}"'
+ ' because "{name}" requires it as its child bone.',
): "{parent_name}」指定。" + "因为「{name}」需要将其作为子骨骼。。",
(
"*",
'Non-triangular faces detected in "{name}". '
+ "They will be triangulated automatically.",
): "{name}」包含三角形以外的多边形。" + "自动划分为三角形。",
(
"*",
'VRM Human Bone "{child}" needs "{parent}".'
+ " Please confirm"
+ ' "VRM" Panel → "Humanoid"'
+ '"Optional VRM Human Bones""{parent}".',
): "VRM骨骼「{child}」需要「{parent}」。"
+ "「VRM」面板「Humanoid」→「VRM可选的骨骼」で"
+ "{parent}」骨骼設定。",
(
"*",
'Object "{name}" contains a negative value for the scale;'
+ " VRM 1.0 does not allow negative values to be specified"
+ " for the scale.",
): "对象「{name}」中的缩放为负数。" + "VRM 1.0不允许指定负值。",
(
"*",
'Node Constraint "{owner_name} / {constraint_name}" has'
+ " a circular dependency",
): "ノードコンストレイント「{owner_name} / {constraint_name}」に"
+ "存在循环依赖关系。。",
("*", "No armature exists."): "骨架不存在。。",
(
"*",
'vertex index "{vertex_index}" is no weight'
+ ' in "{mesh_name}".'
+ " Add weight to parent bone automatically.",
): "{mesh_name}」的頂点id「{vertex_index}」未加权。" + "自动为父骨骼分配权重。。",
(
"*",
'vertex index "{vertex_index}" has'
+ ' too many (over 4) weight in "{mesh_name}".'
+ " It will be truncated to 4 descending"
+ " order by its weight.",
): "{mesh_name}」的頂点id「{vertex_index}」有 5 块或更多骨骼影响到。"
+ "最多 4 个,按重度顺序导出。",
(
"*",
'"{material_name}" needs to enable'
+ ' "VRM MToon Material" or connect'
+ " Principled BSDF/MToon_unversioned/TRANSPARENT_ZWRITE"
+ ' to "Surface" directly. Empty material will be exported.',
): "{material_name}」需要启用「VRM MToon Material」或者链接"
+ "「原理化BSDF」「MToon_unversioned」「TRANSPARENT_ZWRITE」の"
+ "直接向 “表面 ”指定其中之一。 输出空材质。。",
(
"*",
'"{image_name}" was not found at file path "{image_filepath}". '
+ "Please load the file in Blender.",
): '{image_name}」指定文件路径中的图像文件。「"{image_filepath}"'
+ "图像不存在于 请重新加载图像。。",
(
"*",
"firstPersonBone was not found. "
+ 'VRM HumanBone "head" will be used automatically instead.',
): "firstPersonBone未设置。。"
+ "自动设置将 VRM humanborn「head」改为 firstPersonBone。。",
(
"*",
'A mesh named "{mesh_name}" is assigned to a blend'
+ ' shape group named "{blend_shape_group_name}" but'
+ " the mesh will not be exported",
): "Blend Shape Group「{blend_shape_group_name}」有一个网格「{mesh_name}"
+ "已分配、但网格未导出",
(
"*",
'A shape key named "{shape_key_name}" in a mesh'
+ ' named "{mesh_name}" is assigned to a blend shape'
+ ' group named "{blend_shape_group_name}" but the'
+ " shape key doesn't exist.",
): "名为 「{shape_key_name}」的形态键在网格"
+ "{mesh_name}」 已被分配给混合形状"
+ "但是此形态键不存在",
(
"*",
'need "{expect_node_type}" input' + ' in "{shader_val}" of "{material_name}"',
): "{material_name}」的「{shader_val}」需要、"
+ "{expect_node_type}」直接连接。 ",
(
"*",
'Image in material "{material_name}" is not set.' + " Please add an image.",
): "材质「{material_name}"
+ "有一个没有设置纹理的图像节点。"
+ "删除或设置图像。",
("*", "Symmetrize VRoid Bone Names on X-Axis"): "VRoid 骨骼名称的 X 轴对称性",
(
"*",
"Make VRoid bone names X-axis mirror editable",
): "将 VRoid 骨骼名称转换为 X 轴对称可编辑名称",
("*", "Current Pose"): "当前姿势",
("*", "Save Bone Mappings"): "保存骨骼对应关系",
("*", "Load Bone Mappings"): "加载骨骼对应关系",
(
"*",
"All Required VRM Human Bones have been assigned.",
): "所有 VRM 必需骨骼分配都已完成。",
(
"*",
"There are unassigned Required VRM Human Bones. Please assign all.",
): "存在未分配的 VRM 必需骨骼。" + "分配所有 VRM 必需骨骼。",
("Operator", "Automatic Bone Assignment"): "自动骨骼分配",
("Operator", "Export VRM"): "导出 VRM",
("Operator", "Import VRM"): "导入 VRM",
("Operator", "Preview MToon 0.0"): "MToon 0.0预览",
("Operator", "VRM Humanoid"): "VRM人形",
("Operator", "VRM License Confirmation"): "查看 VRM 使用条款",
("Operator", "Required VRM Human Bones Assignment"): "配置 VRM 必需骨骼",
(
"*",
"Conditions exported as Roll Constraint\n"
+ " - {copy_rotation}\n"
+ " - Enabled\n"
+ " - No Vertex Group\n"
+ " - {axis} is one of X, Y and Z\n"
+ " - No Inverted\n"
+ " - {mix} is {add}\n"
+ " - {target} is {local_space}\n"
+ " - {owner} is {local_space}\n"
+ " - No circular dependencies\n"
+ " - The one at the top of the list of\n"
+ " those that meet all the conditions\n",
): "约束导出为转动约束\n"
+ " - 复制旋转\n"
+ " - 启用\n"
+ " - 未指定顶点组\n"
+ " - 指定 XYZ 的一个轴\n"
+ " - 不可逆转\n"
+ " - 混合添加\n"
+ " - 目标是局部空间\n"
+ " - 由局部空间拥有\n"
+ " - 循环依赖关系不存在\n"
+ " - 满足所有条件的\n",
(
"*",
"Conditions exported as Aim Constraint\n"
+ " - {damped_track}\n"
+ " - Enabled\n"
+ " - Target Bone {head_tail} is 0\n"
+ " - No Follow Target Bone B-Bone\n"
+ " - No circular dependencies\n"
+ " - The one at the top of the list of\n"
+ " those that meet all the conditions\n",
): "约束导出为动画约束\n"
+ " - 阻尼轨道\n"
+ " - 启用状态\n"
+ " - 目标骨头的头部/Tail is 0\n"
+ " - 不遵循目标骨骼的 B 骨\n"
+ " - 循环依赖关系不存在\n"
+ " - 满足所有条件的\n",
(
"*",
"Conditions exported as Rotation Constraint\n"
+ " - {copy_rotation}\n"
+ " - Enabled\n"
+ " - No Vertex Group\n"
+ " - {axis} is X, Y and Z\n"
+ " - No Inverted\n"
+ " - {mix} is {add}\n"
+ " - {target} is {local_space}\n"
+ " - {owner} is {local_space}\n"
+ " - No circular dependencies\n"
+ " - The one at the top of the list of\n"
+ " those that meet all the conditions\n",
): "约束导出为旋转约束\n"
+ " - 复制旋转\n"
+ " - 启用状态\n"
+ " - 未指定顶点组\n"
+ " - 所有轴均以 XYZ 表示。\n"
+ " - 不可逆转\n"
+ " - 混合添加\n"
+ " - 目标是局部空间\n"
+ " - 由局部空间拥有\n"
+ " - 循环依赖关系不存在\n"
+ " - 满足所有条件的\n",
("*", "Axis Translation on Export"): "导出时转换轴",
(
"*",
"Offset and Scale are ignored in VRM 0.0",
): "偏移和缩放在 VRM 0.0 中被忽略",
(
"*",
'Material "{name}" {texture}\'s Offset and Scale are' + " ignored in VRM 0.0",
): "VRM 0.0材质「{name}」的{texture}的偏移和缩放将被忽略",
(
"*",
"Offset and Scale in VRM 0.0 are" + " the values of the Lit Color Texture",
): "VRM 0.0 中的偏移和缩放是 Lit Color Texture 的值",
(
"*",
'Material "{name}" {texture}\'s Offset and Scale'
+ " in VRM 0.0 are the values of"
+ " the Lit Color Texture",
): "VRM 0.0材质「name」的{texture}的偏移和缩放为" + "Lit Color Texture的值",
(
"*",
'It is recommended to set "{colorspace}"'
+ ' to "{input_colorspace}" for "{texture_label}"',
): "对于{texture_label}中的{input_colorspace},建议设置“{colorspace}",
(
"*",
'It is recommended to set "{colorspace}"'
+ ' to "{input_colorspace}" for "{texture_label}"'
+ ' in Material "{name}"',
): "材质{name}{texture_label}{input_colorspace}"
+ "建议使用「{colorspace}」的设定。",
(
"*",
"VRM Material",
): "VRM材质",
(
"*",
"Enable VRM MToon Material",
): "启用VRM MToon材质",
(
"*",
"Export Shape Key Normals",
): "导出形态键法线",
(
"*",
'The "Screen Coordinates" display is not yet implemented.\n'
+ 'It is displayed in the same way as "World Coordinates".',
): "「Screen Coordinates」尚未实施\n" + "与「World Coordinates」具有相同的显示",
(
"*",
"How to export this material to VRM.\n"
+ "Meet one of the following conditions.\n"
+ " - VRM MToon Material is enabled\n"
+ ' - Connect the "Surface" to a "Principled BSDF"\n'
+ ' - Connect the "Surface" to a "MToon_unversioned"\n'
+ ' - Connect the "Surface" to a "TRANSPARENT_ZWRITE"\n'
+ " - Others that are compatible with the glTF 2.0 add-on export\n",
): "如何将此材料导出到 VRM\n"
+ "必须满足以下条件之一。\n"
+ " - VRM MToon材质启用\n"
+ " - 指定「Surface」到「Principled BSDF」\n"
+ " - 指定「Surface」到「MToon_unversioned」\n"
+ " - 指定「Surface」到「TRANSPARENT_ZWRITE」\n"
+ " - 其他与glTF 2.0附加组件导出兼容的组件\n",
(
"*",
"Enable Animation",
): "使动画有效",
(
"*",
"Armature not found",
): "未找到骨架",
(
"*",
"Please assign required human bones",
): "请分配所需的人形骨骼",
("*", "Please set the version of VRM to 1.0"): "将 VRM 版本设置为 1.0",
(
"*",
"VRM Animation export requires a VRM 1.0 armature",
): "VRM 动画导出需要 VRM 1.0 骨架",
(
"*",
"VRM Animation import requires a VRM 1.0 armature",
): "VRM 动画导入需要 VRM 1.0 骨架",
("*", "Armature to be exported"): "要导出的骨架",
(
"*",
(
"Animations to be exported\n"
+ "- Humanoid bone rotations\n"
+ "- Humanoid hips bone translations\n"
+ "- Expression preview value\n"
+ "- Look At preview target translation\n"
),
): (
"エクスポートされるアニメーション\n"
+ "- 人形骨骼旋转值\n"
+ "- Humanoid Hips骨骼运动值\n"
+ "- 表情的预览值\n"
+ "- Look At预览目标移动值\n"
),
("*", "Armature to be animated"): "动画的骨骼",
(
"*",
"https://vrm-addon-for-blender.info/en-us/animation/",
): "https://vrm-addon-for-blender.info/ja-jp/animation/",
("Operator", "Open help in a Web Browser"): "在 Web 浏览器中打开“帮助”",
("*", "Allow Non-Humanoid Rig"): "允许使用非人形骨骼",
(
"*",
"VRMs exported as Non-Humanoid\n"
+ "Rigs can not have animations applied\n"
+ "for humanoid avatars.",
): ("作为 非人形 导出VRM\n" + "无法应用动画\n" + "于人形avatar。"),
(
"*",
"This armature will be exported but not as a humanoid."
+ " It cannot have animations applied"
+ " for humanoid avatars.",
): "这个骨架会导出但是不是作为人形。" + "人形avatars的动画不适用。",
(
"Operator",
"Blender 4.2 Material Upgrade Warning",
): "Blender 4.2材质升级警告",
(
"*",
'Updating to Blender 4.2 may unintentionally change the "{alpha_mode}"'
+ ' of some MToon materials to "{transparent}".\n'
+ 'This was previously implemented using the material\'s "{blend_mode}"'
+ " but since that setting was removed in Blender 4.2.\n"
+ 'In the current VRM add-on, the "{alpha_mode}" function has been'
+ " re-implemented using a different method. However, it"
+ "was not possible"
+ " to implement automatic migration of old settings values because those"
+ " values could no longer be read.\n"
+ 'Please check the "{alpha_mode}" settings for materials that have'
+ " MToon enabled.\n"
+ "Materials that may be affected are as follows:",
): "升级到 Blender 4.2可能会无意间改变一些MOOT材质的"
+ "{alpha_mode}」为「{transparent}\n"
+ "这是以前使用材质的“{blend_mode}实现的"
+ "但由于该设置在Blender 4.2中被删除\n"
+ "現在的VRM插件这个「{alpha_mode}」功能使用其他方式实现"
+ "但是无法自动迁移旧的配置 因为这些参数无法读取了\n"
+ "请检查材质「{alpha_mode}」设置中。"
+ "具有MToon启动\n"
+ "可能受影响的材质如下。",
#####################################################新建VR弹窗翻译
(
"*",
"Add VRM Humanoid",
): "添加VRM人形Humanoid",
(
"*",
"wip_with_template_mesh",
): "带有模板网格的WIP",
(
"*",
"Bone tall",
): "骨骼高度",
(
"*",
"head_ratio",
): "头部比例",
(
"*",
"head_width_ratio",
): "头部宽度比例",
(
"*",
"aging_ratio",
): "老化比例",
(
"*",
"eye_depth",
): "眼睛深度",
(
"*",
"shoulder_in_width",
): "肩内宽",
(
"*",
"shoulder_width",
): "肩宽",
(
"*",
"arm_length_ratio",
): "臂长比例",
(
"*",
"hand_ratio",
): "手比例",
(
"*",
"finger_1_2_ratio",
): "手指第一与二节比例",
(
"*",
"finger_2_3_ratio",
): "手指第二与三节比例",
(
"*",
"leg_length_ratio",
): "腿长比例",
(
"*",
"leg_width_ratio",
): "腿宽比例",
(
"*",
"leg_size",
): "腿大小",
###############################侧面板
# Meta
(
"*",
"Thumbnail:",
): "缩略图 Thumbnail:",
(
"*",
"Contact Information",
): "联系信息",
(
"*",
"Contact Information about the avatar",
): "关于此角色的联系信息",
(
"*",
"Allowed User",
): "许可用户",
(
"*",
"Only Author",
): "仅作者",
(
"*",
"Explicitly Licensed Person",
): "明确获得许可的人",
(
"*",
"Everyone",
): "所有人",
(
"*",
"Allowed user of the avatar",
): "允许使用该角色的用户",
(
"*",
"Allow",
): "允许",
(
"*",
"Disallow",
): "禁止",
(
"*",
"undefined",
): "未定义",
(
"*",
"Violent Usage",
): "暴力用途",
(
"*",
"Sexual Usage",
): "性用途",
(
"*",
"Commercial Usage",
): "商业用途",
(
"*",
"Other Permission URL",
): "其他许可链接",
(
"*",
"Redistribution Prohibited",
): "禁止再分发",
# Humanoid
(
"*",
"Required VRM Human Bones",
): "VRM必须的骨骼",
(
"*",
"Head:",
): "头部 Head:",
(
"*",
"Neck:",
): "颈部 Neck:",
(
"*",
"Chest:",
): "胸骨 Chest:",
(
"*",
"Spine:",
): "腰骨 Spine:",
(
"*",
"Hips:",
): "臀部 Hips:",
(
"*",
"Upper Arm:",
): "上臂 Upper Arm:",
(
"*",
"Lower Arm:",
): "前臂 Lower Arm:",
(
"*",
"Hand:",
): "手 Hand:",
(
"*",
"Upper Leg:",
): "大腿 Upper Leg:",
(
"*",
"Lower Leg:",
): "小腿 Lower Leg:",
(
"*",
"Foot:",
): "脚 Foot:",
(
"*",
"Optional VRM Human Bones",
): "VRM可选的骨骼",
(
"*",
"Eye:",
): "眼睛 Eye:",
(
"*",
"Jaw:",
): "下巴 Jaw:",
(
"*",
"Shoulder:",
): "肩膀 Shoulder:",
(
"*",
"Upper Chest:",
): "上胸部 Upper Chest:",
(
"*",
"Toes:",
): "脚趾 Toes:",
(
"*",
"Left Thumb:",
): "左拇指 Left Thumb:",
(
"*",
"Left Index:",
): "左食指 Left Index:",
(
"*",
"Left Middle:",
): "左中指 Left Middle:",
(
"*",
"Left Ring:",
): "左无名指 Left Ring:",
(
"*",
"Left Little:",
): "左小指 Left Little:",
(
"*",
"Right Thumb:",
): "右拇指 Right Thumb:",
(
"*",
"Right Index:",
): "右食指 Right Index:",
(
"*",
"Right Middle:",
): "右中指 Right Middle:",
(
"*",
"Right Ring:",
): "右无名指 Right Ring:",
(
"*",
"Right Little:",
): "右小指 Right Little:",
(
"*",
"Arm",
): "胳膊 Arm",
(
"*",
"Arm Stretch",
): "手臂伸展 Arm Stretch",
(
"*",
"Upper Arm Twist",
): "上臂扭转 Upper Arm Twist",
(
"*",
"Lower Arm Twist",
): "前臂扭转 Lower Arm Twist",
(
"*",
"Leg",
): "腿 Leg",
(
"*",
"Leg Stretch",
): "腿部伸展 Leg Stretch",
(
"*",
"Upper Leg Twist",
): "大腿扭转 Upper Leg Twist",
(
"*",
"Lower Leg Twist",
): "小腿扭转 Lower Leg Twist",
(
"*",
"Feet Spacing",
): "脚间距 Feet Spacing",
# Blender Shape
(
"*",
"Is Binary",
): "是二进制的",
(
"*",
"Use binary change in the blendshape group",
): "在混合形状组中使用二进制更改",
(
"*",
"Blink",
): "眨眼 Blink",
(
"*",
"Joy",
): "高兴 Joy",
(
"*",
"Angry",
): "生气 Angry",
(
"*",
"Sorrow",
): "悲伤 Sorrow",
(
"*",
"Fun",
): "有趣 Fun",
(
"*",
"Look Up",
): "向上看 Look Up",
(
"*",
"Look Down",
): "向下看 Look Down",
(
"*",
"Look Left",
): "向左看 Look Left",
(
"*",
"Look Right",
): "向右看 Look Right",
(
"*",
"Blink_L",
): "左眼眨眼 Blink_L",
(
"*",
"Blink_R",
): "右眼眨眼 Blink_R",
(
"*",
"Binds",
): "绑定 Binds",
(
"*",
"Material Values",
): "材质值 Material Values",
# First Person
(
"*",
"First Person Bone Offset",
): "第一人称骨骼偏移",
(
"*",
"Offset from the first person bone to follow the first person camera.",
): "从第一人称骨骼到跟随第一人称摄像头的偏移",
(
"*",
"Look At Type Name",
): "注视对象类型名",
(
"*",
"Mesh Annotations",
): "网格注释",
(
"*",
"Look At Horizontal Inner",
): "注视水平向内",
(
"*",
"Look At Horizontal Outer",
): "注视水平向外",
(
"*",
"Look At Vertical Up",
): "注视垂直向上",
(
"*",
"Look At Vertical Down",
): "注视垂直向下",
# Spring Bone
(
"*",
"Spring Bone Groups",
): "弹簧骨骼组 Spring Bone Groups",
(
"*",
"Collider Groups",
): "碰撞器组 Collider Groups",
}