From bc1c993e176fd531e5d5828bbba30b84d30c25b1 Mon Sep 17 00:00:00 2001 From: BERADQ Date: Sun, 11 Jan 2026 23:24:08 +0800 Subject: [PATCH] chore(i18n): Add Chinese (Simplified) translation --- dash-frontend/assets/lang/zh_CN.json | 152 ++++++++++++++++++++++++ scripts/translator/run.sh | 1 + scripts/translator/templates/zh_CN.json | 20 ++++ wayvr/src/assets/lang/zh_CN.json | 102 ++++++++++++++++ 4 files changed, 275 insertions(+) create mode 100644 dash-frontend/assets/lang/zh_CN.json create mode 100644 scripts/translator/templates/zh_CN.json create mode 100644 wayvr/src/assets/lang/zh_CN.json diff --git a/dash-frontend/assets/lang/zh_CN.json b/dash-frontend/assets/lang/zh_CN.json new file mode 100644 index 0000000..bc6130d --- /dev/null +++ b/dash-frontend/assets/lang/zh_CN.json @@ -0,0 +1,152 @@ +{ + "ACTIONS": { + "RECENTER_PLAYSPACE": "重置游玩区中心" + }, + "APP_LAUNCHER": { + "ASPECT": { + "SEMI_TALL": "略高", + "SEMI_WIDE": "略宽", + "SQUARE": "正方形", + "TALL": "高", + "WIDE": "宽" + }, + "ASPECT_TITLE": "比例", + "AUTOSTART": "启动时自动运行", + "LAUNCH": "启动", + "MODE": { + "CAGE": "兼容模式 (Cage)", + "NATIVE": "原生模式" + }, + "POS": { + "ANCHORED": "锚定", + "ANCHORED_HELP": "相对于中心标记保持固定。", + "FLOATING": "悬浮", + "FLOATING_HELP": "独立移动,显示时自动重置中心。", + "STATIC": "静态", + "STATIC_HELP": "不属于任何集合。不会重置中心。" + }, + "POS_TITLE": "定位", + "RES_TITLE": "分辨率" + }, + "APP_SETTINGS": { + "ALLOW_SLIDING": "抓取时允许摇杆交互", + "ANIMATION_SPEED": "UI 动画速度", + "BLOCK_GAME_INPUT": "屏蔽游戏输入", + "BLOCK_GAME_INPUT_HELP": "悬停在覆盖层上时屏蔽所有输入", + "BLOCK_GAME_INPUT_IGNORE_WATCH": "屏蔽输入时忽略手表", + "BLOCK_GAME_INPUT_IGNORE_WATCH_HELP": "悬停在手表上时不屏蔽输入", + "CAPTURE_METHOD": "Wayland 屏幕采集", + "CAPTURE_METHOD_HELP": "如果您遇到黑屏或花屏,请尝试更改此项", + "CLEAR_PIPEWIRE_TOKENS": "清除 PipeWire 令牌", + "CLEAR_PIPEWIRE_TOKENS_HELP": "下次启动时提示选择屏幕", + "CLEAR_SAVED_STATE": "清除保存的状态", + "CLEAR_SAVED_STATE_HELP": "重置集合与覆盖层位置", + "CLICK_FREEZE_TIME_MS": "点击冻结时间 (毫秒)", + "CLICK_FREEZE_TIME_MS_HELP": "有助于提高双击精度", + "CLOCK_12H": "12 小时制时钟", + "CONTROLS": "控制", + "DELETE_ALL_CONFIGS": "擦除配置", + "DELETE_ALL_CONFIGS_HELP": "从 conf.d 中删除所有配置文件", + "DOUBLE_CURSOR_FIX": "双光标修复", + "DOUBLE_CURSOR_FIX_HELP": "如果您看到两个光标,请启用此项", + "FEATURES": "功能", + "FOCUS_FOLLOWS_MOUSE_MODE": "触摸扳机时移动鼠标", + "HIDE_GRAB_HELP": "隐藏抓取帮助", + "HIDE_USERNAME": "隐藏用户名", + "INVERT_SCROLL_DIRECTION_X": "反转水平滚动方向", + "INVERT_SCROLL_DIRECTION_Y": "反转垂直滚动方向", + "KEYBOARD_MIDDLE_CLICK": "键盘中键点击", + "KEYBOARD_MIDDLE_CLICK_HELP": "使用紫色激光打字时的修饰键", + "KEYBOARD_SOUND_ENABLED": "键盘音效", + "LEFT_HANDED_MOUSE": "左手鼠标", + "LEFT_HANDED_MOUSE_HELP": "如果鼠标按钮反置,请使用此项", + "LONG_PRESS_DURATION": "长按持续时间", + "LOOK_AND_FEEL": "外观与体验", + "MISC": "杂项", + "NOTIFICATIONS_ENABLED": "启用通知", + "NOTIFICATIONS_SOUND_ENABLED": "通知音效", + "OPAQUE_BACKGROUND": "不透明背景", + "OPTION": { + "AUTO": "自动", + "AUTO_HELP": "如果支持,则使用 ScreenCopy GPU,\n否则使用 PipeWire GPU。", + "PIPEWIRE_HELP": "快速 GPU 采集,\n所有桌面环境的标准方式。", + "PW_FALLBACK_HELP": "高 CPU 占用的慢速方法。\n在 PipeWire GPU 不起作用时尝试。", + "SCREENCOPY_GPU_HELP": "快速,无屏幕共享弹窗。\n支持:Hyprland, Niri, River, Sway", + "SCREENCOPY_HELP": "慢速,无屏幕共享弹窗。\n支持:Hyprland, Niri, River, Sway" + }, + "POINTER_LERP_FACTOR": "指针平滑", + "RESTART_SOFTWARE": "重启软件", + "RESTART_SOFTWARE_HELP": "应用需要重启的设置", + "ROUND_MULTIPLIER": "UI 边缘圆角", + "SCREEN_RENDER_DOWN": "以较低分辨率渲染屏幕", + "SCREEN_RENDER_DOWN_HELP": "有助于解决高分辨率屏幕的锯齿问题", + "SCROLL_SPEED": "滚动速度", + "SETS_ON_WATCH": "在手表上显示集合", + "SPACE_DRAG_MULTIPLIER": "空间拖拽倍率", + "SPACE_DRAG_UNLOCKED": "允许在所有轴上进行空间拖拽", + "SPACE_ROTATE_UNLOCKED": "允许在所有轴上进行空间旋转", + "TROUBLESHOOTING": "故障排除", + "UPRIGHT_SCREEN_FIX": "垂直屏幕修复", + "UPRIGHT_SCREEN_FIX_HELP": "修复某些桌面上的垂直屏幕问题", + "USE_PASSTHROUGH": "启用穿透", + "USE_PASSTHROUGH_HELP": "如果 XR 运行时支持,则允许穿透", + "USE_SKYBOX": "启用天空盒", + "USE_SKYBOX_HELP": "如果没有场景应用或穿透,则显示天空盒", + "XR_CLICK_SENSITIVITY": "XR 点击灵敏度", + "XR_CLICK_SENSITIVITY_HELP": "模拟扳机灵敏度", + "XR_CLICK_SENSITIVITY_RELEASE": "XR 释放灵敏度", + "XR_CLICK_SENSITIVITY_RELEASE_HELP": "必须低于点击灵敏度", + "XWAYLAND_BY_DEFAULT": "默认以兼容模式运行应用", + "AUTOSTART_APPS": "开机启动应用" + }, + "APPLICATION_LAUNCHER": "应用启动器", + "APPLICATION_STARTED": "应用已启动", + "APPLICATIONS": "应用", + "AUDIO": { + "AUTO_SWITCH_TO_VR_AUDIO": "自动切换到 VR 音频", + "CARDS": "声卡", + "FAILED_TO_SWITCH_MICROPHONE": "切换麦克风失败", + "MICROPHONE_SET_SUCCESSFULLY": "麦克风设置成功", + "MICROPHONES": "麦克风", + "NO_VR_MICROPHONE_SWITCH_MANUALLY": "未找到 VR 麦克风。请手动切换。", + "NO_VR_SPEAKERS_FOUND_SWITCH_MANUALLY": "未找到 VR 扬声器。请手动切换。", + "SELECT_AUDIO_CARD_PROFILE": "选择声卡配置", + "SETTINGS": "音频设置", + "SPEAKERS": "扬声器", + "SPEAKERS_SET_SUCCESSFULLY": "扬声器设置成功", + "VOLUME": "音量" + }, + "CLOSE_WINDOW": "关闭窗口", + "DISPLAY_BRIGHTNESS": "显示亮度", + "FAILED_TO_LAUNCH_APPLICATION": "启动应用失败:", + "GAME_LAUNCHED": "游戏已启动", + "GAME_LIST": { + "NO_GAMES_FOUND": "未找到游戏" + }, + "GAMES": "游戏", + "GENERAL_SETTINGS": "通用设置", + "HEIGHT": "高度", + "HELLO": "你好!", + "HELLO_USER": "你好,{USER}!", + "HIDE": "隐藏", + "HOME_SCREEN": "主页", + "LIST_OF_PROCESSES": "进程列表", + "LIST_OF_WINDOWS": "窗口列表", + "MONADO_RUNTIME": "Monado 运行时", + "NO_WINDOWS_FOUND": "未找到窗口", + "POPUP_ADD_DISPLAY": { + "RESOLUTION": "分辨率" + }, + "PROCESS_LIST": { + "LOCATED_ON": "位于", + "NO_PROCESSES_FOUND": "未找到进程", + "TERMINATE_PROCESS_NAMED_X": "终止名为 \"{PROCESS_NAME}\" 的进程" + }, + "PROCESSES": "进程", + "REMOVE": "移除", + "SETTINGS": "设置", + "SHOW": "显示", + "TERMINATE_PROCESS": "终止进程", + "WIDTH": "宽度", + "WINDOW_OPTIONS": "窗口选项" +} \ No newline at end of file diff --git a/scripts/translator/run.sh b/scripts/translator/run.sh index 71a40bc..a6a2e8a 100755 --- a/scripts/translator/run.sh +++ b/scripts/translator/run.sh @@ -11,3 +11,4 @@ TEMPLATE="de" bun main.ts TEMPLATE="ja" bun main.ts TEMPLATE="es" bun main.ts TEMPLATE="it" bun main.ts +TEMPLATE="zh_CN" bun main.ts diff --git a/scripts/translator/templates/zh_CN.json b/scripts/translator/templates/zh_CN.json new file mode 100644 index 0000000..b8161f9 --- /dev/null +++ b/scripts/translator/templates/zh_CN.json @@ -0,0 +1,20 @@ +{ + "full_name": "Chinese (Simplified)", + "examples": [ + { + "key": "BAR.OPACITY", + "en": "Opacity", + "translated": "不透明度" + }, + { + "key": "PANEL.CLOSE", + "en": "Close panel", + "translated": "关闭面板" + }, + { + "key": "SETTINGS.LEFT_HANDED_MODE", + "en": "Left-handed mode", + "translated": "左手模式" + } + ] +} diff --git a/wayvr/src/assets/lang/zh_CN.json b/wayvr/src/assets/lang/zh_CN.json new file mode 100644 index 0000000..94226c1 --- /dev/null +++ b/wayvr/src/assets/lang/zh_CN.json @@ -0,0 +1,102 @@ +{ + "ANCHOR": { + "CENTER": "中心" + }, + "BAR": { + "ADD_MIRROR": "添加新的镜像覆盖层", + "EDIT_MODE_TOGGLE": "切换编辑模式", + "ADD_NEW_SET": "添加新集合", + "DELETE_CURRENT_SET": "删除当前集合", + "TOGGLE_VISIBILITY": "切换可见性", + "RESET_POSITION": "重置位置", + "RELOAD_FROM_DISK": "从磁盘重新加载 XML", + "CLOSE_MIRROR": "关闭镜像", + "CLOSE_APP": "关闭应用", + "FORCE_CLOSE_APP": "强制关闭应用" + }, + "DEFAULT": "默认", + "DISABLED": "已禁用", + "EDIT_MODE": { + "ADJUST_CURVATURE": "调整曲率", + "ALPHA_BLEND_MODE": "Alpha 混合模式", + "BLENDING_ADDITIVE": "叠加混合", + "CURVATURE": "曲率", + "DELETE": "长按以从当前集合中移除", + "DISABLE_GRAB": "禁用抓取", + "HINT_POINT_WINDOW": "指向窗口以更改其参数。\n完成后,使用右侧按钮退出编辑模式。", + "INTERPOLATION": "插值", + "ALIGN_TO_HMD": "对齐到头显 (HMD)", + "KEYBOARD": "键盘", + "LEAVE": "离开编辑模式", + "LOCK_INTERACTION": "锁定交互", + "MOVE_PRESS_AND_DRAG": "移动 (按住并拖拽)", + "OPACITY": "不透明度", + "POS_ANCHORED": "锚定:随中心标记移动。默认。", + "POS_FLOATING": "悬浮:独立移动,显示时重新居中。", + "POS_HAND_L": "跟随左手。", + "POS_HAND_R": "跟随右手。", + "POS_HMD": "跟随头显 (HMD)。", + "POS_STATIC": "静态:不属于任何集合,不重新居中。", + "POSITIONING": "定位", + "RESIZE_PRESS_AND_DRAG": "调整大小 (按住并拖拽)", + "STEREO_3D_MODE": { + "SPLIT_BOTTOM_TOP": "下→上", + "SPLIT_LEFT_RIGHT": "左→右", + "SPLIT_RIGHT_LEFT": "右→左", + "SPLIT_TOP_BOTTOM": "上→下", + "TITLE": "3D 立体模式", + "FULL_FRAME": "完整 3D", + "FULL_FRAME_SBS": "完整左右 (Full-SBS)", + "FULL_FRAME_TAB": "完整上下 (Full-TAB)", + "FULL_FRAME_BAT": "完整上下 (Full-BAT)" + }, + "MOUSE": { + "TITLE": "鼠标修复", + "WRONG_SCREEN_SELECTION_HELP": "如果光标在完全不同的屏幕上移动,\n可能是屏幕选择错误。请参阅 readme。", + "NORMAL": "正常", + "ROTATE90": "旋转 90°", + "ROTATE180": "旋转 180°", + "ROTATE270": "旋转 270°", + "FLIPPED": "镜像", + "FLIP90": "镜像旋转 90°", + "FLIP180": "镜像旋转 180°", + "FLIP270": "镜像旋转 270°" + } + }, + "GRAB": { + "ADJUST_DISTANCE": "调整距离", + "ADJUST_SIZE": "调整大小", + "UNRESTRICTED_MOVEMENT": "无限制移动", + "GRABBING_WATCH": "若要更换手,请将手表移至前方并用另一只手抓取。", + "GRABBING_STATIC": "此覆盖层是静态的,将固定在原位,忽略重新居中。", + "GRABBING_ANCHORED": "锚定覆盖层将一起移动。通过用另一只手抓取单个窗口,同时仍抓取锚点来分离它。", + "GRABBING_ANCHORED_EDIT": "此覆盖层将保持锚定在中心标记上。", + "GRABBING_FLOATING": "此覆盖层是悬浮的,将固定在原位,除非重新居中。", + "GRABBING_FOLLOW": "此覆盖层将跟随它所连接的设备。" + }, + "TOAST": { + "DEFAULT_TITLE": "通知", + "ERROR": "错误", + "CANNOT_ADD_SET": "无法添加集合!", + "MAXIMUM_SETS_REACHED": "已达到集合数量上限。", + "CANNOT_REMOVE_SET": "无法移除集合!", + "NO_SET_SELECTED": "未选择集合。", + "LAST_EXISTING_SET": "这是最后一个现有的集合。", + "EMPTY_SET": "空集合!", + "LETS_ADD_OVERLAYS": "让我们从手表添加一些覆盖层吧!", + "FIXING_FLOOR": "将在 5 秒内修复地面...", + "ONE_CONTROLLER_ON_FLOOR": "请将一个控制器放在地面上!" + }, + "WATCH": { + "ADD_NEW_SET": "添加新集合", + "CLEANUP_MIRRORS": "移除当前不可见的镜像", + "DASHBOARD": "控制面板 (Dashboard)", + "EDIT_MODE": "编辑模式", + "EDIT_MODE_EXPLANATION": "覆盖层现在可以单独移动和调整。\n控制此集合中哪些覆盖层可见:", + "FIX_FLOOR": "修复地面水平", + "LONG_PRESS_TO_DELETE_SET": "按住以删除", + "RECENTER": "重置游玩区中心 (Recenter)", + "SWITCH_TO_SET": "切换到集合", + "TOGGLE_FOR_CURRENT_SET": "切换当前集合" + } +} \ No newline at end of file