Files
MetaFusion/scripts/ui/localization.py
2025-05-08 23:57:22 +08:00

301 lines
9.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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": "优化场景",
# 绑定模块
"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节点",
"导入蒙皮": "导入蒙皮",
"导出蒙皮": "导出蒙皮",
"复制蒙皮": "复制蒙皮",
"切换语言": "切换语言",
"帮助": "帮助"
},
"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",
# 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"
}
}
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