#!/usr/bin/env python # -*- coding: utf-8 -*- """ Localization module 本地化模块 - 提供UI文本的多语言支持 """ import maya.cmds as cmds import config # 当前选择的语言 current_language = config.TOOL_LANG # 默认使用中文 # 语言字典 LANG = { "zh_CN": { # 主界面 "geometry": "几何体", "rigging": "绑定", "behaviour": "行为", "definition": "定义", # 几何体模块 "geometry_title": "几何模型", "enter_model_name": "输入模型名称", "load": " 加 载 ", "load_model": "加载模型", "auto_load_meshes": "自动加载模型", "standardized_naming": "标准化命名", "automatic_grouping": "自动分组", "clear": " 清 理 ", "clear_all_models": "清理所有模型", "model_tools": "模型工具", "topology_structure": "拓扑结构", "select_lod": "选择LOD", "all": "全部", "create_lod": "创建LOD", "separate_model": "模型分离", "generate_face_components": "生成面部配件", "fix_normals": "修复法线", "fix_vertex_order": "修复点序", "fix_seams": "修复接缝", "optimize_scene": "优化场景", # 几何体模块功能 "confirm_delete": "确认删除", "delete_lod_confirm": "确定要删除LOD吗?", "yes": "是", "no": "否", "no_model_selected": "未选中模型", # 身体部位名称 "Head": " 头 部", "*Head": "*头 部", "Teeth": " 牙 齿", "*Teeth": "*牙 齿", "Saliva": " 牙 龈", "EyeLeft": " 左 眼", "*EyeLeft": "*左 眼", "EyeRight": " 右 眼", "*EyeRight": "*右 眼", "Eyeshell": " 眼 睑", "Eyeslashes": " 眉 毛", "EyesEdge": " 眉 毛", "Body": " 身 体", # 绑定模块 "rigging_title": "绑定系统", "presets": "预设", "export_presets": "导出预设", "import_presets": "导入预设", "assets": "资产", "project_path": "项目路径:", "Presets DNA:": "预设 DNA:", "descriptor": "描述", "name": "名称:", "archetype": "原型:", "gender": "性别:", "age": "年龄:", "translation_unit": "平移单位:", "rotation_unit": "旋转单位:", "coordinate_system": "坐标系统:", "lod_count": "LOD数量:", "remove_all": "移除全部", "import_skeleton": "导入骨骼", "build_rigging": "创建绑定", # 行为模块 "behaviour_title": "行为系统", "search": "搜索...", " Range - ": " 范围 - ", " Range + ": " 范围 + ", "Raw Control": "原始控制", "Related BlendShapes": "相关形态混合", "Add": "添加", "Delete": "删除", "Batch": "批量", "Rebuild": "重建", "Reposition": "重定位", "Blend": "混合", "Flip Target": "翻转目标", "Mirror Target": "镜像目标", "Find Flip Target": "查找翻转目标", "Add BlendShape": "添加形态混合", "Delete BlendShape": "删除形态混合", "Batch BlendShape": "批量形态混合", "Rebuild Select": "重建选择", "Reposition Joints": "重定位关节", "Blend Select": "混合选择", "Reset Default": "重置默认", "Find Select": "查找选择", "Write Current": "写入当前", "Controller Find": "查找控制器", "Select Joint": "选择关节", "Find Mirror": "查找镜像", # 定义模块 "definition_title": "定义系统", "define_lod_relations": "定义LOD关联", "create_geometry": "创建几何体", "Write Neutral Pose Joint Position": "写入中性Pose关节位置", "Write Geometry": "写入几何体", "Write Skin Weight": "写入蒙皮权重", "Write Blendshape Target": "写入BS对象", "Create Blendshapes For Mesh": "为模型创建Blendshape", "Create Skin For Mesh": "为模型创建绑定蒙皮", "Unbind Skin For Mesh": "为模型取消绑定蒙皮", "Tools": "工具", "New Head Netural Joint Transform": "重新定位头部关节", "New Body Netural Joint Transform": "重新定位身体关节", "New Netural Joint Transform": "重新定位全身关节", "Quick Create Preset": "快速创建预设", # 工具栏 "保存DNA": "保存DNA", "打开DNA": "打开DNA", "创建RL4节点": "创建RL4节点", "删除RL4节点": "删除RL4节点", "导入蒙皮": "导入蒙皮", "导出蒙皮": "导出蒙皮", "复制蒙皮": "复制蒙皮", "切换语言": "切换语言", "帮助": "帮助", # 工具栏功能 "save_dna": "保存DNA文件", "open_dna": "打开DNA文件", "import_skin": "导入蒙皮", "export_skin": "导出蒙皮", "help_title": "帮助", "help_message": "该插件是一个用于自定义MetaHuman的Maya插件。\n\n详细信息请参考文档。", "help": "帮助", "help_not_available": "帮助文档暂不可用", "ok": "确定" }, "en_US": { # Main Interface "geometry": "Geometry", "rigging": "Rigging", "behaviour": "Behaviour", "definition": "Definition", # Geometry Module "geometry_title": "Geometry Model", "enter_model_name": "Enter Model Name", "load": " Load ", "load_model": "Load Model", "auto_load_meshes": "Auto Load Meshes", "standardized_naming": "Standardized Naming", "automatic_grouping": "Automatic Grouping", "clear": "Clear", "clear_all_models": "Clear All Models", "model_tools": "Model Tools", "topology_structure": "Topology Structure", "select_lod": "Select LOD", "all": "All", "create_lod": "Create LOD", "separate_model": "Separate Model", "generate_face_components": "Generate Face Components", "fix_normals": "Fix Normals", "fix_vertex_order": "Fix Vertex Order", "fix_seams": "Fix Seams", "optimize_scene": "Optimize Scene", # Geometry Module Functions "confirm_delete": "Comfirm delete", "delete_lod_confirm": "Confirm delete LOD?", "yes": "YES", "no": "NO", "no_model_selected": "No model selected", # Body Parts "Head": " Head", "*Head": "*Head", "Teeth": " Teeth", "*Teeth": "*Teeth", "Saliva": " Saliva", "EyeLeft": " EyeLeft", "*EyeLeft": "*EyeLeft", "EyeRight": " EyeRight", "*EyeRight": "*EyeRight", "Eyeshell": " Eyeshell", "Eyeslashes": " Eyelashes", "EyesEdge": " Eyelashes", "Body": " Body", # Rigging Module "rigging_title": "Rigging System", "presets": "Presets", "export_presets": "Export Presets", "import_presets": "Import Presets", "assets": "Assets", "project_path": "Project Path:", "Presets DNA:": "Presets DNA:", "descriptor": "Descriptor", "name": "Name:", "archetype": "Archetype:", "gender": "Gender:", "age": "Age:", "translation_unit": "Translation Unit:", "rotation_unit": "Rotation Unit:", "coordinate_system": "Coordinate System:", "lod_count": "LOD Count:", "remove_all": "Remove All", "import_skeleton": "Import Skeleton", "build_rigging": "Build Rigging", # Behaviour Module "behaviour_title": "Behaviour System", "search": "Search...", " Range - ": " Range - ", " Range + ": " Range + ", "Raw Control": "Raw Control", "Related BlendShapes": "Related BlendShapes", "Add": "Add", "Delete": "Delete", "Batch": "Batch", "Rebuild": "Rebuild", "Reposition": "Reposition", "Blend": "Blend", "Flip Target": "Flip Target", "Mirror Target": "Mirror Target", "Find Flip Target": "Find Flip Target", "Add BlendShape": "Add BlendShape", "Delete BlendShape": "Delete BlendShape", "Batch BlendShape": "Batch BlendShape", "Rebuild Select": "Rebuild Select", "Reposition Joints": "Reposition Joints", "Blend Select": "Blend Select", "Reset Default": "Reset Default", "Find Select": "Find Select", "Write Current": "Write Current", "Controller Find": "Controller Find", "Select Joint": "Select Joint", "Find Mirror": "Find Mirror", # Definition Module "definition_title": "Definition System", "define_lod_relations": "Define LOD Relations", "create_geometry": "Create Geometry", "Write Neutral Pose Joint Position": "Write Neutral Pose Joint Position", "Write Geometry": "Write Geometry", "Write Skin Weight": "Write Skin Weight", "Write Blendshape Target": "Write BlendShape Target", "Create Blendshapes For Mesh": "Create BlendShapes For Mesh", "Create Skin For Mesh": "Create Skin For Mesh", "Unbind Skin For Mesh": "Unbind Skin For Mesh", "Tools": "Tools", "New Head Netural Joint Transform": "Relocate Head Joint", "New Body Netural Joint Transform": "Relocate Body Joint", "New Netural Joint Transform": "Relocate All Joints", "Quick Create Preset": "Quick Create Preset", # Toolbar "保存DNA": "Save DNA", "打开DNA": "Open DNA", "创建RL4节点": "Create RL4 Node", "删除RL4节点": "Delete RL4 Node", "导入蒙皮": "Import Skin", "导出蒙皮": "Export Skin", "复制蒙皮": "Copy Skin", "切换语言": "Switch Language", "帮助": "Help", # 工具栏功能 "save_dna": "Save DNA file", "open_dna": "Open DNA file", "import_skin": "Import skin", "export_skin": "Export skin", "help_title": "Help", "help_message": "This plug-in is a Maya plug-in for customizing MetaHuman.\n\nPlease refer to the documentation for details.", "help": "Help", "help_not_available": "Help document is not available", "ok": "OK" } } def TEXT(key, default=None): """ 获取当前语言的文本 Args: key: 文本键名 default: 如果找不到对应文本,返回的默认值 Returns: str: 当前语言对应的文本 """ global current_language if not default: default = key # 如果key在当前语言中存在,返回翻译文本 if key in LANG.get(current_language, {}): return LANG[current_language][key] # 如果只在英文中存在,返回英文 if key in LANG.get("en_US", {}): return LANG["en_US"][key] # 否则返回默认值 return default def switch_language(): """ 切换当前语言 在中文和英文之间切换 Returns: str: 切换后的语言代码 """ global current_language # 切换语言 if current_language == "zh_CN": current_language = "en_US" print("已切换到英文界面") else: current_language = "zh_CN" print("已切换到中文界面") return current_language def get_current_language(): """ 获取当前语言代码 Returns: str: 当前语言代码 """ return current_language def set_language(lang_code): """ 设置当前语言 Args: lang_code: 语言代码,如'zh_CN'或'en_US' Returns: bool: 是否设置成功 """ global current_language if lang_code in LANG: current_language = lang_code return True return False