From acdcaa991edd7d4baa6a560c183258d0bfae92a7 Mon Sep 17 00:00:00 2001 From: Gizmo Date: Wed, 11 Jan 2023 20:01:24 +0800 Subject: [PATCH] feat: add simplified chinese translation --- .../Editor/Localization/Localization.cs | 5 +- .../Editor/Localization/zh-hans.json | 60 +++++++++++++++++++ .../Editor/Localization/zh-hans.json.meta | 3 + 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 Packages/nadena.dev.modular-avatar/Editor/Localization/zh-hans.json create mode 100644 Packages/nadena.dev.modular-avatar/Editor/Localization/zh-hans.json.meta diff --git a/Packages/nadena.dev.modular-avatar/Editor/Localization/Localization.cs b/Packages/nadena.dev.modular-avatar/Editor/Localization/Localization.cs index 4dbaf917..6c1998c8 100644 --- a/Packages/nadena.dev.modular-avatar/Editor/Localization/Localization.cs +++ b/Packages/nadena.dev.modular-avatar/Editor/Localization/Localization.cs @@ -19,9 +19,10 @@ namespace nadena.dev.modular_avatar.core.editor private static ImmutableDictionary SupportedLanguageDisplayNames = ImmutableDictionary.Empty .Add("en", "English") - .Add("ja", "日本語"); + .Add("ja", "日本語") + .Add("zh-hans", "简体中文"); - private static ImmutableList SupportedLanguages = new string[] {"en", "ja"}.ToImmutableList(); + private static ImmutableList SupportedLanguages = new string[] {"en", "ja", "zh-hans"}.ToImmutableList(); private static string[] DisplayNames = SupportedLanguages.Select(l => { diff --git a/Packages/nadena.dev.modular-avatar/Editor/Localization/zh-hans.json b/Packages/nadena.dev.modular-avatar/Editor/Localization/zh-hans.json new file mode 100644 index 00000000..4fe95081 --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Editor/Localization/zh-hans.json @@ -0,0 +1,60 @@ +{ + "boneproxy.foldout.advanced": "高级设置", + "boneproxy.target": "目标", + "menuinstall.help.hint_set_menu": "This prefab will be installed to the root menu of your avatar by default. Select a different menu or uncheck the component's enabled checkbox to prevent this.", + "menuinstall.help.hint_bad_menu": "Selected menu asset is not part of your avatar.", + "menuinstall.installto": "安装到", + "menuinstall.installto.tooltip": "The controls for this prefab will be appended to this menu", + "menuinstall.selectmenu": "选择菜单", + "menuinstall.showcontents": "显示菜单内容", + "menuinstall.showcontents.notselected": "未选择菜单", + "menuinstall.devoptions": "预制体开发者选项", + "menuinstall.menu_icon_too_large" : "The icon set in the menu is too large than 256 pixels.", + "menuinstall.menu_icon_uncompressed" : "The icon set in the menu is not set for compression.", + "menuinstall.srcmenu": "安装的菜单", + "params.autodetect_header": " Autodetected Parameters ", + "params.internal": "内部", + "params.pb_prefix": "PhysBones前缀", + "params.syncmode": "同步模式", + "params.saved": "保存", + "params.default": "默认值", + "params.fieldname": "字段名", + "params.remapto": "映射到...", + "params.remapto.tooltip": "Enter a new name for this parameter here to resolve name conflicts", + "params.devmode": "显示预制体开发者选项", + "merge_armature.merge_target": "合并目标", + "merge_armature.merge_target.tooltip": "The armature (or subtree) to merge this object into", + "merge_armature.prefix": "骨骼前缀", + "merge_armature.prefix.tooltip": "Prefix expected on bones in this merged armature", + "merge_armature.suffix": "骨骼后缀", + "merge_armature.suffix.tooltip": "Suffix expected on bones in this merged armature", + "merge_armature.locked": "锁定位置", + "merge_armature.locked.tooltip": "Lock the position of this armature's bones to the target armature (and vice versa). Useful for creating animations.", + "merge_armature.adjust_names": "根据合并目标调整骨骼名称", + "merge_armature.adjust_names.tooltip": "Changes bone names to match the target avatar. Useful for porting outfits from one avatar to another.", + "path_mode.Relative": "对象的相对路径", + "path_mode.Absolute": "绝对路径 (基于Avatar的Root)", + "merge_animator.animator": "合并的目标动画器", + "merge_animator.layer_type": "Layer类型", + "merge_animator.delete_attached_animator": "删除额外的动画器", + "merge_animator.delete_attached_animator.tooltip": "Delete the animator attached to this object after merging", + "merge_animator.path_mode": "路径模式", + "merge_animator.path_mode.tooltip": "How to interpret paths in animations. Using relative mode lets you record animations from an animator on this object.", + "merge_animator.match_avatar_write_defaults": "匹配Avatar的 Write Defaults设置", + "merge_animator.match_avatar_write_defaults.tooltip": "Match the write defaults setting used on the avatar's animator. If the avatar's write defaults settings are inconsistent, the settings on the animator will be left alone.", + "fpvisible.normal": "This object will be visible in your first person view.", + "fpvisible.NotUnderHead": "This component has no effect when not placed under the head bone.", + "fpvisible.quest": "This component is not compatible with the standalone Oculus Quest and will have no effect.", + "fpvisible.InPhysBoneChain": "This object is controlled by a Physics Bone chain and cannot be made visible in first person safely. Select the start of the chain instead.", + "blendshape.mesh": "网格", + "blendshape.source": "源形态键", + "blendshape.target": "目标形态键", + "hint.not_in_avatar": "此组件需要放置于你的Avatar中才能工作", + "boneproxy.err.MovingTarget": "您不能指定将由其他 Modular Avatar 组件移动的目标对象", + "boneproxy.err.NotInAvatar": "你必须指定一个在Avatar中的对象", + "boneproxy.attachment": "附加模式", + "boneproxy.attachment.AsChildAtRoot": "作为子物件, 放置于Root", + "boneproxy.attachment.AsChildKeepWorldPosition": "作为子物件, 保持原有位置", + "pb_blocker.help": "This object will not be affected by PhysBones attached to parents.", + "hint.bad_vrcsdk": "检测到不兼容的VRCSDK版本.\n\n请尝试升级VRCSDK; 如果这不起作用, 请尝试新版本的Modular Avatar." +} \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Editor/Localization/zh-hans.json.meta b/Packages/nadena.dev.modular-avatar/Editor/Localization/zh-hans.json.meta new file mode 100644 index 00000000..63644b5f --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Editor/Localization/zh-hans.json.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b36a74f1a05d48d5be4e288e9c27eef5 +timeCreated: 1673437547 \ No newline at end of file