feat: 完善 Web 界面国际化支持

- 将包含数字的无意义 i18n 键名替换为语义化名称 (如 kvm_text1 → about_title)
- 为缺失多语言支持的界面文本添加中英文翻译
- 修复不准确的翻译内容和 HTML 标签格式错误
- 更新所有 Pug 模板文件以使用新的 i18n 键名
- 新增登录页面"记住我"、USB 连接确认等功能的多语言支持
- 统一翻译键命名规范,提升代码可维护性
This commit is contained in:
mofeng-git
2025-08-21 13:23:33 +08:00
parent 2c056ca3e3
commit 19d1c52ac4
21 changed files with 459 additions and 444 deletions

View File

@@ -10,118 +10,118 @@
"footer-left": "This site is actively using JavaScript.<br>It doesn't contain ads, but is blocked by some ad filters.<br>Please turn it off to continue and reload the page.",
"index": " One-KVM Index ",
"copyright": "Copyright &copy; 2018-2024 Maxim Devaev | Modified by SilentWind",
"index_text_1": "Please note that when you are working with a KVM session or another application that captures the keyboard,you can't use some keyboard shortcuts such as Ctrl+Alt+Del (which will be caught by your OS) or Ctrl+W (caught by your browser).",
"index_text_2": "To override this limitation you can use Google Chrome in application mode.",
"serve_name": "Server:",
"index_text_10":"PiKVM Project",
"index_text_11":"PiKVM Documentation",
"index_text_12":"One-KVM Project",
"index_text_13":"One-KVM Documentation",
"copyright": "Copyright &copy; 2018-2025 Maxim Devaev | Modified by SilentWind",
"keyboard_limitation_note": "Please note that when you are working with a KVM session or another application that captures the keyboard,you can't use some keyboard shortcuts such as Ctrl+Alt+Del (which will be caught by your OS) or Ctrl+W (caught by your browser).",
"browser_solution_note": "To override this limitation you can use Google Chrome in application mode.",
"serve_name": "Server Name:",
"pikvm_project_link":"PiKVM Project",
"pikvm_documentation_link":"PiKVM Documentation",
"onekvm_project_link":"One-KVM Project",
"onekvm_documentation_link":"One-KVM Documentation",
"index_title":"The Open Source KVM over IP",
"vnc_text1": "This One-KVM device has running <b>kvmd-vnc</b> daemon and provides VNC access to the server.",
"vnc_text2": "<b>WARNING!</b> We strongly don't recommend you to use VNC in untrusted networks without enabled X.509 or TLS encryption. Otherwise your passwords are transmitted in a plain text over the network.",
"vnc_text3": "Your VNC client must support Tight JPEG compression and password authentication. <a href=\"https://tigervnc.org\">TigerVNC</a> is a good choice.On Linux, this client will most likely be available for installation from the repository. It can also be called vncviewer.",
"vnc_daemon_running": "This One-KVM device has running <b>kvmd-vnc</b> daemon and provides VNC access to the server.",
"vnc_security_warning": "<b>WARNING!</b> We strongly don't recommend you to use VNC in untrusted networks without enabled X.509 or TLS encryption. Otherwise your passwords are transmitted in a plain text over the network.",
"vnc_client_requirements": "Your VNC client must support Tight JPEG compression and password authentication. <a href=\"https://tigervnc.org\">TigerVNC</a> is a good choice.On Linux, this client will most likely be available for installation from the repository. It can also be called vncviewer.",
"ipmi_text1":"This One-KVM device has running <b>kvmd-ipmi</b> daemon and provides IPMI 2.0 interface for some basic BMC operations like on/off/reset the server.",
"ipmi_text2":"<b>WARNING!</b> We strongly don't recommend you to use IPMI in untrusted networks because this protocol is completely unsafe by design. In short, the authentication process for IPMI mandates that the server send a salted SHA1 or MD5 hash of the requested user's password to the client, prior to the client authenticating.",
"ipmi_text3":"<b>NEVER</b> use the same passwords for KVMD and IPMI users. And even better not to use IPMI. Instead, you can directly use KVMD API via curl. Here some examples:",
"ipmi_daemon_running":"This One-KVM device has running <b>kvmd-ipmi</b> daemon and provides IPMI 2.0 interface for some basic BMC operations like on/off/reset the server.",
"ipmi_security_warning":"<b>WARNING!</b> We strongly don't recommend you to use IPMI in untrusted networks because this protocol is completely unsafe by design. In short, the authentication process for IPMI mandates that the server send a salted SHA1 or MD5 hash of the requested user's password to the client, prior to the client authenticating.",
"ipmi_password_recommendation":"<b>NEVER</b> use the same passwords for KVMD and IPMI users. And even better not to use IPMI. Instead, you can directly use KVMD API via curl. Here some examples:",
"kvm_text1":"About",
"kvm_text2":"// These <a href=\"https://github.com/pikvm/pikvm?tab=readme-ov-file#special-thanks\">kind people</a> donated money to the PiKVM project and supported the work on it. <br>// If you also want to support this project, you can donate on <a target=\"_blank\" href=\"https://www.patreon.com/pikvm\"> Patreon</a> or <a target=\"_blank\" href=\"https://paypal.me/pikvm\"> Paypal</a>.<br><br>// These <a href=\"https://one-kvm.mofeng.run/thanks/#_2\">kind people</a> donated money to the One-KVM project and supported the work on it. <br>// If you also want to support this project, you can donate on <a target=\"_blank\" href=\"https://afdian.com/a/silentwind\"> afdian </a>.",
"kvm_text3":"System",
"kvm_text4":"Runtime settings &amp; tools",
"kvm_text5":"Term",
"kvm_text6":"About",
"kvm_text7":"Log",
"kvm_text8":"WoL",
"kvm_text9":"Resolution:",
"kvm_text10":"JPEG quality:",
"kvm_text11":"JPEG max fps:",
"kvm_text12":"H.264 kbps:",
"kvm_text13":"H.264 gop",
"kvm_text14":"Video mode",
"kvm_text15":"Virtual Keyboard",
"kvm_text16":"Terminal",
"kvm_text17":"Orientation:",
"kvm_text18":"Default",
"kvm_text19":"Audio volume:",
"kvm_text20":"&bull; Show stream",
"kvm_text21":"&bull; Screenshot",
"kvm_text22":"Reset stream",
"kvm_text23":"Keyboard mode:",
"kvm_text24":"Mouse mode:",
"kvm_text25":"Keyboard &amp; Mouse (HID) settings",
"kvm_text26":"Mouse polling:",
"kvm_text27":"Relative sensitivity:",
"kvm_text28":"Reverse scrolling:",
"kvm_text29":"Scroll rate:",
"kvm_text30":"&bull; Show keyboard",
"kvm_text31":"Reset HID",
"about_title":"About",
"about_sponsors":"// These <a href=\"https://github.com/pikvm/pikvm?tab=readme-ov-file#special-thanks\">kind people</a> donated money to the PiKVM project and supported the work on it. <br>// If you also want to support this project, you can donate on <a target=\"_blank\" href=\"https://www.patreon.com/pikvm\"> Patreon</a> or <a target=\"_blank\" href=\"https://paypal.me/pikvm\"> Paypal</a>.<br><br>// These <a href=\"https://one-kvm.mofeng.run/thanks/#_2\">kind people</a> donated money to the One-KVM project and supported the work on it. <br>// If you also want to support this project, you can donate on <a target=\"_blank\" href=\"https://afdian.com/a/silentwind\"> afdian </a>.",
"system_menu":"System",
"system_runtime_settings":"Runtime settings &amp; tools",
"system_terminal":"Term",
"system_about":"About",
"system_log":"Log",
"system_wol":"WoL",
"video_resolution":"Resolution:",
"video_jpeg_quality":"JPEG quality:",
"video_jpeg_fps":"JPEG max fps:",
"video_h264_bitrate":"H.264 kbps:",
"video_h264_gop":"H.264 gop",
"video_mode":"Video mode",
"virtual_keyboard_title":"Virtual Keyboard",
"terminal_title":"Terminal",
"video_orientation":"Orientation:",
"video_orientation_default":"Default",
"audio_volume":"Audio volume:",
"stream_show":"&bull; Show stream",
"stream_screenshot":"&bull; Screenshot",
"stream_reset":"Reset stream",
"hid_keyboard_mode":"Keyboard mode:",
"hid_mouse_mode":"Mouse mode:",
"hid_settings":"Keyboard &amp; Mouse (HID) settings",
"hid_mouse_polling":"Mouse polling:",
"hid_mouse_sensitivity":"Relative sensitivity:",
"hid_mouse_reverse_scroll":"Reverse scrolling:",
"hid_mouse_scroll_rate":"Scroll rate:",
"hid_show_keyboard":"&bull; Show keyboard",
"hid_reset":"Reset HID",
"kvm_text32":"Macro",
"kvm_text33":"Record and play HID/ATX/GPIO actions<br>",
"kvm_text34":"For security reasons, the record will not be saved on the PiKVM",
"kvm_text35":"Rec",
"kvm_text36":"Stop",
"kvm_text37":"Play",
"kvm_text38":"Clear",
"kvm_text39":"Script time:",
"kvm_text40":"Scripted events:",
"kvm_text41":"include delays",
"kvm_text42":"Upload script",
"kvm_text43":"Download script",
"macro_menu":"Macro",
"macro_description":"Record and play HID/ATX/GPIO actions<br>",
"macro_security_note":"For security reasons, the record will not be saved on the PiKVM",
"macro_record":"Rec",
"macro_stop":"Stop",
"macro_play":"Play",
"macro_clear":"Clear",
"macro_script_time":"Script time:",
"macro_script_events":"Scripted events:",
"macro_include_delays":"include delays",
"macro_upload_script":"Upload script",
"macro_download_script":"Download script",
"kvm_text44":"Text",
"kvm_text45":"Paste text as keypress sequence<br>",
"kvm_text46":"Please note that One-KVM cannot switch the keyboard layout",
"kvm_text47":"&bull; Paste",
"kvm_text48":"using host keymap",
"kvm_text49":"Text recognition <sup><i>&beta;</i></sup><br>",
"kvm_text50":"OCR works locally on One-KVM",
"kvm_text51":"&bull; Select area",
"kvm_text52":"for",
"kvm_text53":"text recognition",
"kvm_text54":"Press <b>Enter</b> to recognize and copy text to clipboard",
"kvm_text55":"Press <b>Esc</b> to cancel selection",
"text_menu":"Text",
"text_paste_description":"Paste text as keypress sequence<br>",
"text_keyboard_layout_note":"Please note that One-KVM cannot switch the keyboard layout",
"text_paste_button":"&bull; Paste",
"text_using_keymap":"using host keymap",
"text_ocr_title":"Text recognition <sup><i>&beta;</i></sup><br>",
"text_ocr_local_note":"OCR works locally on One-KVM",
"text_ocr_select_area":"&bull; Select area",
"text_ocr_for":"for",
"text_ocr_recognition":"text recognition",
"text_ocr_enter_hint":"Press <b>Enter</b> to recognize and copy text to clipboard",
"text_ocr_escape_hint":"Press <b>Esc</b> to cancel selection",
"kvm_text56":"Shortcuts",
"kvm_text57":"Quick keyboard shortcuts<br>",
"kvm_text58":"Also see <i>System &rarr; Show keyboard<i>",
"kvm_text59":"help",
"shortcuts_menu":"Shortcuts",
"shortcuts_description":"Quick keyboard shortcuts<br>",
"shortcuts_also_see":"Also see <i>System &rarr; Show keyboard</i>",
"shortcuts_help":"help",
"kvm_text60":"Drive",
"kvm_text61":"Mass Storage Drive:",
"kvm_text62":"Image:",
"kvm_text63":"Drive <a target=\"_blank\" href=\"https://docs.pikvm.org/msd\">mode</a>:",
"kvm_text64":"Select image to upload",
"kvm_text65":"Upload",
"kvm_text66":"Abort",
"kvm_text68":"Specify a local file:",
"kvm_text69":"<b>Or</b> paste a URL:",
"kvm_text70":"Upload partition:",
"kvm_text71":"Note:",
"kvm_text72":"&bull; Don't close the browser page until the upload is complete.",
"kvm_text73":"&bull; To speed up the upload, close the stream window.",
"kvm_text74":"New image:",
"kvm_text75":"Upload size:",
"kvm_text76":"Connect drive to Server",
"kvm_text77":"Disconnect",
"kvm_text78":"Reset",
"kvm_text79":"Video Record<br>",
"kvm_text80":"Record video using the browser API, and will be downloaded automatically",
"kvm_text81":"Start recording",
"kvm_text82":"End recording",
"kvm_text83":"Web UI settings",
"kvm_text84":"File display:",
"kvm_text85":"Quick file transfer:",
"kvm_text86":"&bull; Select NormalFiles tab to upload, package them and mount image",
"kvm_text87":"&bull; Disconnect MSD, unpackage it, select tab to download",
"kvm_text88":"Package files into image",
"kvm_text89":"Unpackage files from image",
"kvm_text90":"ImageFiles",
"kvm_text91":"NormalFiles",
"drive_menu":"Drive",
"drive_title":"Mass Storage Drive:",
"drive_image":"Image:",
"drive_mode":"Drive <a target=\"_blank\" href=\"https://docs.pikvm.org/msd\">mode</a>:",
"drive_select_upload":"Select image to upload",
"drive_upload":"Upload",
"drive_abort":"Abort",
"drive_local_file":"Specify a local file:",
"drive_paste_url":"<b>Or</b> paste a URL:",
"drive_upload_partition":"Upload partition:",
"drive_note":"Note:",
"drive_note_browser":"&bull; Don't close the browser page until the upload is complete.",
"drive_note_stream":"&bull; To speed up the upload, close the stream window.",
"drive_new_image":"New image:",
"drive_upload_size":"Upload size:",
"drive_connect":"Connect drive to Server",
"drive_disconnect":"Disconnect",
"drive_reset":"Reset",
"video_record_title":"Video Record<br>",
"video_record_description":"Record video using the browser API, and will be downloaded automatically",
"video_record_start":"Start recording",
"video_record_stop":"End recording",
"webui_settings":"Web UI settings",
"drive_file_display":"File display:",
"drive_quick_transfer":"Quick file transfer:",
"drive_transfer_upload_note":"&bull; Select NormalFiles tab to upload, package them and mount image",
"drive_transfer_download_note":"&bull; Disconnect MSD, unpackage it, select tab to download",
"drive_package_files":"Package files into image",
"drive_unpackage_files":"Unpackage files from image",
"drive_image_files":"Image Files",
"drive_normal_files":"Normal Files",
"atx-ask-switch":"Ask click confirmation",
"hid-recorder-loop-switch":"Infinite loop playback",
@@ -151,5 +151,11 @@
"msd-message-downloads":"The image is being downloaded from One-KVM",
"msd-message-another-user-uploads":"Another user uploads an image",
"page-full-tab-stream-switch":"Expand for the entire tab by default",
"hid-keyboard-bad-link-switch":"Bad link mode (release keys immediately)"
"hid-keyboard-bad-link-switch":"Bad link mode (release keys immediately)",
"remember_me":"Remember me:&nbsp;",
"web_ui_settings":"Web UI settings",
"usb_breaker_confirm":"Turning off this switch will disconnect the main USB from the server. Are you sure you want to continue?",
"usb_connect_main":"Connect main USB to Server:",
"locator_led_enable":"Enable locator LED:",
"stream-suspend-switch":"Suspend stream when tab is not active:"
}