mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 01:00:29 +08:00
feat: 完善 Web 界面国际化支持
- 将包含数字的无意义 i18n 键名替换为语义化名称 (如 kvm_text1 → about_title) - 为缺失多语言支持的界面文本添加中英文翻译 - 修复不准确的翻译内容和 HTML 标签格式错误 - 更新所有 Pug 模板文件以使用新的 i18n 键名 - 新增登录页面"记住我"、USB 连接确认等功能的多语言支持 - 统一翻译键命名规范,提升代码可维护性
This commit is contained in:
parent
2c056ca3e3
commit
19d1c52ac4
@ -81,17 +81,17 @@
|
||||
</div>
|
||||
<div id="app-keyboard-warning">
|
||||
<hr>
|
||||
<p class="text" i18n="index_text_1">
|
||||
<p class="text" i18n="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).
|
||||
</p>
|
||||
<p class="text" i18n="index_text_2">To override this limitation you can use <a target="_blank" href="https://google.com/chrome">Google Chrome</a>
|
||||
<p class="text" i18n="browser_solution_note">To override this limitation you can use <a target="_blank" href="https://google.com/chrome">Google Chrome</a>
|
||||
or <a target="_blank" href="https://chromium.org/Home">Chromium</a> in application mode.
|
||||
</p>
|
||||
<div class="code" id="app-text"></div>
|
||||
<div class="code hidden" id="app-text"></div>
|
||||
</div>
|
||||
<hr>
|
||||
<p class="text credits"><a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12">One-KVM Project</a> | <a target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13">One-KVM Documentation</a></p>
|
||||
<p class="text credits"><a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="onekvm_project_link">One-KVM Project</a> | <a target="_blank" href="https://one-kvm.mofeng.run" i18n="onekvm_documentation_link">One-KVM Documentation</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@ -30,16 +30,16 @@ block start
|
||||
|
||||
#app-keyboard-warning
|
||||
hr
|
||||
p.text(i18n="index_text_1")
|
||||
p.text(i18n="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).
|
||||
p.text(i18n="index_text_2")
|
||||
p.text(i18n="browser_solution_note")
|
||||
| To override this limitation you can use #[a(target="_blank" href="https://google.com/chrome") Google Chrome]
|
||||
| or #[a(target="_blank" href="https://chromium.org/Home") Chromium] in application mode.
|
||||
.code#app-text
|
||||
.code#app-text.hidden
|
||||
|
||||
hr
|
||||
p.text.credits
|
||||
a(target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12") One-KVM Project
|
||||
a(target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="onekvm_project_link") One-KVM Project
|
||||
| |
|
||||
a(target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13") One-KVM Documentation
|
||||
a(target="_blank" href="https://one-kvm.mofeng.run" i18n="onekvm_documentation_link") One-KVM Documentation
|
||||
@ -51,15 +51,15 @@
|
||||
<div class="start-box">
|
||||
<div class="start"><a style="display:inline-block; margin-top:4px; color:#5c90bc; text-decoration:none" href="../" i18n="index"> ← [ One-KVM Index ]</a>
|
||||
<hr>
|
||||
<p class="text" i18n="ipmi_text1">This PiKVM device has running <b>kvmd-ipmi</b> daemon and provides IPMI 2.0 interface for some basic
|
||||
<p class="text" i18n="ipmi_daemon_running">This PiKVM 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.
|
||||
</p>
|
||||
<p class="text" i18n="ipmi_text2"><b>WARNING!</b> We strongly don't recommend you to use IPMI in untrusted networks because
|
||||
<p class="text" i18n="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.
|
||||
</p>
|
||||
<p class="tetx" i18n="ipmi_text3"><b>NEVER</b> use the same passwords for KVMD and IPMI users. And even better not to use IPMI.
|
||||
<p class="text" i18n="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:
|
||||
</p>
|
||||
<div class="code" id="ipmi-text" style="max-height:200px"></div>
|
||||
|
||||
@ -9,15 +9,15 @@ append vars
|
||||
index_link = true
|
||||
|
||||
block start
|
||||
p.text(i18n="ipmi_text1")
|
||||
p.text(i18n="ipmi_daemon_running")
|
||||
| This PiKVM device has running #[b kvmd-ipmi] daemon and provides IPMI 2.0 interface for some basic
|
||||
| BMC operations like on/off/reset the server.
|
||||
p.text(i18n="ipmi_text2")
|
||||
p.text(i18n="ipmi_security_warning")
|
||||
| #[b WARNING!] 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.
|
||||
p.tetx(i18n="ipmi_text3")
|
||||
p.text(i18n="ipmi_password_recommendation")
|
||||
| #[b NEVER] 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:
|
||||
.code#ipmi-text(style="max-height:200px")
|
||||
|
||||
@ -144,22 +144,22 @@
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="right" id="system-dropdown"><a class="menu-button" href="#"><img class="led-gray" id="link-led" src="../share/svg/led-link.svg"><img class="led-gray" id="stream-led" src="../share/svg/led-video.svg"><img class="led-gray" id="hid-keyboard-led" src="../share/svg/led-hid-keyboard.svg"><img class="led-gray" id="hid-mouse-led" src="../share/svg/led-hid-mouse.svg"><span i18n="kvm_text3">System</span></a>
|
||||
<li class="right" id="system-dropdown"><a class="menu-button" href="#"><img class="led-gray" id="link-led" src="../share/svg/led-link.svg"><img class="led-gray" id="stream-led" src="../share/svg/led-video.svg"><img class="led-gray" id="hid-keyboard-led" src="../share/svg/led-hid-keyboard.svg"><img class="led-gray" id="hid-mouse-led" src="../share/svg/led-hid-mouse.svg"><span i18n="system_menu">System</span></a>
|
||||
<div class="menu" id="system-menu">
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td class="value" i18n="kvm_text4">Runtime settings & tools</td>
|
||||
<td class="value" i18n="system_runtime_settings">Runtime settings & tools</td>
|
||||
<td class="feature-disabled" id="system-tool-webterm">
|
||||
<button class="small" data-force-hide-menu data-show-window="webterm-window" i18n="kvm_text5">• Term</button>
|
||||
<button class="small" data-force-hide-menu data-show-window="webterm-window" i18n="system_terminal">• Term</button>
|
||||
</td>
|
||||
<td id="system-tool-about">
|
||||
<button class="small" data-force-hide-menu data-show-window="about-window" i18n="kvm_text6">• About</button>
|
||||
<button class="small" data-force-hide-menu data-show-window="about-window" i18n="system_about">• About</button>
|
||||
</td>
|
||||
<td id="system-tool-log">
|
||||
<button class="small" id="open-log-button" data-force-hide-menu i18n="kvm_text7">• Log</button>
|
||||
<button class="small" id="open-log-button" data-force-hide-menu i18n="system_log">• Log</button>
|
||||
</td>
|
||||
<td class="feature-disabled" id="system-tool-wol">
|
||||
<button class="__gpio-button-__wol__ __gpio-button small" data-force-hide-menu data-channel="__wol__" data-confirm="Are you sure to send Wake-on-LAN packet to the server?" i18n="kvm_text8">• WoL</button>
|
||||
<button class="__gpio-button-__wol__ __gpio-button small" data-force-hide-menu data-channel="__wol__" data-confirm="Are you sure to send Wake-on-LAN packet to the server?" i18n="system_wol">• WoL</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -199,13 +199,13 @@
|
||||
</div>
|
||||
<table class="kv">
|
||||
<tr class="feature-disabled" id="stream-resolution">
|
||||
<td i18n="kvm_text9">Resolution:</td>
|
||||
<td i18n="video_resolution">Resolution:</td>
|
||||
<td>
|
||||
<select id="stream-resolution-selector" disabled></select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="stream-quality">
|
||||
<td>JPEG quality:
|
||||
<td i18n="video_jpeg_quality">JPEG quality:
|
||||
</td>
|
||||
<td class="value-slider">
|
||||
<input type="range" id="stream-quality-slider">
|
||||
@ -213,7 +213,7 @@
|
||||
<td class="value-number" id="stream-quality-value"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>JPEG max fps:
|
||||
<td i18n="video_jpeg_fps">JPEG max fps:
|
||||
</td>
|
||||
<td class="value-slider">
|
||||
<input type="range" id="stream-desired-fps-slider">
|
||||
@ -221,7 +221,7 @@
|
||||
<td class="value-number" id="stream-desired-fps-value"></td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="stream-h264-bitrate">
|
||||
<td>H.264 kbps:
|
||||
<td i18n="video_h264_bitrate">H.264 kbps:
|
||||
</td>
|
||||
<td class="value-slider">
|
||||
<input type="range" id="stream-h264-bitrate-slider">
|
||||
@ -229,7 +229,7 @@
|
||||
<td class="value-number" id="stream-h264-bitrate-value"></td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="stream-h264-gop">
|
||||
<td>H.264 gop:
|
||||
<td i18n="video_h264_gop">H.264 gop:
|
||||
</td>
|
||||
<td class="value-slider">
|
||||
<input type="range" id="stream-h264-gop-slider">
|
||||
@ -237,7 +237,7 @@
|
||||
<td class="value-number" id="stream-h264-gop-value"></td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="stream-mode">
|
||||
<td><a target="_blank" href="https://docs.pikvm.org/webrtc">Video mode</a>:
|
||||
<td><a target="_blank" href="https://docs.pikvm.org/webrtc" i18n="video_mode">Video mode</a>:
|
||||
</td>
|
||||
<td>
|
||||
<div class="radio-box">
|
||||
@ -267,7 +267,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="stream-audio">
|
||||
<td>Audio volume:
|
||||
<td i18n="audio_volume">Audio volume:
|
||||
</td>
|
||||
<td class="value-slider">
|
||||
<input type="range" id="stream-audio-volume-slider">
|
||||
@ -287,37 +287,37 @@
|
||||
</table>
|
||||
<hr>
|
||||
<div class="buttons buttons-row">
|
||||
<button class="row33" data-force-hide-menu data-show-window="stream-window" i18n="kvm_text20">• Show stream</button>
|
||||
<button class="row33" id="stream-screenshot-button" data-force-hide-menu i18n="kvm_text21">• Screenshot</button>
|
||||
<button class="row33" id="stream-reset-button" i18n="kvm_text22">Reset stream</button>
|
||||
<button class="row33" data-force-hide-menu data-show-window="stream-window" i18n="stream_show">• Show stream</button>
|
||||
<button class="row33" id="stream-screenshot-button" data-force-hide-menu i18n="stream_screenshot">• Screenshot</button>
|
||||
<button class="row33" id="stream-reset-button" i18n="stream_reset">Reset stream</button>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="text"><b i18n="kvm_text79">Video Record<br></b><sub i18n="kvm_text80">Record video using the browser API, and will be downloaded automatically</sub></div>
|
||||
<div class="text"><b i18n="video_record_title">Video Record<br></b><sub i18n="video_record_description">Record video using the browser API, and will be downloaded automatically</sub></div>
|
||||
<div class="buttons buttons-row">
|
||||
<button class="row50" id="stream-record-start-button" data-force-hide-menu i18n="kvm_text81">• Start recording</button>
|
||||
<button class="row50" id="stream-record-stop-button" data-force-hide-menu i18n="kvm_text82">• End recording</button>
|
||||
<button class="row50" id="stream-record-start-button" data-force-hide-menu i18n="video_record_start">• Start recording</button>
|
||||
<button class="row50" id="stream-record-stop-button" data-force-hide-menu i18n="video_record_stop">• End recording</button>
|
||||
</div>
|
||||
<hr>
|
||||
<table class="kv">
|
||||
<tr class="feature-disabled" id="hid-outputs-keyboard">
|
||||
<td i18n="kvm_text23">Keyboard mode:</td>
|
||||
<td i18n="hid_keyboard_mode">Keyboard mode:</td>
|
||||
<td>
|
||||
<div class="radio-box" id="hid-outputs-keyboard-box"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="hid-outputs-mouse">
|
||||
<td><a target="_blank" href="https://docs.pikvm.org/mouse" i18n="kvm_text24">Mouse mode</a>:</td>
|
||||
<td><a target="_blank" href="https://docs.pikvm.org/mouse" i18n="hid_mouse_mode">Mouse mode</a>:</td>
|
||||
<td>
|
||||
<div class="radio-box" id="hid-outputs-mouse-box"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<details>
|
||||
<summary>Keyboard & mouse (HID) settings</summary>
|
||||
<summary i18n="hid_settings">Keyboard & mouse (HID) settings</summary>
|
||||
<div class="spoiler">
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td>Swap Left Ctrl and Caps keys:
|
||||
<td i18n="hid-keyboard-swap-cc-switch">Swap Left Ctrl and Caps keys:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -330,7 +330,7 @@
|
||||
<hr>
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td>Mouse polling:
|
||||
<td i18n="hid_mouse_polling">Mouse polling:
|
||||
</td>
|
||||
<td class="value-slider">
|
||||
<input type="range" id="hid-mouse-rate-slider">
|
||||
@ -338,7 +338,7 @@
|
||||
<td class="value-number" id="hid-mouse-rate-value"></td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="hid-mouse-sens">
|
||||
<td>Relative sensitivity:
|
||||
<td i18n="hid_mouse_sensitivity">Relative sensitivity:
|
||||
</td>
|
||||
<td class="value-slider">
|
||||
<input type="range" id="hid-mouse-sens-slider">
|
||||
@ -346,21 +346,21 @@
|
||||
<td class="value-number" id="hid-mouse-sens-value"></td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="hid-mouse-squash">
|
||||
<td>Squash relative moves:
|
||||
<td i18n="hid-mouse-squash-switch">Squash relative moves:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
<input checked="hid-mouse-squash-switch" disabled type="checkbox" id="hid-mouse-squash-switch">
|
||||
<input disabled type="checkbox" id="hid-mouse-squash-switch">
|
||||
<label for="hid-mouse-squash-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Reverse scrolling:</td>
|
||||
<td i18n="hid_mouse_reverse_scroll">Reverse scrolling:</td>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Y:
|
||||
<td i18n="hid-mouse-reverse-scrolling-switch">Y:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -369,7 +369,7 @@
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td>X:
|
||||
<td i18n="hid-mouse-reverse-panning-switch">X:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -382,7 +382,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cumulative scrolling:
|
||||
<td i18n="hid-mouse-cumulative-scrolling-switch">Cumulative scrolling:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -392,7 +392,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Scroll rate:
|
||||
<td i18n="hid_mouse_scroll_rate">Scroll rate:
|
||||
</td>
|
||||
<td class="value-slider">
|
||||
<input type="range" id="hid-mouse-scroll-slider">
|
||||
@ -400,7 +400,7 @@
|
||||
<td class="value-number" id="hid-mouse-scroll-value"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Show the blue dot:
|
||||
<td i18n="hid-mouse-dot-switch">Show the blue dot:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -413,11 +413,11 @@
|
||||
</div>
|
||||
</details>
|
||||
<details>
|
||||
<summary>Web UI settings</summary>
|
||||
<summary i18n="web_ui_settings">Web UI settings</summary>
|
||||
<div class="spoiler">
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td>Ask page close confirmation:
|
||||
<td i18n="page-close-ask-switch">Ask page close confirmation:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -427,7 +427,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Expand for the entire tab by default:
|
||||
<td i18n="page-full-tab-stream-switch">Expand for the entire tab by default:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -437,7 +437,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Suspend stream when tab is not active:
|
||||
<td i18n="stream-suspend-switch">Suspend stream when tab is not active:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -451,7 +451,7 @@
|
||||
</details>
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td>Bad link mode (release keys immediately):
|
||||
<td i18n="hid-keyboard-bad-link-switch">Bad link mode (release keys immediately):
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -461,7 +461,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="hid-connect">
|
||||
<td>Connect HID to Server:
|
||||
<td i18n="hid-connect-switch">Connect HID to Server:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -471,7 +471,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="hid-jiggler">
|
||||
<td><a target="_blank" href="https://docs.pikvm.org/mouse_jiggler">Mouse jiggler</a>:
|
||||
<td i18n="hid-jiggler-switch"><a target="_blank" href="https://docs.pikvm.org/mouse_jiggler">Mouse jiggler</a>:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -481,7 +481,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mute all input HID events:
|
||||
<td i18n="hid-mute-switch">Mute all input HID events:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -491,7 +491,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="v3-usb-breaker">
|
||||
<td>Connect main USB to Server:
|
||||
<td i18n="usb_breaker_confirm"><span i18n="usb_connect_main">Connect main USB to Server:</span>
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -501,7 +501,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="v4-locator">
|
||||
<td>Enable locator LED:
|
||||
<td i18n="locator_led_enable"><span i18n="locator_led_enable">Enable locator LED:</span>
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -513,8 +513,8 @@
|
||||
</table>
|
||||
<hr>
|
||||
<div class="buttons buttons-row">
|
||||
<button class="row50" data-force-hide-menu data-show-window="keyboard-window" i18n="kvm_text30">• Show keyboard</button>
|
||||
<button class="row50" id="hid-reset-button" disabled i18n="kvm_text31">Reset HID</button>
|
||||
<button class="row50" data-force-hide-menu data-show-window="keyboard-window" i18n="hid_show_keyboard">• Show keyboard</button>
|
||||
<button class="row50" id="hid-reset-button" disabled i18n="hid_reset">Reset HID</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@ -543,9 +543,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="right feature-disabled" id="msd-dropdown"><a class="menu-button" href="#"><img class="led-gray" id="msd-led" src="../share/svg/led-msd.svg"><span i18n="kvm_text60">Drive</span></a>
|
||||
<li class="right feature-disabled" id="msd-dropdown"><a class="menu-button" href="#"><img class="led-gray" id="msd-led" src="../share/svg/led-msd.svg"><span i18n="drive_menu">Drive</span></a>
|
||||
<div class="menu" id="msd-menu">
|
||||
<div class="text"><b i18n="kvm_text61">Mass Storage Drive: </b><span id="msd-status"></span><br></div>
|
||||
<div class="text"><b i18n="drive_title">Mass Storage Drive: </b><span id="msd-status"></span><br></div>
|
||||
<hr>
|
||||
<div class="hidden" id="msd-message-offline">
|
||||
<div class="text">
|
||||
@ -632,7 +632,7 @@
|
||||
</div>
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td i18n="kvm_text62">Image:</td>
|
||||
<td i18n="drive_image">Image:</td>
|
||||
<td width="100%">
|
||||
<select id="msd-image-selector" disabled></select>
|
||||
</td>
|
||||
@ -667,13 +667,13 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td i18n="kvm_text84">Files:</td>
|
||||
<td i18n="drive_file_display">Files:</td>
|
||||
<td>
|
||||
<div class="radio-box">
|
||||
<input id="msd-mode-radio-image" checked type="radio" name="file-mode-radio" value="1">
|
||||
<label for="msd-mode-radio-image" i18n="kvm_text90">ImageFiles</label>
|
||||
<label for="msd-mode-radio-image" i18n="drive_image_files">ImageFiles</label>
|
||||
<input id="msd-mode-radio-file" type="radio" name="file-mode-radio" value="0">
|
||||
<label for="msd-mode-radio-file" i18n="kvm_text91">NormalFiles</label>
|
||||
<label for="msd-mode-radio-file" i18n="drive_normal_files">NormalFiles</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@ -682,9 +682,9 @@
|
||||
<div id="msd-storages"></div>
|
||||
<hr>
|
||||
<div class="buttons buttons-row">
|
||||
<button class="row50" id="msd-select-new-button" disabled i18n="kvm_text64">Select image to upload</button>
|
||||
<button class="row25" id="msd-upload-new-button" disabled i18n="kvm_text65">Upload</button>
|
||||
<button class="row25" id="msd-abort-new-button" disabled i18n="kvm_text66">Abort</button>
|
||||
<button class="row50" id="msd-select-new-button" disabled i18n="drive_select_upload">Select image to upload</button>
|
||||
<button class="row25" id="msd-upload-new-button" disabled i18n="drive_upload">Upload</button>
|
||||
<button class="row25" id="msd-abort-new-button" disabled i18n="drive_abort">Abort</button>
|
||||
</div>
|
||||
<div class="hidden" id="msd-message-another-user-uploads">
|
||||
<div class="text">
|
||||
@ -700,19 +700,19 @@
|
||||
<div class="hidden" id="msd-new-sub">
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td i18n="kvm_text68">Specify a local file:</td>
|
||||
<td i18n="drive_local_file">Specify a local file:</td>
|
||||
<td>
|
||||
<input id="msd-new-file" type="file">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td i18n="kvm_text69"><b>Or</b> paste a URL:</td>
|
||||
<td i18n="drive_paste_url"><b>Or</b> paste a URL:</td>
|
||||
<td>
|
||||
<input id="msd-new-url" type="text" style="width: 100%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="hidden" id="msd-new-part">
|
||||
<td i18n="kvm_text70">Upload partition:</td>
|
||||
<td i18n="drive_upload_partition">Upload partition:</td>
|
||||
<td width="100%">
|
||||
<select id="msd-new-part-selector"></select>
|
||||
</td>
|
||||
@ -725,11 +725,11 @@
|
||||
<div class="hidden" id="msd-uploading-sub">
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td i18n="kvm_text74">New image:</td>
|
||||
<td i18n="drive_new_image">New image:</td>
|
||||
<td class="value" id="msd-uploading-name"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td i18n="kvm_text75">Upload size:</td>
|
||||
<td i18n="drive_upload_size">Upload size:</td>
|
||||
<td class="value" id="msd-uploading-size"></td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -741,51 +741,51 @@
|
||||
<div class="hidden" id="msd-new-tips">
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td class="value" i18n="kvm_text71">Note:</td>
|
||||
<td i18n="kvm_text72">• Don't close the browser page until the upload is complete.</td>
|
||||
<td class="value" i18n="drive_note">Note:</td>
|
||||
<td i18n="drive_note_browser">• Don't close the browser page until the upload is complete.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td i18n="kvm_text73">• To speed up the upload, close the stream window.</td>
|
||||
<td i18n="drive_note_stream">• To speed up the upload, close the stream window.</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="buttons buttons-row">
|
||||
<button class="row50" id="msd-connect-button" disabled i18n="kvm_text76">Connect drive to Server</button>
|
||||
<button class="row25" id="msd-disconnect-button" disabled i18n="kvm_text77">Disconnect</button>
|
||||
<button class="row25" id="msd-reset-button" disabled i18n="kvm_text78">Reset</button>
|
||||
<button class="row50" id="msd-connect-button" disabled i18n="drive_connect">Connect drive to Server</button>
|
||||
<button class="row25" id="msd-disconnect-button" disabled i18n="drive_disconnect">Disconnect</button>
|
||||
<button class="row25" id="msd-reset-button" disabled i18n="drive_reset">Reset</button>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="text"><b i18n="kvm_text85">Quick file transfer:</b><br><sub i18n="kvm_text86">• Select NormalFiles tab to upload, package them and mount image</sub><br><sub i18n="kvm_text87">• Disconnect MSD, unpackage it, select tab to download</sub><br></div>
|
||||
<div class="text"><b i18n="drive_quick_transfer">Quick file transfer:</b><br><sub i18n="drive_transfer_upload_note">• Select NormalFiles tab to upload, package them and mount image</sub><br><sub i18n="drive_transfer_download_note">• Disconnect MSD, unpackage it, select tab to download</sub><br></div>
|
||||
<hr>
|
||||
<div class="buttons buttons-row">
|
||||
<button class="row50" id="msd-file-image-update-button" i18n="kvm_text88">Package files into image</button>
|
||||
<button class="row50" id="msd-file-image-unzip-button" i18n="kvm_text89">Unpackage files from image</button>
|
||||
<button class="row50" id="msd-file-image-update-button" i18n="drive_package_files">Package files into image</button>
|
||||
<button class="row50" id="msd-file-image-unzip-button" i18n="drive_unpackage_files">Unpackage files from image</button>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
</li>
|
||||
<li class="right" id="macro-dropdown"><a class="menu-button" href="#"><img class="led-gray" id="hid-recorder-led" src="../share/svg/led-gear.svg"><span i18n="kvm_text32">Macro</span></a>
|
||||
<li class="right" id="macro-dropdown"><a class="menu-button" href="#"><img class="led-gray" id="hid-recorder-led" src="../share/svg/led-gear.svg"><span i18n="macro_menu">Macro</span></a>
|
||||
<div class="menu">
|
||||
<div class="text"><b i18n="kvm_text33">Record and play HID/ATX/GPIO actions<br></b><sub i18n="kvm_text34">For security reasons, the record will not be saved on the PiKVM</sub></div>
|
||||
<div class="text"><b i18n="macro_description">Record and play HID/ATX/GPIO actions<br></b><sub i18n="macro_security_note">For security reasons, the record will not be saved on the PiKVM</sub></div>
|
||||
<hr>
|
||||
<div class="buttons buttons-row">
|
||||
<button class="row25" id="hid-recorder-record" disabled data-force-hide-menu i18n="kvm_text35">• Rec</button>
|
||||
<button class="row25" id="hid-recorder-stop" disabled i18n="kvm_text36">Stop</button>
|
||||
<button class="row25" id="hid-recorder-play" disabled i18n="kvm_text37">Play</button>
|
||||
<button class="row25" id="hid-recorder-clear" disabled i18n="kvm_text38">Clear</button>
|
||||
<button class="row25" id="hid-recorder-record" disabled data-force-hide-menu i18n="macro_record">• Rec</button>
|
||||
<button class="row25" id="hid-recorder-stop" disabled i18n="macro_stop">Stop</button>
|
||||
<button class="row25" id="hid-recorder-play" disabled i18n="macro_play">Play</button>
|
||||
<button class="row25" id="hid-recorder-clear" disabled i18n="macro_clear">Clear</button>
|
||||
</div>
|
||||
<hr>
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td i18n="kvm_text39">Script time:</td>
|
||||
<td i18n="macro_script_time">Script time:</td>
|
||||
<td class="value" id="hid-recorder-time" colspan="2">00:00:00.0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td i18n="kvm_text40">Scripted events:</td>
|
||||
<td i18n="macro_script_events">Scripted events:</td>
|
||||
<tdvalue id="hid-recorder-events-count">0</tdvalue>
|
||||
<td><sup><i i18n="kvm_text41">include delays</i></sup></td>
|
||||
<td><sup><i i18n="macro_include_delays">include delays</i></sup></td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
@ -804,14 +804,14 @@
|
||||
<hr>
|
||||
<input id="hid-recorder-new-script-file" type="file" style="display: none">
|
||||
<div class="buttons buttons-row">
|
||||
<button class="row50" id="hid-recorder-upload" disabled i18n="kvm_text42">Upload script</button>
|
||||
<button class="row50" id="hid-recorder-download" disabled i18n="kvm_text43">Download script</button>
|
||||
<button class="row50" id="hid-recorder-upload" disabled i18n="macro_upload_script">Upload script</button>
|
||||
<button class="row50" id="hid-recorder-download" disabled i18n="macro_download_script">Download script</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="right" id="text-dropdown"><a class="menu-button" href="#"><img class="feature-disabled" id="stream-ocr-led" src="../share/svg/led-gear.svg"><span i18n="kvm_text44">Text</span></a>
|
||||
<li class="right" id="text-dropdown"><a class="menu-button" href="#"><img class="feature-disabled" id="stream-ocr-led" src="../share/svg/led-gear.svg"><span i18n="text_menu">Text</span></a>
|
||||
<div class="menu" id="text-menu" style="width: 360px">
|
||||
<div class="text"><b i18n="kvm_text45">Paste text as keypress sequence<br></b><sub i18n="kvm_text46">Please note that PiKVM cannot switch the keyboard layout</sub></div>
|
||||
<div class="text"><b i18n="text_paste_description">Paste text as keypress sequence<br></b><sub i18n="text_keyboard_layout_note">Please note that PiKVM cannot switch the keyboard layout</sub></div>
|
||||
<hr>
|
||||
<div class="text" style="margin-right: 20px">
|
||||
<textarea id="hid-pak-text" data-focus placeholder="Enter your text here"></textarea>
|
||||
@ -819,9 +819,9 @@
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td>
|
||||
<button id="hid-pak-button" disabled data-force-hide-menu title="Ctrl+Enter when the text is focused" i18n="kvm_text47">• Paste</button>
|
||||
<button id="hid-pak-button" disabled data-force-hide-menu title="Ctrl+Enter when the text is focused" i18n="text_paste_button">• Paste</button>
|
||||
</td>
|
||||
<td i18n="kvm_text48">using host keymap</td>
|
||||
<td i18n="text_using_keymap">using host keymap</td>
|
||||
<td>
|
||||
<select id="hid-pak-keymap-selector"></select>
|
||||
</td>
|
||||
@ -837,7 +837,7 @@
|
||||
<td class="value-number" id="hid-pak-delay-value"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Hide input text:
|
||||
<td i18n="hid-pak-secure-switch">Hide input text:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -847,7 +847,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Ask paste confirmation:
|
||||
<td i18n="hid-pak-ask-switch">Ask paste confirmation:
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -860,26 +860,26 @@
|
||||
<div class="feature-disabled" id="stream-ocr">
|
||||
<hr><br>
|
||||
<hr>
|
||||
<div class="text"><b i18n="kvm_text49">Text recognition <sup><i>β</i></sup><br></b><sub i18n="kvm_text50"><a target="_blank" href="https://docs.pikvm.org/ocr">OCR</a> works locally on PiKVM</sub></div>
|
||||
<div class="text"><b i18n="text_ocr_title">Text recognition <sup><i>β</i></sup><br></b><sub i18n="text_ocr_local_note"><a target="_blank" href="https://docs.pikvm.org/ocr">OCR</a> works locally on PiKVM</sub></div>
|
||||
<hr>
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td>
|
||||
<button id="stream-ocr-button" data-force-hide-menu i18n="kvm_text51">• Select area</button>
|
||||
<button id="stream-ocr-button" data-force-hide-menu i18n="text_ocr_select_area">• Select area</button>
|
||||
</td>
|
||||
<td i18n="kvm_text52">for</td>
|
||||
<td i18n="text_ocr_for">for</td>
|
||||
<td>
|
||||
<select id="stream-ocr-lang-selector"></select>
|
||||
</td>
|
||||
<td i18n="kvm_text53">text recognition</td>
|
||||
<td i18n="text_ocr_recognition">text recognition</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td colspan="4" i18n="kvm_text54">• Next hit the <b>Enter</b> to recognize and copy text to clipboard...</td>
|
||||
<td colspan="4" i18n="text_ocr_enter_hint">• Next hit the <b>Enter</b> to recognize and copy text to clipboard...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4" i18n="kvm_text55">• Or hit the <b>Escape</b> to cancel a selection</td>
|
||||
<td colspan="4" i18n="text_ocr_escape_hint">• Or hit the <b>Escape</b> to cancel a selection</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
@ -888,9 +888,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="right" id="shortcuts-dropdown"><a class="menu-button" href="#" i18n="kvm_text56">Shortcuts</a>
|
||||
<li class="right" id="shortcuts-dropdown"><a class="menu-button" href="#" i18n="shortcuts_menu">Shortcuts</a>
|
||||
<div class="menu" id="shortcuts-menu">
|
||||
<div class="text"><b i18n="kvm_text57">Quick keyboard shortcuts<br></b><sub i18n="kvm_text58">Also see <i>System → Show keyboard</i></sub></div>
|
||||
<div class="text"><b i18n="shortcuts_description">Quick keyboard shortcuts<br></b><sub i18n="shortcuts_also_see">Also see <i>System → Show keyboard</i></sub></div>
|
||||
<hr>
|
||||
<div class="buttons">
|
||||
<div class="buttons-row">
|
||||
@ -932,7 +932,7 @@
|
||||
<hr>
|
||||
<div class="text">
|
||||
↓ • Alt+SysRq+... <sup><i>linux magic
|
||||
<a target="_blank" href="https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html" i18n="kvm_text59">help</a></i></sup>
|
||||
<a target="_blank" href="https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html" i18n="shortcuts_help">help</a></i></sup>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="buttons">
|
||||
@ -955,7 +955,7 @@
|
||||
<hr>
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td>
|
||||
<td i18n>
|
||||
</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
@ -1073,7 +1073,7 @@
|
||||
</div>
|
||||
<div class="window" id="keyboard-window" data-show-centered>
|
||||
<div class="window-header" id="keyboard-window-header">
|
||||
<div class="window-grab" i18n="kvm_text15">Virtual Keyboard</div>
|
||||
<div class="window-grab" i18n="virtual_keyboard_title">Virtual Keyboard</div>
|
||||
<div class="window-buttons">
|
||||
<button class="window-button-original">•</button>
|
||||
<button class="window-button-close"><b>×</b></button>
|
||||
@ -2305,7 +2305,7 @@
|
||||
</div>
|
||||
<div class="window" id="about-window" data-show-centered>
|
||||
<div class="window-header">
|
||||
<div class="window-grab" i18n="kvm_text1">About</div>
|
||||
<div class="window-grab" i18n="about_title">About</div>
|
||||
<div class="window-buttons">
|
||||
<button class="window-button-original">•</button>
|
||||
<button class="window-button-close"><b>×</b></button>
|
||||
@ -2356,7 +2356,7 @@
|
||||
<input type="radio" name="about-tab-button" id="about-tab-thanks-button">
|
||||
<label for="about-tab-thanks-button" i18n="thanks">Thanks</label>
|
||||
<div class="tab">
|
||||
<div class="code" id="about-thanks"><span class="code-comment" i18n="kvm_text2">// These kind people donated money to the PiKVM project<br>
|
||||
<div class="code" id="about-thanks"><span class="code-comment" i18n="about_sponsors">// These kind people donated money to the PiKVM project<br>
|
||||
// and supported the work on it. We are very grateful<br>
|
||||
// for their help, and memorializing their names<br>
|
||||
// is the least we can do in gratitude.<br>
|
||||
@ -2366,12 +2366,12 @@
|
||||
</div>
|
||||
</div>
|
||||
</div><br>
|
||||
<p class="text credits"><a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12">One-KVM Project</a> | <a target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13">One-KVM Documentation</a> | <a target="_blank" href="https://pikvm.org" i18n="index_text_10">PiKVM Project</a> | <a target="_blank" href="https://docs.pikvm.org" i18n="index_text_11">Documentation</a></p>
|
||||
<p class="text credits"><a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="onekvm_project_link">One-KVM Project</a> | <a target="_blank" href="https://one-kvm.mofeng.run" i18n="onekvm_documentation_link">One-KVM Documentation</a> | <a target="_blank" href="https://pikvm.org" i18n="pikvm_project_link">PiKVM Project</a> | <a target="_blank" href="https://docs.pikvm.org" i18n="pikvm_documentation_link">Documentation</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="window window-resizable" id="webterm-window" data-show-centered style="display: flex; min-width: 720px; min-height: 480px">
|
||||
<div class="window-header">
|
||||
<div class="window-grab" i18n="kvm_text16">Terminal</div>
|
||||
<div class="window-grab" i18n="terminal_title">Terminal</div>
|
||||
<div class="window-buttons">
|
||||
<button class="window-button-original">•</button>
|
||||
<button class="window-button-maximize">☐</button>
|
||||
@ -2392,7 +2392,7 @@
|
||||
</ul>
|
||||
<ul class="footer">
|
||||
<li class="left"><span id="kvmd-meta-server-host" title="KVM/Server name (see System/About)"></span> | <span id="kvmd-info-platform" title="PiKVM Platform"></span> | <span id="kvmd-version-kvmd" title="KVMD version"></span> | <span id="kvmd-version-streamer" title="Streamer version"></span></li>
|
||||
<li class="right"><a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12">One-KVM Project</a> | <a target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13">One-KVM Documentation</a></li>
|
||||
<li class="right"><a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="onekvm_project_link">One-KVM Project</a> | <a target="_blank" href="https://one-kvm.mofeng.run" i18n="onekvm_documentation_link">One-KVM Documentation</a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@ -34,6 +34,6 @@ block body
|
||||
| |
|
||||
span#kvmd-version-streamer(title="Streamer version")
|
||||
li.right
|
||||
a(target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12") One-KVM Project
|
||||
a(target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="onekvm_project_link") One-KVM Project
|
||||
| |
|
||||
a(target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13") One-KVM Documentation
|
||||
a(target="_blank" href="https://one-kvm.mofeng.run" i18n="onekvm_documentation_link") One-KVM Documentation
|
||||
|
||||
@ -1,31 +1,31 @@
|
||||
li.right#macro-dropdown
|
||||
a.menu-button(href="#")
|
||||
+navbar_led("hid-recorder-led", "led-gear")
|
||||
span(i18n="kvm_text32") Macro
|
||||
span(i18n="macro_menu") Macro
|
||||
.menu
|
||||
.text
|
||||
b(i18n="kvm_text33") Record and play HID/ATX/GPIO actions#[br]
|
||||
sub(i18n="kvm_text34") For security reasons, the record will not be saved on the PiKVM
|
||||
b(i18n="macro_description") Record and play HID/ATX/GPIO actions#[br]
|
||||
sub(i18n="macro_security_note") For security reasons, the record will not be saved on the PiKVM
|
||||
hr
|
||||
.buttons.buttons-row
|
||||
button.row25#hid-recorder-record(disabled data-force-hide-menu i18n="kvm_text35") • Rec
|
||||
button.row25#hid-recorder-stop(disabled i18n="kvm_text36") Stop
|
||||
button.row25#hid-recorder-play(disabled i18n="kvm_text37") Play
|
||||
button.row25#hid-recorder-clear(disabled i18n="kvm_text38") Clear
|
||||
button.row25#hid-recorder-record(disabled data-force-hide-menu i18n="macro_record") • Rec
|
||||
button.row25#hid-recorder-stop(disabled i18n="macro_stop") Stop
|
||||
button.row25#hid-recorder-play(disabled i18n="macro_play") Play
|
||||
button.row25#hid-recorder-clear(disabled i18n="macro_clear") Clear
|
||||
hr
|
||||
|
||||
table.kv
|
||||
tr
|
||||
td(i18n="kvm_text39") Script time:
|
||||
td(i18n="macro_script_time") Script time:
|
||||
td.value#hid-recorder-time(colspan="2") 00:00:00.0
|
||||
tr
|
||||
td(i18n="kvm_text40") Scripted events:
|
||||
td(i18n="macro_script_events") Scripted events:
|
||||
tdvalue#hid-recorder-events-count 0
|
||||
td #[sup #[i(i18n="kvm_text41") include delays]]
|
||||
td #[sup #[i(i18n="macro_include_delays") include delays]]
|
||||
hr
|
||||
+menu_switch_table("hid-recorder-loop-switch", "Infinite loop playback", false, false, "hid-recorder-loop-switch")
|
||||
hr
|
||||
input#hid-recorder-new-script-file(type="file" style="display: none")
|
||||
.buttons.buttons-row
|
||||
button.row50#hid-recorder-upload(disabled i18n="kvm_text42") Upload script
|
||||
button.row50#hid-recorder-download(disabled i18n="kvm_text43") Download script
|
||||
button.row50#hid-recorder-upload(disabled i18n="macro_upload_script") Upload script
|
||||
button.row50#hid-recorder-download(disabled i18n="macro_download_script") Download script
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
li.right.feature-disabled#msd-dropdown
|
||||
a.menu-button(href="#")
|
||||
+navbar_led("msd-led", "led-msd")
|
||||
span(i18n="kvm_text60") Drive
|
||||
span(i18n="drive_menu") Drive
|
||||
.menu#msd-menu
|
||||
.text
|
||||
b(i18n="kvm_text61") Mass Storage Drive:
|
||||
b(i18n="drive_title") Mass Storage Drive:
|
||||
span#msd-status
|
||||
br
|
||||
hr
|
||||
@ -36,7 +36,7 @@ li.right.feature-disabled#msd-dropdown
|
||||
|
||||
table.kv
|
||||
tr
|
||||
td(i18n="kvm_text62") Image:
|
||||
td(i18n="drive_image") Image:
|
||||
td(width="100%") #[select#msd-image-selector(disabled)]
|
||||
td #[button#msd-download-button(disabled title="Download image") #[b ⇩ ]]
|
||||
td #[button#msd-remove-button(disabled title="Remove image") #[b × ]]
|
||||
@ -49,21 +49,21 @@ li.right.feature-disabled#msd-dropdown
|
||||
td
|
||||
+menu_switch_td2("msd-rw-switch", false, false) Writable:
|
||||
tr
|
||||
td(i18n="kvm_text84") Files:
|
||||
td(i18n="drive_file_display") Files:
|
||||
td
|
||||
div.radio-box()
|
||||
input#msd-mode-radio-image(checked type="radio" name="file-mode-radio" value="1")
|
||||
label(for="msd-mode-radio-image" i18n="kvm_text90") ImageFiles
|
||||
label(for="msd-mode-radio-image" i18n="drive_image_files") ImageFiles
|
||||
input#msd-mode-radio-file(type="radio" name="file-mode-radio" value="0")
|
||||
label(for="msd-mode-radio-file" i18n="kvm_text91") NormalFiles
|
||||
label(for="msd-mode-radio-file" i18n="drive_normal_files") NormalFiles
|
||||
hr
|
||||
|
||||
#msd-storages
|
||||
hr
|
||||
.buttons.buttons-row
|
||||
button.row50#msd-select-new-button(disabled i18n="kvm_text64") Select image to upload
|
||||
button.row25#msd-upload-new-button(disabled i18n="kvm_text65") Upload
|
||||
button.row25#msd-abort-new-button(disabled i18n="kvm_text66") Abort
|
||||
button.row50#msd-select-new-button(disabled i18n="drive_select_upload") Select image to upload
|
||||
button.row25#msd-upload-new-button(disabled i18n="drive_upload") Upload
|
||||
button.row25#msd-abort-new-button(disabled i18n="drive_abort") Abort
|
||||
.hidden#msd-message-another-user-uploads
|
||||
+menu_message("info", "Another user uploads an image", "msd-message-another-user-uploads")
|
||||
hr
|
||||
@ -71,13 +71,13 @@ li.right.feature-disabled#msd-dropdown
|
||||
.hidden#msd-new-sub
|
||||
table.kv
|
||||
tr
|
||||
td(i18n="kvm_text68") Specify a local file:
|
||||
td(i18n="drive_local_file") Specify a local file:
|
||||
td #[input#msd-new-file(type="file")]
|
||||
tr
|
||||
td(i18n="kvm_text69") #[b Or] paste a URL:
|
||||
td(i18n="drive_paste_url") #[b Or] paste a URL:
|
||||
td #[input#msd-new-url(type="text" style="width: 100%")]
|
||||
tr.hidden#msd-new-part
|
||||
td(i18n="kvm_text70") Upload partition:
|
||||
td(i18n="drive_upload_partition") Upload partition:
|
||||
td(width="100%") #[select#msd-new-part-selector]
|
||||
div(id="msd-uploading-sub" class="hidden")
|
||||
hr
|
||||
@ -85,10 +85,10 @@ li.right.feature-disabled#msd-dropdown
|
||||
.hidden#msd-uploading-sub
|
||||
table.kv
|
||||
tr
|
||||
td(i18n="kvm_text74") New image:
|
||||
td(i18n="drive_new_image") New image:
|
||||
td.value#msd-uploading-name
|
||||
tr
|
||||
td(i18n="kvm_text75") Upload size:
|
||||
td(i18n="drive_upload_size") Upload size:
|
||||
td.value#msd-uploading-size
|
||||
.text
|
||||
.progress#msd-uploading-progress
|
||||
@ -98,31 +98,31 @@ li.right.feature-disabled#msd-dropdown
|
||||
.hidden#msd-new-tips
|
||||
table.kv
|
||||
tr
|
||||
td.value(i18n="kvm_text71") Note:
|
||||
td(i18n="kvm_text72") • Don't close the browser page until the upload is complete.
|
||||
td.value(i18n="drive_note") Note:
|
||||
td(i18n="drive_note_browser") • Don't close the browser page until the upload is complete.
|
||||
tr
|
||||
td
|
||||
td(i18n="kvm_text73") • To speed up the upload, close the stream window.
|
||||
td(i18n="drive_note_stream") • To speed up the upload, close the stream window.
|
||||
hr
|
||||
|
||||
.buttons.buttons-row
|
||||
button.row50#msd-connect-button(disabled i18n="kvm_text76") Connect drive to Server
|
||||
button.row25#msd-disconnect-button(disabled i18n="kvm_text77") Disconnect
|
||||
button.row25#msd-reset-button(disabled i18n="kvm_text78") Reset
|
||||
button.row50#msd-connect-button(disabled i18n="drive_connect") Connect drive to Server
|
||||
button.row25#msd-disconnect-button(disabled i18n="drive_disconnect") Disconnect
|
||||
button.row25#msd-reset-button(disabled i18n="drive_reset") Reset
|
||||
|
||||
hr
|
||||
|
||||
.text
|
||||
b(i18n="kvm_text85") Quick file transfer:
|
||||
b(i18n="drive_quick_transfer") Quick file transfer:
|
||||
br
|
||||
sub(i18n="kvm_text86") • Select NormalFiles tab to upload, package them and mount image
|
||||
sub(i18n="drive_transfer_upload_note") • Select NormalFiles tab to upload, package them and mount image
|
||||
br
|
||||
sub(i18n="kvm_text87") • Disconnect MSD, unpackage it, select tab to download
|
||||
sub(i18n="drive_transfer_download_note") • Disconnect MSD, unpackage it, select tab to download
|
||||
br
|
||||
hr
|
||||
|
||||
div(class="buttons buttons-row")
|
||||
button.row50#msd-file-image-update-button(i18n="kvm_text88") Package files into image
|
||||
button.row50#msd-file-image-unzip-button(i18n="kvm_text89") Unpackage files from image
|
||||
button.row50#msd-file-image-update-button(i18n="drive_package_files") Package files into image
|
||||
button.row50#msd-file-image-unzip-button(i18n="drive_unpackage_files") Unpackage files from image
|
||||
hr
|
||||
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
li.right#shortcuts-dropdown
|
||||
a.menu-button(href="#" i18n="kvm_text56") Shortcuts
|
||||
a.menu-button(href="#" i18n="shortcuts_menu") Shortcuts
|
||||
|
||||
.menu#shortcuts-menu
|
||||
.text
|
||||
b(i18n="kvm_text57") Quick keyboard shortcuts#[br]
|
||||
sub(i18n="kvm_text58") Also see #[i System → Show keyboard]
|
||||
b(i18n="shortcuts_description") Quick keyboard shortcuts#[br]
|
||||
sub(i18n="shortcuts_also_see") Also see #[i System → Show keyboard]
|
||||
hr
|
||||
|
||||
.buttons
|
||||
@ -41,7 +41,7 @@ li.right#shortcuts-dropdown
|
||||
|
||||
.text
|
||||
| ↓ • Alt+SysRq+... <sup><i>linux magic
|
||||
| #[a(target="_blank" href="https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html" i18n="kvm_text59") help]</i></sup>
|
||||
| #[a(target="_blank" href="https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html" i18n="shortcuts_help") help]</i></sup>
|
||||
hr
|
||||
|
||||
.buttons
|
||||
|
||||
@ -4,26 +4,26 @@ li.right#system-dropdown
|
||||
+navbar_led("stream-led", "led-video")
|
||||
+navbar_led("hid-keyboard-led", "led-hid-keyboard")
|
||||
+navbar_led("hid-mouse-led", "led-hid-mouse")
|
||||
span(i18n="kvm_text3") System
|
||||
span(i18n="system_menu") System
|
||||
|
||||
.menu#system-menu
|
||||
table.kv
|
||||
tr
|
||||
td.value(i18n="kvm_text4")
|
||||
td.value(i18n="system_runtime_settings")
|
||||
| Runtime settings & tools
|
||||
td.feature-disabled#system-tool-webterm
|
||||
button.small(data-force-hide-menu data-show-window="webterm-window" i18n="kvm_text5") • Term
|
||||
button.small(data-force-hide-menu data-show-window="webterm-window" i18n="system_terminal") • Term
|
||||
td#system-tool-about
|
||||
button.small(data-force-hide-menu data-show-window="about-window" i18n="kvm_text6") • About
|
||||
button.small(data-force-hide-menu data-show-window="about-window" i18n="system_about") • About
|
||||
td#system-tool-log
|
||||
button.small#open-log-button(data-force-hide-menu i18n="kvm_text7") • Log
|
||||
button.small#open-log-button(data-force-hide-menu i18n="system_log") • Log
|
||||
td.feature-disabled#system-tool-wol
|
||||
button(
|
||||
data-force-hide-menu
|
||||
class="__gpio-button-__wol__ __gpio-button small"
|
||||
data-channel="__wol__"
|
||||
data-confirm="Are you sure to send Wake-on-LAN packet to the server?"
|
||||
i18n="kvm_text8"
|
||||
i18n="system_wol"
|
||||
) • WoL
|
||||
hr
|
||||
|
||||
@ -39,70 +39,70 @@ li.right#system-dropdown
|
||||
|
||||
table.kv
|
||||
tr.feature-disabled#stream-resolution
|
||||
td(i18n="kvm_text9") Resolution:
|
||||
td(i18n="video_resolution") Resolution:
|
||||
td #[select#stream-resolution-selector(disabled)]
|
||||
tr.feature-disabled#stream-quality
|
||||
+menu_slider_td3("stream-quality-slider", "stream-quality-value", false, "kvm_text10") JPEG quality:
|
||||
+menu_slider_td3("stream-quality-slider", "stream-quality-value", false, "video_jpeg_quality") JPEG quality:
|
||||
tr
|
||||
+menu_slider_td3("stream-desired-fps-slider", "stream-desired-fps-value", false, "kvm_text11") JPEG max fps:
|
||||
+menu_slider_td3("stream-desired-fps-slider", "stream-desired-fps-value", false, "video_jpeg_fps") JPEG max fps:
|
||||
tr.feature-disabled#stream-h264-bitrate
|
||||
+menu_slider_td3("stream-h264-bitrate-slider", "stream-h264-bitrate-value", false, "kvm_text12") H.264 kbps:
|
||||
+menu_slider_td3("stream-h264-bitrate-slider", "stream-h264-bitrate-value", false, "video_h264_bitrate") H.264 kbps:
|
||||
tr.feature-disabled#stream-h264-gop
|
||||
+menu_slider_td3("stream-h264-gop-slider", "stream-h264-gop-value", false, "kvm_text13") H.264 gop:
|
||||
+menu_slider_td3("stream-h264-gop-slider", "stream-h264-gop-value", false, "video_h264_gop") H.264 gop:
|
||||
tr.feature-disabled#stream-mode
|
||||
+menu_radio_td2("stream-mode-radio", [
|
||||
{title: "WebRTC<br>H.264", value: "janus"},
|
||||
{title: "Direct<br>H.264", value: "media"},
|
||||
{title: "Legacy<br>MJPEG", value: "mjpeg", checked: true},
|
||||
], "kvm_text14") #[a(target="_blank" href="https://docs.pikvm.org/webrtc") Video mode]:
|
||||
], "video_mode") #[a(target="_blank" href="https://docs.pikvm.org/webrtc" i18n="video_mode") Video mode]:
|
||||
tr.feature-disabled#stream-orient
|
||||
+menu_radio_td2("stream-orient-radio", [
|
||||
{title: "Default", value: "0", checked: true},
|
||||
{title: "90°", value: "90"},
|
||||
{title: "180°", value: "180"},
|
||||
{title: "270°", value: "270"},
|
||||
], "kvm_text17") Orientation:
|
||||
], "video_orientation") Orientation:
|
||||
tr.feature-disabled#stream-audio
|
||||
+menu_slider_td3("stream-audio-volume-slider", "stream-audio-volume-value", false, "kvm_text19") Audio volume:
|
||||
+menu_slider_td3("stream-audio-volume-slider", "stream-audio-volume-value", false, "audio_volume") Audio volume:
|
||||
tr.feature-disabled#stream-mic
|
||||
+menu_switch_td2("stream-mic-switch", false, "stream-mic-switch") Microphone:
|
||||
hr
|
||||
|
||||
.buttons.buttons-row
|
||||
button.row33(data-force-hide-menu data-show-window="stream-window" i18n="kvm_text20") • Show stream
|
||||
button.row33#stream-screenshot-button(data-force-hide-menu i18n="kvm_text21") • Screenshot
|
||||
button.row33#stream-reset-button( i18n="kvm_text22") Reset stream
|
||||
button.row33(data-force-hide-menu data-show-window="stream-window" i18n="stream_show") • Show stream
|
||||
button.row33#stream-screenshot-button(data-force-hide-menu i18n="stream_screenshot") • Screenshot
|
||||
button.row33#stream-reset-button( i18n="stream_reset") Reset stream
|
||||
hr
|
||||
|
||||
|
||||
.text
|
||||
b(i18n="kvm_text79") Video Record#[br]
|
||||
sub(i18n="kvm_text80") Record video using the browser API, and will be downloaded automatically
|
||||
b(i18n="video_record_title") Video Record#[br]
|
||||
sub(i18n="video_record_description") Record video using the browser API, and will be downloaded automatically
|
||||
.buttons.buttons-row
|
||||
button.row50#stream-record-start-button(data-force-hide-menu i18n="kvm_text81") • Start recording
|
||||
button.row50#stream-record-stop-button(data-force-hide-menu i18n="kvm_text82") • End recording
|
||||
button.row50#stream-record-start-button(data-force-hide-menu i18n="video_record_start") • Start recording
|
||||
button.row50#stream-record-stop-button(data-force-hide-menu i18n="video_record_stop") • End recording
|
||||
hr
|
||||
|
||||
table.kv
|
||||
tr.feature-disabled#hid-outputs-keyboard
|
||||
td(i18n="kvm_text23") Keyboard mode:
|
||||
td(i18n="hid_keyboard_mode") Keyboard mode:
|
||||
td #[div.radio-box#hid-outputs-keyboard-box]
|
||||
tr.feature-disabled#hid-outputs-mouse
|
||||
td #[a(target="_blank" href="https://docs.pikvm.org/mouse" i18n="kvm_text24") Mouse mode]:
|
||||
td #[a(target="_blank" href="https://docs.pikvm.org/mouse" i18n="hid_mouse_mode") Mouse mode]:
|
||||
td #[div.radio-box#hid-outputs-mouse-box]
|
||||
|
||||
+menu_spoiler("Keyboard & mouse (HID) settings", "kvm_text25")
|
||||
+menu_spoiler("Keyboard & mouse (HID) settings", "hid_settings")
|
||||
+menu_switch_table("hid-keyboard-swap-cc-switch", true, false, "hid-keyboard-swap-cc-switch") Swap Left Ctrl and Caps keys:
|
||||
hr
|
||||
table(class="kv")
|
||||
tr
|
||||
+menu_slider_td3("hid-mouse-rate-slider", "hid-mouse-rate-value", false, "kvm_text26") Mouse polling:
|
||||
+menu_slider_td3("hid-mouse-rate-slider", "hid-mouse-rate-value", false, "hid_mouse_polling") Mouse polling:
|
||||
tr.feature-disabled#hid-mouse-sens
|
||||
+menu_slider_td3("hid-mouse-sens-slider", "hid-mouse-sens-value", false, "kvm_text27") Relative sensitivity:
|
||||
+menu_slider_td3("hid-mouse-sens-slider", "hid-mouse-sens-value", false, "hid_mouse_sensitivity") Relative sensitivity:
|
||||
tr(id="hid-mouse-squash" class="feature-disabled")
|
||||
+menu_switch_td2("hid-mouse-squash-switch", false, "hid-mouse-squash-switch") Squash relative moves:
|
||||
+menu_switch_td2("hid-mouse-squash-switch", false, false, "hid-mouse-squash-switch") Squash relative moves:
|
||||
tr
|
||||
td Reverse scrolling:
|
||||
td(i18n="hid_mouse_reverse_scroll") Reverse scrolling:
|
||||
td
|
||||
table
|
||||
tr
|
||||
@ -112,11 +112,11 @@ li.right#system-dropdown
|
||||
tr
|
||||
+menu_switch_td2("hid-mouse-cumulative-scrolling-switch", true, false, "hid-mouse-cumulative-scrolling-switch") Cumulative scrolling:
|
||||
tr
|
||||
+menu_slider_td3("hid-mouse-scroll-slider", "hid-mouse-scroll-value", true, "kvm_text29") Scroll rate:
|
||||
+menu_slider_td3("hid-mouse-scroll-slider", "hid-mouse-scroll-value", true, "hid_mouse_scroll_rate") Scroll rate:
|
||||
tr
|
||||
+menu_switch_td2("hid-mouse-dot-switch", true, true, "hid-mouse-dot-switch") Show the blue dot:
|
||||
|
||||
+menu_spoiler("Web UI settings")
|
||||
+menu_spoiler("Web UI settings", "web_ui_settings")
|
||||
table.kv
|
||||
tr
|
||||
+menu_switch_td2("page-close-ask-switch", true, true, "page-close-ask-switch") Ask page close confirmation:
|
||||
@ -138,12 +138,15 @@ li.right#system-dropdown
|
||||
tr.feature-disabled#v3-usb-breaker
|
||||
+menu_switch_td2_gpio(
|
||||
"__v3_usb_breaker__",
|
||||
"Turning off this switch will disconnect the main USB from the server. Are you sure you want to continue?"
|
||||
) Connect main USB to Server:
|
||||
"Turning off this switch will disconnect the main USB from the server. Are you sure you want to continue?",
|
||||
"usb_breaker_confirm"
|
||||
)
|
||||
span(i18n="usb_connect_main") Connect main USB to Server:
|
||||
tr.feature-disabled#v4-locator
|
||||
+menu_switch_td2_gpio("__v4_locator__") Enable locator LED:
|
||||
+menu_switch_td2_gpio("__v4_locator__", "","locator_led_enable")
|
||||
span(i18n="locator_led_enable") Enable locator LED:
|
||||
hr
|
||||
|
||||
.buttons.buttons-row
|
||||
button.row50(data-force-hide-menu data-show-window="keyboard-window" i18n="kvm_text30") • Show keyboard
|
||||
button.row50#hid-reset-button(disabled i18n="kvm_text31") Reset HID
|
||||
button.row50(data-force-hide-menu data-show-window="keyboard-window" i18n="hid_show_keyboard") • Show keyboard
|
||||
button.row50#hid-reset-button(disabled i18n="hid_reset") Reset HID
|
||||
|
||||
@ -1,19 +1,19 @@
|
||||
li.right#text-dropdown
|
||||
a.menu-button(href="#")
|
||||
+navbar_led("stream-ocr-led", "led-gear", "feature-disabled")
|
||||
span(i18n="kvm_text44") Text
|
||||
span(i18n="text_menu") Text
|
||||
.menu#text-menu(style="width: 360px")
|
||||
.text
|
||||
b(i18n="kvm_text45") Paste text as keypress sequence#[br]
|
||||
sub(i18n="kvm_text46") Please note that PiKVM cannot switch the keyboard layout
|
||||
b(i18n="text_paste_description") Paste text as keypress sequence#[br]
|
||||
sub(i18n="text_keyboard_layout_note") Please note that PiKVM cannot switch the keyboard layout
|
||||
hr
|
||||
.text(style="margin-right: 20px")
|
||||
textarea#hid-pak-text(data-focus placeholder="Enter your text here")
|
||||
table.kv
|
||||
tr
|
||||
td
|
||||
button#hid-pak-button(disabled data-force-hide-menu title="Ctrl+Enter when the text is focused" i18n="kvm_text47") • Paste
|
||||
td(i18n="kvm_text48") using host keymap
|
||||
button#hid-pak-button(disabled data-force-hide-menu title="Ctrl+Enter when the text is focused" i18n="text_paste_button") • Paste
|
||||
td(i18n="text_using_keymap") using host keymap
|
||||
td #[select#hid-pak-keymap-selector]
|
||||
table.kv
|
||||
tr
|
||||
@ -28,19 +28,19 @@ li.right#text-dropdown
|
||||
br
|
||||
hr
|
||||
.text
|
||||
b(i18n="kvm_text49") Text recognition <sup><i>β</i></sup>#[br]
|
||||
sub(i18n="kvm_text50") #[a(target="_blank" href="https://docs.pikvm.org/ocr") OCR] works locally on PiKVM
|
||||
b(i18n="text_ocr_title") Text recognition <sup><i>β</i></sup>#[br]
|
||||
sub(i18n="text_ocr_local_note") #[a(target="_blank" href="https://docs.pikvm.org/ocr") OCR] works locally on PiKVM
|
||||
hr
|
||||
table.kv
|
||||
tr
|
||||
td #[button#stream-ocr-button(data-force-hide-menu i18n="kvm_text51") • Select area]
|
||||
td(i18n="kvm_text52") for
|
||||
td #[button#stream-ocr-button(data-force-hide-menu i18n="text_ocr_select_area") • Select area]
|
||||
td(i18n="text_ocr_for") for
|
||||
td #[select#stream-ocr-lang-selector]
|
||||
td(i18n="kvm_text53") text recognition
|
||||
td(i18n="text_ocr_recognition") text recognition
|
||||
table.kv
|
||||
tr
|
||||
td(colspan="4" i18n="kvm_text54") • Next hit the #[b Enter] to recognize and copy text to clipboard...
|
||||
td(colspan="4" i18n="text_ocr_enter_hint") • Next hit the #[b Enter] to recognize and copy text to clipboard...
|
||||
tr
|
||||
td(colspan="4" i18n="kvm_text55") • Or hit the #[b Escape] to cancel a selection
|
||||
td(colspan="4" i18n="text_ocr_escape_hint") • Or hit the #[b Escape] to cancel a selection
|
||||
tr
|
||||
td
|
||||
|
||||
@ -14,8 +14,8 @@ mixin menu_message(icon, short, classes="", i18nid)
|
||||
block
|
||||
|
||||
|
||||
mixin menu_switch_td2_gpio(channel, confirm_off="")
|
||||
td
|
||||
mixin menu_switch_td2_gpio(channel, confirm_off="", i18nid)
|
||||
td(i18n=i18nid)
|
||||
block
|
||||
td(align="right")
|
||||
.switch-box
|
||||
@ -33,7 +33,7 @@ mixin menu_switch_td2_gpio(channel, confirm_off="")
|
||||
|
||||
|
||||
mixin menu_switch_td2(id, enabled, checked, i18nid)
|
||||
td
|
||||
td(i18n=i18nid)
|
||||
block
|
||||
td(align="right")
|
||||
.switch-box
|
||||
@ -65,7 +65,7 @@ mixin menu_radio_td2(name, items, i18nid)
|
||||
mixin menu_slider_td3(slider_id, value_id, enabled, i18nid)
|
||||
-
|
||||
enabled = (enabled || true)
|
||||
td
|
||||
td(i18n=i18nid)
|
||||
block
|
||||
td.value-slider
|
||||
input(type="range" id=slider_id disabled=!enabled)
|
||||
@ -74,7 +74,7 @@ mixin menu_slider_td3(slider_id, value_id, enabled, i18nid)
|
||||
|
||||
mixin menu_spoiler(title, i18nid)
|
||||
details
|
||||
summary !{title}
|
||||
summary(i18n=i18nid) !{title}
|
||||
div(class="spoiler")
|
||||
block
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ mixin about_tab(name, title, i18nid, checked=false)
|
||||
|
||||
.window#about-window(data-show-centered)
|
||||
.window-header
|
||||
.window-grab(i18n="kvm_text1") About
|
||||
.window-grab(i18n="about_title") About
|
||||
.window-buttons
|
||||
button.window-button-original •
|
||||
button.window-button-close #[b ×]
|
||||
@ -47,7 +47,7 @@ mixin about_tab(name, title, i18nid, checked=false)
|
||||
pre#kvmd-meta-json No data
|
||||
|
||||
+about_tab("thanks", "Thanks", "thanks")
|
||||
span.code-comment( i18n="kvm_text2")
|
||||
span.code-comment( i18n="about_sponsors")
|
||||
| // These kind people donated money to the PiKVM project#[br]
|
||||
| // and supported the work on it. We are very grateful#[br]
|
||||
| // for their help, and memorializing their names#[br]
|
||||
@ -57,10 +57,10 @@ mixin about_tab(name, title, i18nid, checked=false)
|
||||
| or #[a(target="_blank" href="https://paypal.me/pikvm") Paypal].
|
||||
br
|
||||
p.text.credits
|
||||
a(target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12") One-KVM Project
|
||||
a(target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="onekvm_project_link") One-KVM Project
|
||||
| |
|
||||
a(target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13") One-KVM Documentation
|
||||
a(target="_blank" href="https://one-kvm.mofeng.run" i18n="onekvm_documentation_link") One-KVM Documentation
|
||||
| |
|
||||
a(target="_blank" href="https://pikvm.org" i18n="index_text_10") PiKVM Project
|
||||
a(target="_blank" href="https://pikvm.org" i18n="pikvm_project_link") PiKVM Project
|
||||
| |
|
||||
a(target="_blank" href="https://docs.pikvm.org" i18n="index_text_11") Documentation
|
||||
a(target="_blank" href="https://docs.pikvm.org" i18n="pikvm_documentation_link") Documentation
|
||||
@ -32,7 +32,7 @@ mixin lamp(cls)
|
||||
|
||||
.window#keyboard-window(data-show-centered)
|
||||
.window-header#keyboard-window-header
|
||||
.window-grab(i18n="kvm_text15") Virtual Keyboard
|
||||
.window-grab(i18n="virtual_keyboard_title") Virtual Keyboard
|
||||
.window-buttons
|
||||
button.window-button-original •
|
||||
button.window-button-close #[b ×]
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
.window.window-resizable#webterm-window(data-show-centered style="display: flex; min-width: 720px; min-height: 480px")
|
||||
.window-header
|
||||
.window-grab(i18n="kvm_text16") Terminal
|
||||
.window-grab(i18n="terminal_title") Terminal
|
||||
.window-buttons
|
||||
button.window-button-original •
|
||||
button.window-button-maximize ☐
|
||||
|
||||
@ -88,7 +88,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a target="_blank" href="https://docs.pikvm.org/auth/#session-expiration">Remember me</a>: </td>
|
||||
<td i18n="remember_me"><a target="_blank" href="https://docs.pikvm.org/auth/#session-expiration">Remember me</a>: </td>
|
||||
<td>
|
||||
<div class="radio-box">
|
||||
<input type="radio" id="expire-radio-3600" name="expire-radio" value="3600"/>
|
||||
@ -100,11 +100,6 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<hr>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td i18n="select_language">Select language: </td>
|
||||
<td>
|
||||
@ -114,6 +109,11 @@
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<hr>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
|
||||
@ -41,21 +41,21 @@ block body
|
||||
tr
|
||||
td(colspan=2) #[hr]
|
||||
tr
|
||||
td #[a(target="_blank" href="https://docs.pikvm.org/auth/#session-expiration") Remember me]:
|
||||
td(i18n="remember_me") #[a(target="_blank" href="https://docs.pikvm.org/auth/#session-expiration") Remember me]:
|
||||
td
|
||||
+radio("expire-radio", [
|
||||
{"title": "1h", "value": "3600"},
|
||||
{"title": "12h", "value": "43200"},
|
||||
{"title": "Forever", "value": "0", "checked": true},
|
||||
])
|
||||
tr
|
||||
td(colspan=2) #[hr]
|
||||
tr
|
||||
td(i18n="select_language") Select language:
|
||||
td
|
||||
select#selectLanguage(style="width:100%")
|
||||
option#zh(selected="selected" i18n="chinese") Simplified Chinese
|
||||
option#en(i18n="english") English
|
||||
tr
|
||||
td(colspan=2) #[hr]
|
||||
tr
|
||||
td
|
||||
td #[button.key#login-button(style="width:100%" i18n="login") Login]
|
||||
|
||||
@ -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 © 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 © 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 & 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":"• Show stream",
|
||||
"kvm_text21":"• Screenshot",
|
||||
"kvm_text22":"Reset stream",
|
||||
"kvm_text23":"Keyboard mode:",
|
||||
"kvm_text24":"Mouse mode:",
|
||||
"kvm_text25":"Keyboard & Mouse (HID) settings",
|
||||
"kvm_text26":"Mouse polling:",
|
||||
"kvm_text27":"Relative sensitivity:",
|
||||
"kvm_text28":"Reverse scrolling:",
|
||||
"kvm_text29":"Scroll rate:",
|
||||
"kvm_text30":"• 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 & 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":"• Show stream",
|
||||
"stream_screenshot":"• Screenshot",
|
||||
"stream_reset":"Reset stream",
|
||||
"hid_keyboard_mode":"Keyboard mode:",
|
||||
"hid_mouse_mode":"Mouse mode:",
|
||||
"hid_settings":"Keyboard & 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":"• 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":"• Paste",
|
||||
"kvm_text48":"using host keymap",
|
||||
"kvm_text49":"Text recognition <sup><i>β</i></sup><br>",
|
||||
"kvm_text50":"OCR works locally on One-KVM",
|
||||
"kvm_text51":"• 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":"• Paste",
|
||||
"text_using_keymap":"using host keymap",
|
||||
"text_ocr_title":"Text recognition <sup><i>β</i></sup><br>",
|
||||
"text_ocr_local_note":"OCR works locally on One-KVM",
|
||||
"text_ocr_select_area":"• 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 → Show keyboard<i>",
|
||||
"kvm_text59":"help",
|
||||
"shortcuts_menu":"Shortcuts",
|
||||
"shortcuts_description":"Quick keyboard shortcuts<br>",
|
||||
"shortcuts_also_see":"Also see <i>System → 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":"• Don't close the browser page until the upload is complete.",
|
||||
"kvm_text73":"• 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":"• Select NormalFiles tab to upload, package them and mount image",
|
||||
"kvm_text87":"• 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":"• Don't close the browser page until the upload is complete.",
|
||||
"drive_note_stream":"• 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":"• Select NormalFiles tab to upload, package them and mount image",
|
||||
"drive_transfer_download_note":"• 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: ",
|
||||
"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:"
|
||||
}
|
||||
|
||||
@ -10,118 +10,118 @@
|
||||
"footer-left": "本网站需要使用 JavaScript 功能。<br>本网站不含广告,但仍有可能会被某些广告过滤器屏蔽。<br>如果网页响应异常请关闭它并重新加载页面以继续浏览。",
|
||||
|
||||
"index": " One-KVM 导航 ",
|
||||
"copyright": "版权所有 © 2018-2024 Maxim Devaev | 由 SilentWind 二次开发",
|
||||
"index_text_1": "请注意,在使用 KVM 会话或其他可捕获键盘的应用程序时,您可能无法使用某些快捷键,如 Ctrl+Alt+Del(这会被操作系统捕获)或 Ctrl+W(这会被浏览器捕获)。",
|
||||
"index_text_2": "要突破这一限制,您可以使用 Google Chrome 浏览器。",
|
||||
"serve_name": "主机名:",
|
||||
"index_text_10":"PiKVM 项目",
|
||||
"index_text_11":"PiKVM 文档",
|
||||
"index_text_12":"One-KVM 项目",
|
||||
"index_text_13":"One-KVM 文档",
|
||||
"copyright": "版权所有 © 2018-2025 Maxim Devaev | 由 SilentWind 二次开发",
|
||||
"keyboard_limitation_note": "请注意,在使用 KVM 会话或其他可捕获键盘的应用程序时,您可能无法使用某些快捷键,如 Ctrl+Alt+Del(这会被操作系统捕获)或 Ctrl+W(这会被浏览器捕获)。",
|
||||
"browser_solution_note": "要突破这一限制,您可以使用 Google Chrome 浏览器。",
|
||||
"serve_name": "服务器名称:",
|
||||
"pikvm_project_link":"PiKVM 项目",
|
||||
"pikvm_documentation_link":"PiKVM 文档",
|
||||
"onekvm_project_link":"One-KVM 项目",
|
||||
"onekvm_documentation_link":"One-KVM 文档",
|
||||
"index_title":"开源 KVM over IP",
|
||||
|
||||
"vnc_text1": "该 One-KVM 设备 <b>kvmd-vnc</b> 守护进程已运行,提供对服务器的 VNC 访问。",
|
||||
"vnc_text2": "<b>不建议</b>在未启用 X.509 或 TLS 加密的网络中使用 VNC。否则,您的密码将以纯文本形式在网络上传输。",
|
||||
"vnc_text3": "VNC 客户端必须支持 Tight JPEG 压缩和密码验证。",
|
||||
"vnc_daemon_running": "该 One-KVM 设备 <b>kvmd-vnc</b> 守护进程已运行,提供对服务器的 VNC 访问。",
|
||||
"vnc_security_warning": "<b>不建议</b>在未启用 X.509 或 TLS 加密的网络中使用 VNC。否则,您的密码将以纯文本形式在网络上传输。",
|
||||
"vnc_client_requirements": "VNC 客户端必须支持 Tight JPEG 压缩和密码验证。",
|
||||
|
||||
"ipmi_text1":"该 One-KVM 设备 <b>kvmd-ipmi</b> 守护进程已运行,并为一些基本的 BMC 操作(如打开/关闭/重置服务器)提供了 IPMI 2.0 接口。",
|
||||
"ipmi_text2":"<b>不建议</b>在不受信任的网络中使用 IPMI,因为该协议的设计完全不安全。<br>原因如下,IPMI 的身份验证过程要求服务器在客户端进行身份验证之前,向客户端发送请求用户密码的加盐 SHA1 或 MD5 哈希值。",
|
||||
"ipmi_text3":"<b>不建议</b>为 KVMD 和 IPMI 用户使用相同的密码,或者直接关闭 IPMI。如有需要可以通过 curl 直接使用 KVMD API。下面是一些示例:",
|
||||
"ipmi_daemon_running":"该 One-KVM 设备 <b>kvmd-ipmi</b> 守护进程已运行,并为一些基本的 BMC 操作(如打开/关闭/重置服务器)提供了 IPMI 2.0 接口。",
|
||||
"ipmi_security_warning":"<b>不建议</b>在不受信任的网络中使用 IPMI,因为该协议的设计完全不安全。<br>原因如下,IPMI 的身份验证过程要求服务器在客户端进行身份验证之前,向客户端发送请求用户密码的加盐 SHA1 或 MD5 哈希值。",
|
||||
"ipmi_password_recommendation":"<b>不建议</b>为 KVMD 和 IPMI 用户使用相同的密码,或者直接关闭 IPMI。如有需要可以通过 curl 直接使用 KVMD API。下面是一些示例:",
|
||||
|
||||
"kvm_text1":"关于",
|
||||
"kvm_text2":"//<a href=\"https://one-kvm.mofeng.run/thanks/#_2\">这些人</a>向 One-KVM 项目赞助并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 One-KVM ,可以在 <a target=\"_blank\" href=\"https://afdian.com/a/silentwind\"> 爱发电 </a>上捐款</a>。<br><br>//<a href=\"https://github.com/pikvm/pikvm?tab=readme-ov-file#special-thanks\">这些人</a>向 PiKVM 项目赞助并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 PiKVM ,可以在 <a target=\"_blank\" href=\"https://www.patreon.com/pikvm\"> Patreon</a> 或 <a target=\"_blank\" href=\"https://paypal.me/pikvm\"> PayPal 上捐款</a>。",
|
||||
"kvm_text3":"系统",
|
||||
"kvm_text4":"运行设置 & 工具",
|
||||
"kvm_text5":"终端",
|
||||
"kvm_text6":"关于",
|
||||
"kvm_text7":"日志",
|
||||
"kvm_text8":"网络唤醒",
|
||||
"kvm_text9":"分辨率:",
|
||||
"kvm_text10":"JPEG 质量:",
|
||||
"kvm_text11":"JPEG 最大FPS:",
|
||||
"kvm_text12":"H.264 比特率:",
|
||||
"kvm_text13":"H.264 帧间隔:",
|
||||
"kvm_text14":"视频模式",
|
||||
"kvm_text15":"虚拟键盘",
|
||||
"kvm_text16":"终端",
|
||||
"kvm_text17":"方向:",
|
||||
"kvm_text18":"默认",
|
||||
"kvm_text19":"音量:",
|
||||
"kvm_text20":"• 显示视频流",
|
||||
"kvm_text21":"• 截屏",
|
||||
"kvm_text22":"重置视频流",
|
||||
"kvm_text23":"键盘模式:",
|
||||
"kvm_text24":"鼠标模式:",
|
||||
"kvm_text25":"键盘 & 鼠标 (HID) 设置",
|
||||
"kvm_text26":"鼠标轮询:",
|
||||
"kvm_text27":"相对灵敏度:",
|
||||
"kvm_text28":"反向滚动:",
|
||||
"kvm_text29":"滚动速率:",
|
||||
"kvm_text30":"显示虚拟键盘",
|
||||
"kvm_text31":"重置 HID",
|
||||
"about_title":"关于",
|
||||
"about_sponsors":"//<a href=\"https://one-kvm.mofeng.run/thanks/#_2\">这些人</a>向 One-KVM 项目赞助并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 One-KVM ,可以在 <a target=\"_blank\" href=\"https://afdian.com/a/silentwind\"> 爱发电 </a>上捐款</a>。<br><br>//<a href=\"https://github.com/pikvm/pikvm?tab=readme-ov-file#special-thanks\">这些人</a>向 PiKVM 项目赞助并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 PiKVM ,可以在 <a target=\"_blank\" href=\"https://www.patreon.com/pikvm\"> Patreon</a> 或 <a target=\"_blank\" href=\"https://paypal.me/pikvm\"> PayPal 上捐款</a>。",
|
||||
"system_menu":"系统",
|
||||
"system_runtime_settings":"运行设置 & 工具",
|
||||
"system_terminal":"终端",
|
||||
"system_about":"关于",
|
||||
"system_log":"日志",
|
||||
"system_wol":"网络唤醒",
|
||||
"video_resolution":"分辨率:",
|
||||
"video_jpeg_quality":"JPEG 质量:",
|
||||
"video_jpeg_fps":"JPEG 最大帧率:",
|
||||
"video_h264_bitrate":"H.264 比特率:",
|
||||
"video_h264_gop":"H.264 帧间隔:",
|
||||
"video_mode":"视频模式",
|
||||
"virtual_keyboard_title":"虚拟键盘",
|
||||
"terminal_title":"终端",
|
||||
"video_orientation":"方向:",
|
||||
"video_orientation_default":"默认",
|
||||
"audio_volume":"音量:",
|
||||
"stream_show":"• 显示视频流",
|
||||
"stream_screenshot":"• 截屏",
|
||||
"stream_reset":"重置视频流",
|
||||
"hid_keyboard_mode":"键盘模式:",
|
||||
"hid_mouse_mode":"鼠标模式:",
|
||||
"hid_settings":"键盘 & 鼠标 (HID) 设置",
|
||||
"hid_mouse_polling":"鼠标轮询:",
|
||||
"hid_mouse_sensitivity":"相对灵敏度:",
|
||||
"hid_mouse_reverse_scroll":"反向滚动:",
|
||||
"hid_mouse_scroll_rate":"滚动速率:",
|
||||
"hid_show_keyboard":"显示虚拟键盘",
|
||||
"hid_reset":"重置 HID",
|
||||
|
||||
"kvm_text32":"宏",
|
||||
"kvm_text33":"录制或重放 HID/ATX/GPIO 操作<br>",
|
||||
"kvm_text34":"出于安全原因,录制的脚本默认不会保存到 One-KVM 主机上",
|
||||
"kvm_text35":"录制",
|
||||
"kvm_text36":"停止",
|
||||
"kvm_text37":"重放",
|
||||
"kvm_text38":"清除",
|
||||
"kvm_text39":"脚本时间:",
|
||||
"kvm_text40":"脚本事件:",
|
||||
"kvm_text41":"包括延迟",
|
||||
"kvm_text42":"上传脚本文件",
|
||||
"kvm_text43":"下载脚本文件",
|
||||
"macro_menu":"宏",
|
||||
"macro_description":"录制或重放 HID/ATX/GPIO 操作<br>",
|
||||
"macro_security_note":"出于安全原因,录制的脚本默认不会保存到 One-KVM 主机上",
|
||||
"macro_record":"录制",
|
||||
"macro_stop":"停止",
|
||||
"macro_play":"重放",
|
||||
"macro_clear":"清除",
|
||||
"macro_script_time":"脚本时间:",
|
||||
"macro_script_events":"脚本事件:",
|
||||
"macro_include_delays":"包括延迟",
|
||||
"macro_upload_script":"上传脚本文件",
|
||||
"macro_download_script":"下载脚本文件",
|
||||
|
||||
"kvm_text44":"文本",
|
||||
"kvm_text45":"以按键序列方式粘贴文本<br>",
|
||||
"kvm_text46":"请注意 One-KVM 无法自动切换被控机键盘布局",
|
||||
"kvm_text47":"• 粘贴",
|
||||
"kvm_text48":"使用的键盘布局",
|
||||
"kvm_text49":"文本识别<br>",
|
||||
"kvm_text50":"文本识别仅在 One-KVM 主机上本地运行",
|
||||
"kvm_text51":"• 框选识别区域",
|
||||
"kvm_text52":"进行",
|
||||
"kvm_text53":"文本识别",
|
||||
"kvm_text54":"按下 <b>Enter</b> 确认所选区域并将识别结果复制到粘贴板",
|
||||
"kvm_text55":"按下 <b>Esc</b> 取消框选",
|
||||
"text_menu":"文本",
|
||||
"text_paste_description":"以按键序列方式粘贴文本<br>",
|
||||
"text_keyboard_layout_note":"请注意,One-KVM 无法自动切换被控制主机的键盘布局",
|
||||
"text_paste_button":"• 粘贴",
|
||||
"text_using_keymap":"使用的键盘布局",
|
||||
"text_ocr_title":"文本识别<br>",
|
||||
"text_ocr_local_note":"文本识别仅在 One-KVM 主机上本地运行",
|
||||
"text_ocr_select_area":"• 框选识别区域",
|
||||
"text_ocr_for":"进行",
|
||||
"text_ocr_recognition":"文本识别",
|
||||
"text_ocr_enter_hint":"按下 <b>Enter</b> 确认所选区域并将识别结果复制到粘贴板",
|
||||
"text_ocr_escape_hint":"按下 <b>Esc</b> 取消框选",
|
||||
|
||||
"kvm_text56":"快捷键",
|
||||
"kvm_text57":"键盘快捷键<br>",
|
||||
"kvm_text58":"也可以查看 <i>系统 → 显示键盘<i>",
|
||||
"kvm_text59":"帮助",
|
||||
"shortcuts_menu":"快捷键",
|
||||
"shortcuts_description":"键盘快捷键<br>",
|
||||
"shortcuts_also_see":"也可以查看 <i>系统 → 显示键盘</i>",
|
||||
"shortcuts_help":"帮助",
|
||||
|
||||
"kvm_text60":"驱动器",
|
||||
"kvm_text61":"虚拟存储驱动器",
|
||||
"kvm_text62":"文件:",
|
||||
"kvm_text63":"驱动<a target=\"_blank\" href=\"https://docs.pikvm.org/msd\">模式</a>:",
|
||||
"kvm_text64":"选择要上传的文件",
|
||||
"kvm_text65":"上传",
|
||||
"kvm_text66":"中止",
|
||||
"kvm_text68":"指定本地文件:",
|
||||
"kvm_text69":"<b>或者</b>粘贴 URL:",
|
||||
"kvm_text70":"上传分区:",
|
||||
"kvm_text71":"注意:",
|
||||
"kvm_text72":"• 在上传完成之前,不要关闭浏览器页面。",
|
||||
"kvm_text73":"• 要加快上传速度,请关闭视频流窗口。",
|
||||
"kvm_text74":"新镜像:",
|
||||
"kvm_text75":"上传大小:",
|
||||
"kvm_text76":"连接 MSD 到主机",
|
||||
"kvm_text77":"断开连接",
|
||||
"kvm_text78":"重置",
|
||||
"kvm_text79":"视频录制<br>",
|
||||
"kvm_text80":"使用浏览器 API 录制视频,结束录制后视频文件会自动下载",
|
||||
"kvm_text81":"开始录制",
|
||||
"kvm_text82":"结束录制",
|
||||
"kvm_text83":"网页界面设置",
|
||||
"kvm_text84":"文件显示:",
|
||||
"kvm_text85":"快速文件互传:",
|
||||
"kvm_text86":"• 切换互传文件上传文件,打包生成镜像文件,挂载 NormalFiles 镜像",
|
||||
"kvm_text87":"• 断开 MSD 连接,选择从镜像文件解压,切换互传文件下载所需文件",
|
||||
"kvm_text88":"从互传文件打包镜像文件",
|
||||
"kvm_text89":"从镜像文件解压互传文件",
|
||||
"kvm_text90":"镜像文件",
|
||||
"kvm_text91":"互传文件",
|
||||
"drive_menu":"驱动器",
|
||||
"drive_title":"虚拟存储驱动器",
|
||||
"drive_image":"文件:",
|
||||
"drive_mode":"驱动<a target=\"_blank\" href=\"https://docs.pikvm.org/msd\">模式</a>:",
|
||||
"drive_select_upload":"选择要上传的文件",
|
||||
"drive_upload":"上传",
|
||||
"drive_abort":"中止",
|
||||
"drive_local_file":"指定本地文件:",
|
||||
"drive_paste_url":"<b>或者</b>粘贴 URL:",
|
||||
"drive_upload_partition":"上传分区:",
|
||||
"drive_note":"注意:",
|
||||
"drive_note_browser":"• 在上传完成之前,不要关闭浏览器页面。",
|
||||
"drive_note_stream":"• 要加快上传速度,请关闭视频流窗口。",
|
||||
"drive_new_image":"新镜像:",
|
||||
"drive_upload_size":"上传大小:",
|
||||
"drive_connect":"连接 MSD 到主机",
|
||||
"drive_disconnect":"断开连接",
|
||||
"drive_reset":"重置",
|
||||
"video_record_title":"视频录制<br>",
|
||||
"video_record_description":"使用浏览器 API 录制视频,结束录制后视频文件会自动下载",
|
||||
"video_record_start":"开始录制",
|
||||
"video_record_stop":"结束录制",
|
||||
"webui_settings":"网页界面设置",
|
||||
"drive_file_display":"文件显示:",
|
||||
"drive_quick_transfer":"快速文件传输:",
|
||||
"drive_transfer_upload_note":"• 切换到普通文件模式上传文件,打包生成镜像文件并挂载",
|
||||
"drive_transfer_download_note":"• 断开 MSD 连接,从镜像文件解压,切换到普通文件模式下载所需文件",
|
||||
"drive_package_files":"将文件打包为镜像文件",
|
||||
"drive_unpackage_files":"从镜像文件解压文件",
|
||||
"drive_image_files":"镜像文件模式",
|
||||
"drive_normal_files":"普通文件模式",
|
||||
|
||||
|
||||
|
||||
@ -153,5 +153,11 @@
|
||||
"msd-message-downloads":"正在从 One-KVM 下载镜像",
|
||||
"msd-message-another-user-uploads":"另一个用户正在上传镜像",
|
||||
"page-full-tab-stream-switch":"自动全屏视频窗口",
|
||||
"hid-keyboard-bad-link-switch":"故障链接模式(立即释放按键)"
|
||||
"hid-keyboard-bad-link-switch":"故障链接模式(立即释放按键)",
|
||||
"remember_me":"记住我: ",
|
||||
"web_ui_settings":"网页界面设置",
|
||||
"usb_breaker_confirm":"关闭此开关将断开与服务器的主 USB 连接。您确定要继续吗?",
|
||||
"usb_connect_main":"连接主 USB 到服务器:",
|
||||
"locator_led_enable":"启用定位 LED:",
|
||||
"stream-suspend-switch":"标签页不活跃时暂停视频流:"
|
||||
}
|
||||
|
||||
@ -51,12 +51,12 @@
|
||||
<div class="start-box">
|
||||
<div class="start"><a style="display:inline-block; margin-top:4px; color:#5c90bc; text-decoration:none" href="../" i18n="index"> ← [ One-KVM Index ]</a>
|
||||
<hr>
|
||||
<p class="text" i18n="vnc_text1">This PiKVM device has running <b>kvmd-vnc</b> daemon and provides VNC access to the server.</p>
|
||||
<p class="text" i18n="vnc_text2"><b>WARNING!</b> We strongly don't recommend you to use VNC in untrusted networks without
|
||||
<p class="text" i18n="vnc_daemon_running">This PiKVM device has running <b>kvmd-vnc</b> daemon and provides VNC access to the server.</p>
|
||||
<p class="text" i18n="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.
|
||||
</p>
|
||||
<p class="text" i18n="vnc_text3">
|
||||
<p class="text" i18n="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.
|
||||
|
||||
@ -9,13 +9,13 @@ append vars
|
||||
index_link = true
|
||||
|
||||
block start
|
||||
p.text(i18n="vnc_text1")
|
||||
p.text(i18n="vnc_daemon_running")
|
||||
| This PiKVM device has running #[b kvmd-vnc] daemon and provides VNC access to the server.
|
||||
p.text(i18n="vnc_text2")
|
||||
p.text(i18n="vnc_security_warning")
|
||||
| #[b WARNING!] 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.
|
||||
p.text(i18n="vnc_text3")
|
||||
p.text(i18n="vnc_client_requirements")
|
||||
| Your VNC client must support Tight JPEG compression and password authentication.
|
||||
| #[a(href="https://tigervnc.org") TigerVNC] is a good choice.
|
||||
| On Linux, this client will most likely be available for installation from the repository.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user