feat(connections): Add connections page (replaces new device dialog) (#919)
* feat(conn): add connection screen and logic * fixes from code review * force https * code review fixes * add http for self testing * enable deviceStore persistance * added translations * disabled feature flag * i18n updates * chore: add new folders to biome config (#910) * chore(i18n): New Crowdin Translations by GitHub Action (#908) Co-authored-by: Crowdin Bot <support+bot@crowdin.com> * fix: use correct deprecated GPS coordinate format enum (#917) The Config_DisplayConfig_GpsCoordinateFormat export doesn't exist in the protobufs package. The correct export is Config_DisplayConfig_DeprecatedGpsCoordinateFormat, which matches what's used in the validation schema. Added TODO comment explaining that this field is deprecated since protobufs 2.7.4 and should be migrated to DeviceUIConfig.gps_format when DeviceUI settings are implemented. * style: fix line wrapping for GPS coordinate format enum (#918) - Split long enum reference across multiple lines to improve code readability - Maintains consistent code formatting standards without changing functionality * fix(core): ensure core package works in browser (#923) * fix(core): ensure core package works in browser * style(core): revert new line removal * fix: add @serialport/bindings-cpp to onlyBuiltDependencies (#914) * feat(ui): Add UI library (#900) * feat: scaffold UI library * Update packages/ui/src/components/theme-provider.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * add lock file * lint/formatting fixes --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * formatting/linting fixes * fixed some paring logic * fixed connection issue with serial --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com> Co-authored-by: Azarattum <43073346+Azarattum@users.noreply.github.com> Co-authored-by: Ben Allfree <ben@benallfree.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
co-authored by
Copilot
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Crowdin Bot
Kamil Dzieniszewski
Azarattum
Ben Allfree
parent
a1a646983e
commit
1af1295b8f
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"title": "Connected Devices",
|
||||
"description": "Manage your connected Meshtastic devices.",
|
||||
"connectionType_ble": "BLE",
|
||||
"connectionType_serial": "Serial",
|
||||
"connectionType_network": "Network",
|
||||
"noDevicesTitle": "No devices connected",
|
||||
"noDevicesDescription": "Connect a new device to get started.",
|
||||
"button_newConnection": "New Connection"
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"dashboard": {
|
||||
"title": "Connected Devices",
|
||||
"description": "Manage your connected Meshtastic devices.",
|
||||
"connectionType_ble": "BLE",
|
||||
"connectionType_serial": "Serial",
|
||||
"connectionType_network": "Network",
|
||||
"noDevicesTitle": "No devices connected",
|
||||
"noDevicesDescription": "Connect a new device to get started.",
|
||||
"button_newConnection": "New Connection"
|
||||
}
|
||||
}
|
||||
@@ -1,229 +1,228 @@
|
||||
{
|
||||
"navigation": {
|
||||
"title": "Navigation",
|
||||
"messages": "Messages",
|
||||
"map": "Map",
|
||||
"settings": "Settings",
|
||||
"channels": "Channels",
|
||||
"radioConfig": "Radio Config",
|
||||
"deviceConfig": "Device Config",
|
||||
"moduleConfig": "Module Config",
|
||||
"nodes": "Nodes"
|
||||
},
|
||||
"app": {
|
||||
"title": "Meshtastic",
|
||||
"logo": "Meshtastic Logo"
|
||||
},
|
||||
"sidebar": {
|
||||
"collapseToggle": {
|
||||
"button": {
|
||||
"open": "Open sidebar",
|
||||
"close": "Close sidebar"
|
||||
}
|
||||
},
|
||||
"deviceInfo": {
|
||||
"volts": "{{voltage}} volts",
|
||||
"firmware": {
|
||||
"title": "Firmware",
|
||||
"version": "v{{version}}",
|
||||
"buildDate": "Build date: {{date}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"batteryStatus": {
|
||||
"charging": "{{level}}% charging",
|
||||
"pluggedIn": "Plugged in",
|
||||
"title": "Battery"
|
||||
},
|
||||
"search": {
|
||||
"nodes": "Search nodes...",
|
||||
"channels": "Search channels...",
|
||||
"commandPalette": "Search commands..."
|
||||
},
|
||||
"toast": {
|
||||
"positionRequestSent": {
|
||||
"title": "Position request sent."
|
||||
},
|
||||
"requestingPosition": {
|
||||
"title": "Requesting position, please wait..."
|
||||
},
|
||||
"sendingTraceroute": {
|
||||
"title": "Sending Traceroute, please wait..."
|
||||
},
|
||||
"tracerouteSent": {
|
||||
"title": "Traceroute sent."
|
||||
},
|
||||
"savedChannel": {
|
||||
"title": "Saved Channel: {{channelName}}"
|
||||
},
|
||||
"messages": {
|
||||
"pkiEncryption": {
|
||||
"title": "Chat is using PKI encryption."
|
||||
},
|
||||
"pskEncryption": {
|
||||
"title": "Chat is using PSK encryption."
|
||||
}
|
||||
},
|
||||
"configSaveError": {
|
||||
"title": "Error Saving Config",
|
||||
"description": "An error occurred while saving the configuration."
|
||||
},
|
||||
"validationError": {
|
||||
"title": "Config Errors Exist",
|
||||
"description": "Please fix the configuration errors before saving."
|
||||
},
|
||||
"saveSuccess": {
|
||||
"title": "Saving Config",
|
||||
"description": "The configuration change {{case}} has been saved."
|
||||
},
|
||||
"saveAllSuccess": {
|
||||
"title": "Saved",
|
||||
"description": "All configuration changes have been saved."
|
||||
},
|
||||
"favoriteNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} favorites.",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
},
|
||||
"ignoreNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} ignore list",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"copied": {
|
||||
"label": "Copied!"
|
||||
},
|
||||
"copyToClipboard": {
|
||||
"label": "Copy to clipboard"
|
||||
},
|
||||
"hidePassword": {
|
||||
"label": "Hide password"
|
||||
},
|
||||
"showPassword": {
|
||||
"label": "Show password"
|
||||
},
|
||||
"deliveryStatus": {
|
||||
"delivered": "Delivered",
|
||||
"failed": "Delivery Failed",
|
||||
"waiting": "Waiting",
|
||||
"unknown": "Unknown"
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"label": "General"
|
||||
},
|
||||
"hardware": {
|
||||
"label": "Hardware"
|
||||
},
|
||||
"metrics": {
|
||||
"label": "Metrics"
|
||||
},
|
||||
"role": {
|
||||
"label": "Role"
|
||||
},
|
||||
"filter": {
|
||||
"label": "Filter"
|
||||
},
|
||||
"advanced": {
|
||||
"label": "Advanced"
|
||||
},
|
||||
"clearInput": {
|
||||
"label": "Clear input"
|
||||
},
|
||||
"resetFilters": {
|
||||
"label": "Reset Filters"
|
||||
},
|
||||
"nodeName": {
|
||||
"label": "Node name/number",
|
||||
"placeholder": "Meshtastic 1234"
|
||||
},
|
||||
"airtimeUtilization": {
|
||||
"label": "Airtime Utilization (%)",
|
||||
"short": "Airtime Util. (%)"
|
||||
},
|
||||
"batteryLevel": {
|
||||
"label": "Battery level (%)",
|
||||
"labelText": "Battery level (%): {{value}}"
|
||||
},
|
||||
"batteryVoltage": {
|
||||
"label": "Battery voltage (V)",
|
||||
"title": "Voltage"
|
||||
},
|
||||
"channelUtilization": {
|
||||
"label": "Channel Utilization (%)",
|
||||
"short": "Channel Util. (%)"
|
||||
},
|
||||
"hops": {
|
||||
"direct": "Direct",
|
||||
"label": "Number of hops",
|
||||
"text": "Number of hops: {{value}}"
|
||||
},
|
||||
"lastHeard": {
|
||||
"label": "Last heard",
|
||||
"labelText": "Last heard: {{value}}",
|
||||
"nowLabel": "Now"
|
||||
},
|
||||
"snr": {
|
||||
"label": "SNR (db)"
|
||||
},
|
||||
"favorites": {
|
||||
"label": "Favorites"
|
||||
},
|
||||
"hide": {
|
||||
"label": "Hide"
|
||||
},
|
||||
"showOnly": {
|
||||
"label": "Show Only"
|
||||
},
|
||||
"viaMqtt": {
|
||||
"label": "Connected via MQTT"
|
||||
},
|
||||
"hopsUnknown": {
|
||||
"label": "Unknown number of hops"
|
||||
},
|
||||
"showUnheard": {
|
||||
"label": "Never heard"
|
||||
},
|
||||
"language": {
|
||||
"label": "Language",
|
||||
"changeLanguage": "Change Language"
|
||||
},
|
||||
"theme": {
|
||||
"dark": "Dark",
|
||||
"light": "Light",
|
||||
"system": "Automatic",
|
||||
"changeTheme": "Change Color Scheme"
|
||||
},
|
||||
"errorPage": {
|
||||
"title": "This is a little embarrassing...",
|
||||
"description1": "We are really sorry but an error occurred in the web client that caused it to crash. <br /> This is not supposed to happen, and we are working hard to fix it.",
|
||||
"description2": "The best way to prevent this from happening again to you or anyone else is to report the issue to us.",
|
||||
"reportInstructions": "Please include the following information in your report:",
|
||||
"reportSteps": {
|
||||
"step1": "What you were doing when the error occurred",
|
||||
"step2": "What you expected to happen",
|
||||
"step3": "What actually happened",
|
||||
"step4": "Any other relevant information"
|
||||
},
|
||||
"reportLink": "You can report the issue to our <0>GitHub</0>",
|
||||
"dashboardLink": "Return to the <0>dashboard</0>",
|
||||
"detailsSummary": "Error Details",
|
||||
"errorMessageLabel": "Error message:",
|
||||
"stackTraceLabel": "Stack trace:",
|
||||
"fallbackError": "{{error}}"
|
||||
},
|
||||
"footer": {
|
||||
"text": "Powered by <0>▲ Vercel</0> | Meshtastic® is a registered trademark of Meshtastic LLC. | <1>Legal Information</1>",
|
||||
"commitSha": "Commit SHA: {{sha}}"
|
||||
}
|
||||
"navigation": {
|
||||
"title": "Navigation",
|
||||
"messages": "Messages",
|
||||
"map": "Map",
|
||||
"config": "Config",
|
||||
"radioConfig": "Radio Config",
|
||||
"moduleConfig": "Module Config",
|
||||
"channels": "Channels",
|
||||
"nodes": "Nodes"
|
||||
},
|
||||
"app": {
|
||||
"title": "Meshtastic",
|
||||
"logo": "Meshtastic Logo"
|
||||
},
|
||||
"sidebar": {
|
||||
"collapseToggle": {
|
||||
"button": {
|
||||
"open": "Open sidebar",
|
||||
"close": "Close sidebar"
|
||||
}
|
||||
},
|
||||
"deviceInfo": {
|
||||
"volts": "{{voltage}} volts",
|
||||
"firmware": {
|
||||
"title": "Firmware",
|
||||
"version": "v{{version}}",
|
||||
"buildDate": "Build date: {{date}}"
|
||||
},
|
||||
"deviceName": {
|
||||
"title": "Device Name",
|
||||
"changeName": "Change Device Name",
|
||||
"placeholder": "Enter device name"
|
||||
},
|
||||
"editDeviceName": "Edit device name"
|
||||
}
|
||||
},
|
||||
"batteryStatus": {
|
||||
"charging": "{{level}}% charging",
|
||||
"pluggedIn": "Plugged in",
|
||||
"title": "Battery"
|
||||
},
|
||||
"search": {
|
||||
"nodes": "Search nodes...",
|
||||
"channels": "Search channels...",
|
||||
"commandPalette": "Search commands..."
|
||||
},
|
||||
"toast": {
|
||||
"positionRequestSent": {
|
||||
"title": "Position request sent."
|
||||
},
|
||||
"requestingPosition": {
|
||||
"title": "Requesting position, please wait..."
|
||||
},
|
||||
"sendingTraceroute": {
|
||||
"title": "Sending Traceroute, please wait..."
|
||||
},
|
||||
"tracerouteSent": {
|
||||
"title": "Traceroute sent."
|
||||
},
|
||||
"savedChannel": {
|
||||
"title": "Saved Channel: {{channelName}}"
|
||||
},
|
||||
"messages": {
|
||||
"pkiEncryption": {
|
||||
"title": "Chat is using PKI encryption."
|
||||
},
|
||||
"pskEncryption": {
|
||||
"title": "Chat is using PSK encryption."
|
||||
}
|
||||
},
|
||||
"configSaveError": {
|
||||
"title": "Error Saving Config",
|
||||
"description": "An error occurred while saving the configuration."
|
||||
},
|
||||
"validationError": {
|
||||
"title": "Config Errors Exist",
|
||||
"description": "Please fix the configuration errors before saving."
|
||||
},
|
||||
"saveSuccess": {
|
||||
"title": "Saving Config",
|
||||
"description": "The configuration change {{case}} has been saved."
|
||||
},
|
||||
"favoriteNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} favorites.",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
},
|
||||
"ignoreNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} ignore list",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"copied": {
|
||||
"label": "Copied!"
|
||||
},
|
||||
"copyToClipboard": {
|
||||
"label": "Copy to clipboard"
|
||||
},
|
||||
"hidePassword": {
|
||||
"label": "Hide password"
|
||||
},
|
||||
"showPassword": {
|
||||
"label": "Show password"
|
||||
},
|
||||
"deliveryStatus": {
|
||||
"delivered": "Delivered",
|
||||
"failed": "Delivery Failed",
|
||||
"waiting": "Waiting",
|
||||
"unknown": "Unknown"
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"label": "General"
|
||||
},
|
||||
"hardware": {
|
||||
"label": "Hardware"
|
||||
},
|
||||
"metrics": {
|
||||
"label": "Metrics"
|
||||
},
|
||||
"role": {
|
||||
"label": "Role"
|
||||
},
|
||||
"filter": {
|
||||
"label": "Filter"
|
||||
},
|
||||
"advanced": {
|
||||
"label": "Advanced"
|
||||
},
|
||||
"clearInput": {
|
||||
"label": "Clear input"
|
||||
},
|
||||
"resetFilters": {
|
||||
"label": "Reset Filters"
|
||||
},
|
||||
"nodeName": {
|
||||
"label": "Node name/number",
|
||||
"placeholder": "Meshtastic 1234"
|
||||
},
|
||||
"airtimeUtilization": {
|
||||
"label": "Airtime Utilization (%)"
|
||||
},
|
||||
"batteryLevel": {
|
||||
"label": "Battery level (%)",
|
||||
"labelText": "Battery level (%): {{value}}"
|
||||
},
|
||||
"batteryVoltage": {
|
||||
"label": "Battery voltage (V)",
|
||||
"title": "Voltage"
|
||||
},
|
||||
"channelUtilization": {
|
||||
"label": "Channel Utilization (%)"
|
||||
},
|
||||
"hops": {
|
||||
"direct": "Direct",
|
||||
"label": "Number of hops",
|
||||
"text": "Number of hops: {{value}}"
|
||||
},
|
||||
"lastHeard": {
|
||||
"label": "Last heard",
|
||||
"labelText": "Last heard: {{value}}",
|
||||
"nowLabel": "Now"
|
||||
},
|
||||
"snr": {
|
||||
"label": "SNR (db)"
|
||||
},
|
||||
"favorites": {
|
||||
"label": "Favorites"
|
||||
},
|
||||
"hide": {
|
||||
"label": "Hide"
|
||||
},
|
||||
"showOnly": {
|
||||
"label": "Show Only"
|
||||
},
|
||||
"viaMqtt": {
|
||||
"label": "Connected via MQTT"
|
||||
},
|
||||
"hopsUnknown": {
|
||||
"label": "Unknown number of hops"
|
||||
},
|
||||
"showUnheard": {
|
||||
"label": "Never heard"
|
||||
},
|
||||
"language": {
|
||||
"label": "Language",
|
||||
"changeLanguage": "Change Language"
|
||||
},
|
||||
"theme": {
|
||||
"dark": "Dark",
|
||||
"light": "Light",
|
||||
"system": "Automatic",
|
||||
"changeTheme": "Change Color Scheme"
|
||||
},
|
||||
"errorPage": {
|
||||
"title": "This is a little embarrassing...",
|
||||
"description1": "We are really sorry but an error occurred in the web client that caused it to crash. <br /> This is not supposed to happen, and we are working hard to fix it.",
|
||||
"description2": "The best way to prevent this from happening again to you or anyone else is to report the issue to us.",
|
||||
"reportInstructions": "Please include the following information in your report:",
|
||||
"reportSteps": {
|
||||
"step1": "What you were doing when the error occurred",
|
||||
"step2": "What you expected to happen",
|
||||
"step3": "What actually happened",
|
||||
"step4": "Any other relevant information"
|
||||
},
|
||||
"reportLink": "You can report the issue to our <0>GitHub</0>",
|
||||
"connectionsLink": "Return to the <0>connections</0>",
|
||||
"detailsSummary": "Error Details",
|
||||
"errorMessageLabel": "Error message:",
|
||||
"stackTraceLabel": "Stack trace:",
|
||||
"fallbackError": "{{error}}"
|
||||
},
|
||||
"footer": {
|
||||
"text": "Powered by <0>▲ Vercel</0> | Meshtastic® is a registered trademark of Meshtastic LLC. | <1>Legal Information</1>",
|
||||
"commitSha": "Commit SHA: {{sha}}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"connections": {
|
||||
"title": "Свързани устройства",
|
||||
"description": "Управлявайте свързаните си устройства Meshtastic.",
|
||||
"connectionType_ble": "BLE",
|
||||
"connectionType_serial": "Серийна",
|
||||
"connectionType_network": "Мрежа",
|
||||
"noDevicesTitle": "Няма свързани устройства",
|
||||
"noDevicesDescription": "Свържете ново устройство, за да започнете.",
|
||||
"button_newConnection": "Нова връзка"
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"dashboard": {
|
||||
"title": "Свързани устройства",
|
||||
"description": "Управлявайте свързаните си устройства Meshtastic.",
|
||||
"connectionType_ble": "BLE",
|
||||
"connectionType_serial": "Серийна",
|
||||
"connectionType_network": "Мрежа",
|
||||
"noDevicesTitle": "Няма свързани устройства",
|
||||
"noDevicesDescription": "Свържете ново устройство, за да започнете.",
|
||||
"button_newConnection": "Нова връзка"
|
||||
}
|
||||
}
|
||||
@@ -1,229 +1,228 @@
|
||||
{
|
||||
"navigation": {
|
||||
"title": "Навигация",
|
||||
"messages": "Съобщения",
|
||||
"map": "Карта",
|
||||
"settings": "Настройки",
|
||||
"channels": "Канали",
|
||||
"radioConfig": "Конфигурация на радиото",
|
||||
"deviceConfig": "Конфигуриране на устройството",
|
||||
"moduleConfig": "Конфигурация на модула",
|
||||
"nodes": "Възли"
|
||||
},
|
||||
"app": {
|
||||
"title": "Meshtastic",
|
||||
"logo": "Лого на Meshtastic"
|
||||
},
|
||||
"sidebar": {
|
||||
"collapseToggle": {
|
||||
"button": {
|
||||
"open": "Отваряне на страничната лента",
|
||||
"close": "Затваряне на страничната лента"
|
||||
}
|
||||
},
|
||||
"deviceInfo": {
|
||||
"volts": "{{voltage}} волта",
|
||||
"firmware": {
|
||||
"title": "Фърмуер",
|
||||
"version": "v{{version}}",
|
||||
"buildDate": "Дата на компилация: {{date}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"batteryStatus": {
|
||||
"charging": "{{level}}% зареждане",
|
||||
"pluggedIn": "Включен в ел. мрежа",
|
||||
"title": "Батерия"
|
||||
},
|
||||
"search": {
|
||||
"nodes": "Търсене на възли...",
|
||||
"channels": "Търсене на канали...",
|
||||
"commandPalette": "Търсене на команди..."
|
||||
},
|
||||
"toast": {
|
||||
"positionRequestSent": {
|
||||
"title": "Заявката за позиция е изпратена."
|
||||
},
|
||||
"requestingPosition": {
|
||||
"title": "Запитване за позиция, моля изчакайте..."
|
||||
},
|
||||
"sendingTraceroute": {
|
||||
"title": "Sending Traceroute, please wait..."
|
||||
},
|
||||
"tracerouteSent": {
|
||||
"title": "Traceroute sent."
|
||||
},
|
||||
"savedChannel": {
|
||||
"title": "Запазен канал: {{channelName}}"
|
||||
},
|
||||
"messages": {
|
||||
"pkiEncryption": {
|
||||
"title": "Чатът използва PKI криптиране."
|
||||
},
|
||||
"pskEncryption": {
|
||||
"title": "Чатът използва PSK криптиране."
|
||||
}
|
||||
},
|
||||
"configSaveError": {
|
||||
"title": "Грешка при запазване на конфигурацията",
|
||||
"description": "Възникна грешка при запазване на конфигурацията."
|
||||
},
|
||||
"validationError": {
|
||||
"title": "Съществуват грешки в конфигурацията",
|
||||
"description": "Моля, коригирайте грешките в конфигурацията, преди да я запазите."
|
||||
},
|
||||
"saveSuccess": {
|
||||
"title": "Запазване на конфигурацията",
|
||||
"description": "Промяната в конфигурацията {{case}} е запазена."
|
||||
},
|
||||
"saveAllSuccess": {
|
||||
"title": "Saved",
|
||||
"description": "All configuration changes have been saved."
|
||||
},
|
||||
"favoriteNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} любими.",
|
||||
"action": {
|
||||
"added": "Добавен",
|
||||
"removed": "Премахнат",
|
||||
"to": "в",
|
||||
"from": "от"
|
||||
}
|
||||
},
|
||||
"ignoreNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} списък с игнорирани",
|
||||
"action": {
|
||||
"added": "Добавен",
|
||||
"removed": "Премахнат",
|
||||
"to": "в",
|
||||
"from": "от"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"copied": {
|
||||
"label": "Копирано!"
|
||||
},
|
||||
"copyToClipboard": {
|
||||
"label": "Копиране в клипборда"
|
||||
},
|
||||
"hidePassword": {
|
||||
"label": "Скриване на паролата"
|
||||
},
|
||||
"showPassword": {
|
||||
"label": "Показване на паролата"
|
||||
},
|
||||
"deliveryStatus": {
|
||||
"delivered": "Доставено",
|
||||
"failed": "Неуспешна доставка",
|
||||
"waiting": "Изчакване",
|
||||
"unknown": "Неизвестно"
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"label": "General"
|
||||
},
|
||||
"hardware": {
|
||||
"label": "Хардуер"
|
||||
},
|
||||
"metrics": {
|
||||
"label": "Метрики"
|
||||
},
|
||||
"role": {
|
||||
"label": "Роля"
|
||||
},
|
||||
"filter": {
|
||||
"label": "Филтър"
|
||||
},
|
||||
"advanced": {
|
||||
"label": "Разширени"
|
||||
},
|
||||
"clearInput": {
|
||||
"label": "Clear input"
|
||||
},
|
||||
"resetFilters": {
|
||||
"label": "Нулиране на филтрите"
|
||||
},
|
||||
"nodeName": {
|
||||
"label": "Име/номер на възел",
|
||||
"placeholder": "Meshtastic 1234"
|
||||
},
|
||||
"airtimeUtilization": {
|
||||
"label": "Използване на ефира (%)",
|
||||
"short": "Airtime Util. (%)"
|
||||
},
|
||||
"batteryLevel": {
|
||||
"label": "Ниво на батерията (%)",
|
||||
"labelText": "Ниво на батерията (%): {{value}}"
|
||||
},
|
||||
"batteryVoltage": {
|
||||
"label": "Напрежение на батерията (V)",
|
||||
"title": "Напрежение"
|
||||
},
|
||||
"channelUtilization": {
|
||||
"label": "Използване на канала (%)",
|
||||
"short": "Channel Util. (%)"
|
||||
},
|
||||
"hops": {
|
||||
"direct": "Директно",
|
||||
"label": "Брой хопове",
|
||||
"text": "Брой хопове: {{value}}"
|
||||
},
|
||||
"lastHeard": {
|
||||
"label": "Последно чут",
|
||||
"labelText": "Последно чут: {{value}}",
|
||||
"nowLabel": "Сега"
|
||||
},
|
||||
"snr": {
|
||||
"label": "SNR (db)"
|
||||
},
|
||||
"favorites": {
|
||||
"label": "Любими"
|
||||
},
|
||||
"hide": {
|
||||
"label": "Скриване"
|
||||
},
|
||||
"showOnly": {
|
||||
"label": "Показване само"
|
||||
},
|
||||
"viaMqtt": {
|
||||
"label": "Свързан чрез MQTT"
|
||||
},
|
||||
"hopsUnknown": {
|
||||
"label": "Неизвестен брой хопове"
|
||||
},
|
||||
"showUnheard": {
|
||||
"label": "Никога не е чуван"
|
||||
},
|
||||
"language": {
|
||||
"label": "Език",
|
||||
"changeLanguage": "Промяна на езика"
|
||||
},
|
||||
"theme": {
|
||||
"dark": "Тъмна",
|
||||
"light": "Светла",
|
||||
"system": "Автоматично",
|
||||
"changeTheme": "Промяна на цветовата схема"
|
||||
},
|
||||
"errorPage": {
|
||||
"title": "Това е малко смущаващо...",
|
||||
"description1": "Наистина съжаляваме, но възникна грешка в web клиента, която доведе до срив. <br /> Това не би трябвало да се случва и работим усилено, за да го поправим.",
|
||||
"description2": "Най-добрият начин да предотвратите това да се случи отново с вас или с някой друг е да ни съобщите за проблема.",
|
||||
"reportInstructions": "Моля, включете следната информация в доклада си:",
|
||||
"reportSteps": {
|
||||
"step1": "Какво правехте, когато възникна грешката",
|
||||
"step2": "Какво очаквахте да се случи",
|
||||
"step3": "Какво всъщност се случи",
|
||||
"step4": "Всяка друга подходяща информация"
|
||||
},
|
||||
"reportLink": "Можете да съобщите за проблема в нашия <0>GitHub</0>",
|
||||
"dashboardLink": "Връщане към <0>таблото</0>",
|
||||
"detailsSummary": "Подробности за грешката",
|
||||
"errorMessageLabel": "Съобщение за грешка:",
|
||||
"stackTraceLabel": "Stack trace:",
|
||||
"fallbackError": "{{error}}"
|
||||
},
|
||||
"footer": {
|
||||
"text": "Задвижвано от <0>▲ Vercel</0> | Meshtastic® е регистрирана търговска марка на Meshtastic LLC. | <1>Правна информация</1>",
|
||||
"commitSha": "Commit SHA: {{sha}}"
|
||||
}
|
||||
"navigation": {
|
||||
"title": "Навигация",
|
||||
"messages": "Съобщения",
|
||||
"map": "Карта",
|
||||
"config": "Конфигурация",
|
||||
"radioConfig": "Конфигурация на радиото",
|
||||
"moduleConfig": "Конфигурация на модула",
|
||||
"channels": "Канали",
|
||||
"nodes": "Възли"
|
||||
},
|
||||
"app": {
|
||||
"title": "Meshtastic",
|
||||
"logo": "Лого на Meshtastic"
|
||||
},
|
||||
"sidebar": {
|
||||
"collapseToggle": {
|
||||
"button": {
|
||||
"open": "Отваряне на страничната лента",
|
||||
"close": "Затваряне на страничната лента"
|
||||
}
|
||||
},
|
||||
"deviceInfo": {
|
||||
"volts": "{{voltage}} волта",
|
||||
"firmware": {
|
||||
"title": "Фърмуер",
|
||||
"version": "v{{version}}",
|
||||
"buildDate": "Дата на компилация: {{date}}"
|
||||
},
|
||||
"deviceName": {
|
||||
"title": "Име на устройството",
|
||||
"changeName": "Промяна на името на устройството",
|
||||
"placeholder": "Въвеждане на име на устройството"
|
||||
},
|
||||
"editDeviceName": "Редактиране на името на устройство"
|
||||
}
|
||||
},
|
||||
"batteryStatus": {
|
||||
"charging": "{{level}}% зареждане",
|
||||
"pluggedIn": "Включен в ел. мрежа",
|
||||
"title": "Батерия"
|
||||
},
|
||||
"search": {
|
||||
"nodes": "Търсене на възли...",
|
||||
"channels": "Търсене на канали...",
|
||||
"commandPalette": "Търсене на команди..."
|
||||
},
|
||||
"toast": {
|
||||
"positionRequestSent": {
|
||||
"title": "Заявката за позиция е изпратена."
|
||||
},
|
||||
"requestingPosition": {
|
||||
"title": "Запитване за позиция, моля изчакайте..."
|
||||
},
|
||||
"sendingTraceroute": {
|
||||
"title": "Sending Traceroute, please wait..."
|
||||
},
|
||||
"tracerouteSent": {
|
||||
"title": "Traceroute sent."
|
||||
},
|
||||
"savedChannel": {
|
||||
"title": "Запазен канал: {{channelName}}"
|
||||
},
|
||||
"messages": {
|
||||
"pkiEncryption": {
|
||||
"title": "Чатът използва PKI криптиране."
|
||||
},
|
||||
"pskEncryption": {
|
||||
"title": "Чатът използва PSK криптиране."
|
||||
}
|
||||
},
|
||||
"configSaveError": {
|
||||
"title": "Грешка при запазване на конфигурацията",
|
||||
"description": "Възникна грешка при запазване на конфигурацията."
|
||||
},
|
||||
"validationError": {
|
||||
"title": "Съществуват грешки в конфигурацията",
|
||||
"description": "Моля, коригирайте грешките в конфигурацията, преди да я запазите."
|
||||
},
|
||||
"saveSuccess": {
|
||||
"title": "Запазване на конфигурацията",
|
||||
"description": "Промяната в конфигурацията {{case}} е запазена."
|
||||
},
|
||||
"favoriteNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} любими.",
|
||||
"action": {
|
||||
"added": "Добавен",
|
||||
"removed": "Премахнат",
|
||||
"to": "в",
|
||||
"from": "от"
|
||||
}
|
||||
},
|
||||
"ignoreNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} списък с игнорирани",
|
||||
"action": {
|
||||
"added": "Добавен",
|
||||
"removed": "Премахнат",
|
||||
"to": "в",
|
||||
"from": "от"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"copied": {
|
||||
"label": "Копирано!"
|
||||
},
|
||||
"copyToClipboard": {
|
||||
"label": "Копиране в клипборда"
|
||||
},
|
||||
"hidePassword": {
|
||||
"label": "Скриване на паролата"
|
||||
},
|
||||
"showPassword": {
|
||||
"label": "Показване на паролата"
|
||||
},
|
||||
"deliveryStatus": {
|
||||
"delivered": "Доставено",
|
||||
"failed": "Неуспешна доставка",
|
||||
"waiting": "Изчакване",
|
||||
"unknown": "Неизвестно"
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"label": "General"
|
||||
},
|
||||
"hardware": {
|
||||
"label": "Хардуер"
|
||||
},
|
||||
"metrics": {
|
||||
"label": "Метрики"
|
||||
},
|
||||
"role": {
|
||||
"label": "Роля"
|
||||
},
|
||||
"filter": {
|
||||
"label": "Филтър"
|
||||
},
|
||||
"advanced": {
|
||||
"label": "Разширени"
|
||||
},
|
||||
"clearInput": {
|
||||
"label": "Clear input"
|
||||
},
|
||||
"resetFilters": {
|
||||
"label": "Нулиране на филтрите"
|
||||
},
|
||||
"nodeName": {
|
||||
"label": "Име/номер на възел",
|
||||
"placeholder": "Meshtastic 1234"
|
||||
},
|
||||
"airtimeUtilization": {
|
||||
"label": "Използване на ефира (%)"
|
||||
},
|
||||
"batteryLevel": {
|
||||
"label": "Ниво на батерията (%)",
|
||||
"labelText": "Ниво на батерията (%): {{value}}"
|
||||
},
|
||||
"batteryVoltage": {
|
||||
"label": "Напрежение на батерията (V)",
|
||||
"title": "Напрежение"
|
||||
},
|
||||
"channelUtilization": {
|
||||
"label": "Използване на канала (%)"
|
||||
},
|
||||
"hops": {
|
||||
"direct": "Директно",
|
||||
"label": "Брой хопове",
|
||||
"text": "Брой хопове: {{value}}"
|
||||
},
|
||||
"lastHeard": {
|
||||
"label": "Последно чут",
|
||||
"labelText": "Последно чут: {{value}}",
|
||||
"nowLabel": "Сега"
|
||||
},
|
||||
"snr": {
|
||||
"label": "SNR (db)"
|
||||
},
|
||||
"favorites": {
|
||||
"label": "Любими"
|
||||
},
|
||||
"hide": {
|
||||
"label": "Скриване"
|
||||
},
|
||||
"showOnly": {
|
||||
"label": "Показване само"
|
||||
},
|
||||
"viaMqtt": {
|
||||
"label": "Свързан чрез MQTT"
|
||||
},
|
||||
"hopsUnknown": {
|
||||
"label": "Неизвестен брой хопове"
|
||||
},
|
||||
"showUnheard": {
|
||||
"label": "Никога не е чуван"
|
||||
},
|
||||
"language": {
|
||||
"label": "Език",
|
||||
"changeLanguage": "Промяна на езика"
|
||||
},
|
||||
"theme": {
|
||||
"dark": "Тъмна",
|
||||
"light": "Светла",
|
||||
"system": "Автоматично",
|
||||
"changeTheme": "Промяна на цветовата схема"
|
||||
},
|
||||
"errorPage": {
|
||||
"title": "Това е малко смущаващо...",
|
||||
"description1": "Наистина съжаляваме, но възникна грешка в web клиента, която доведе до срив. <br /> Това не би трябвало да се случва и работим усилено, за да го поправим.",
|
||||
"description2": "Най-добрият начин да предотвратите това да се случи отново с вас или с някой друг е да ни съобщите за проблема.",
|
||||
"reportInstructions": "Моля, включете следната информация в доклада си:",
|
||||
"reportSteps": {
|
||||
"step1": "Какво правехте, когато възникна грешката",
|
||||
"step2": "Какво очаквахте да се случи",
|
||||
"step3": "Какво всъщност се случи",
|
||||
"step4": "Всяка друга подходяща информация"
|
||||
},
|
||||
"reportLink": "Можете да съобщите за проблема в нашия <0>GitHub</0>",
|
||||
"connectionsLink": "Връщане към <0>таблото</0>",
|
||||
"detailsSummary": "Подробности за грешката",
|
||||
"errorMessageLabel": "Съобщение за грешка:",
|
||||
"stackTraceLabel": "Stack trace:",
|
||||
"fallbackError": "{{error}}"
|
||||
},
|
||||
"footer": {
|
||||
"text": "Задвижвано от <0>▲ Vercel</0> | Meshtastic® е регистрирана търговска марка на Meshtastic LLC. | <1>Правна информация</1>",
|
||||
"commitSha": "Commit SHA: {{sha}}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,229 +1,228 @@
|
||||
{
|
||||
"navigation": {
|
||||
"title": "Navigation",
|
||||
"messages": "Zprávy",
|
||||
"map": "Mapa",
|
||||
"settings": "Nastavení",
|
||||
"channels": "Kanály",
|
||||
"radioConfig": "Radio Config",
|
||||
"deviceConfig": "Nastavení zařízení",
|
||||
"moduleConfig": "Module Config",
|
||||
"nodes": "Uzly"
|
||||
},
|
||||
"app": {
|
||||
"title": "Meshtastic",
|
||||
"logo": "Meshtastic Logo"
|
||||
},
|
||||
"sidebar": {
|
||||
"collapseToggle": {
|
||||
"button": {
|
||||
"open": "Open sidebar",
|
||||
"close": "Close sidebar"
|
||||
}
|
||||
},
|
||||
"deviceInfo": {
|
||||
"volts": "{{voltage}} volts",
|
||||
"firmware": {
|
||||
"title": "Firmware",
|
||||
"version": "v{{version}}",
|
||||
"buildDate": "Build date: {{date}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"batteryStatus": {
|
||||
"charging": "{{level}}% charging",
|
||||
"pluggedIn": "Plugged in",
|
||||
"title": "Baterie"
|
||||
},
|
||||
"search": {
|
||||
"nodes": "Search nodes...",
|
||||
"channels": "Search channels...",
|
||||
"commandPalette": "Search commands..."
|
||||
},
|
||||
"toast": {
|
||||
"positionRequestSent": {
|
||||
"title": "Position request sent."
|
||||
},
|
||||
"requestingPosition": {
|
||||
"title": "Requesting position, please wait..."
|
||||
},
|
||||
"sendingTraceroute": {
|
||||
"title": "Sending Traceroute, please wait..."
|
||||
},
|
||||
"tracerouteSent": {
|
||||
"title": "Traceroute sent."
|
||||
},
|
||||
"savedChannel": {
|
||||
"title": "Saved Channel: {{channelName}}"
|
||||
},
|
||||
"messages": {
|
||||
"pkiEncryption": {
|
||||
"title": "Chat is using PKI encryption."
|
||||
},
|
||||
"pskEncryption": {
|
||||
"title": "Chat is using PSK encryption."
|
||||
}
|
||||
},
|
||||
"configSaveError": {
|
||||
"title": "Error Saving Config",
|
||||
"description": "An error occurred while saving the configuration."
|
||||
},
|
||||
"validationError": {
|
||||
"title": "Config Errors Exist",
|
||||
"description": "Please fix the configuration errors before saving."
|
||||
},
|
||||
"saveSuccess": {
|
||||
"title": "Saving Config",
|
||||
"description": "The configuration change {{case}} has been saved."
|
||||
},
|
||||
"saveAllSuccess": {
|
||||
"title": "Saved",
|
||||
"description": "All configuration changes have been saved."
|
||||
},
|
||||
"favoriteNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} favorites.",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
},
|
||||
"ignoreNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} ignore list",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"copied": {
|
||||
"label": "Copied!"
|
||||
},
|
||||
"copyToClipboard": {
|
||||
"label": "Copy to clipboard"
|
||||
},
|
||||
"hidePassword": {
|
||||
"label": "Skrýt heslo"
|
||||
},
|
||||
"showPassword": {
|
||||
"label": "Zobrazit heslo"
|
||||
},
|
||||
"deliveryStatus": {
|
||||
"delivered": "Delivered",
|
||||
"failed": "Delivery Failed",
|
||||
"waiting": "Waiting",
|
||||
"unknown": "Unknown"
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"label": "General"
|
||||
},
|
||||
"hardware": {
|
||||
"label": "Hardware"
|
||||
},
|
||||
"metrics": {
|
||||
"label": "Metriky"
|
||||
},
|
||||
"role": {
|
||||
"label": "Role"
|
||||
},
|
||||
"filter": {
|
||||
"label": "Filtr"
|
||||
},
|
||||
"advanced": {
|
||||
"label": "Advanced"
|
||||
},
|
||||
"clearInput": {
|
||||
"label": "Clear input"
|
||||
},
|
||||
"resetFilters": {
|
||||
"label": "Reset Filters"
|
||||
},
|
||||
"nodeName": {
|
||||
"label": "Node name/number",
|
||||
"placeholder": "Meshtastic 1234"
|
||||
},
|
||||
"airtimeUtilization": {
|
||||
"label": "Airtime Utilization (%)",
|
||||
"short": "Airtime Util. (%)"
|
||||
},
|
||||
"batteryLevel": {
|
||||
"label": "Battery level (%)",
|
||||
"labelText": "Battery level (%): {{value}}"
|
||||
},
|
||||
"batteryVoltage": {
|
||||
"label": "Battery voltage (V)",
|
||||
"title": "Napětí"
|
||||
},
|
||||
"channelUtilization": {
|
||||
"label": "Channel Utilization (%)",
|
||||
"short": "Channel Util. (%)"
|
||||
},
|
||||
"hops": {
|
||||
"direct": "Přímý",
|
||||
"label": "Number of hops",
|
||||
"text": "Number of hops: {{value}}"
|
||||
},
|
||||
"lastHeard": {
|
||||
"label": "Naposledy slyšen",
|
||||
"labelText": "Last heard: {{value}}",
|
||||
"nowLabel": "Now"
|
||||
},
|
||||
"snr": {
|
||||
"label": "SNR (db)"
|
||||
},
|
||||
"favorites": {
|
||||
"label": "Favorites"
|
||||
},
|
||||
"hide": {
|
||||
"label": "Hide"
|
||||
},
|
||||
"showOnly": {
|
||||
"label": "Show Only"
|
||||
},
|
||||
"viaMqtt": {
|
||||
"label": "Connected via MQTT"
|
||||
},
|
||||
"hopsUnknown": {
|
||||
"label": "Unknown number of hops"
|
||||
},
|
||||
"showUnheard": {
|
||||
"label": "Never heard"
|
||||
},
|
||||
"language": {
|
||||
"label": "Jazyk",
|
||||
"changeLanguage": "Change Language"
|
||||
},
|
||||
"theme": {
|
||||
"dark": "Tmavý",
|
||||
"light": "Světlý",
|
||||
"system": "Automatic",
|
||||
"changeTheme": "Change Color Scheme"
|
||||
},
|
||||
"errorPage": {
|
||||
"title": "This is a little embarrassing...",
|
||||
"description1": "We are really sorry but an error occurred in the web client that caused it to crash. <br /> This is not supposed to happen, and we are working hard to fix it.",
|
||||
"description2": "The best way to prevent this from happening again to you or anyone else is to report the issue to us.",
|
||||
"reportInstructions": "Please include the following information in your report:",
|
||||
"reportSteps": {
|
||||
"step1": "What you were doing when the error occurred",
|
||||
"step2": "What you expected to happen",
|
||||
"step3": "What actually happened",
|
||||
"step4": "Any other relevant information"
|
||||
},
|
||||
"reportLink": "You can report the issue to our <0>GitHub</0>",
|
||||
"dashboardLink": "Return to the <0>dashboard</0>",
|
||||
"detailsSummary": "Error Details",
|
||||
"errorMessageLabel": "Error message:",
|
||||
"stackTraceLabel": "Stack trace:",
|
||||
"fallbackError": "{{error}}"
|
||||
},
|
||||
"footer": {
|
||||
"text": "Powered by <0>▲ Vercel</0> | Meshtastic® is a registered trademark of Meshtastic LLC. | <1>Legal Information</1>",
|
||||
"commitSha": "Commit SHA: {{sha}}"
|
||||
}
|
||||
"navigation": {
|
||||
"title": "Navigation",
|
||||
"messages": "Zprávy",
|
||||
"map": "Mapa",
|
||||
"config": "Config",
|
||||
"radioConfig": "Radio Config",
|
||||
"moduleConfig": "Module Config",
|
||||
"channels": "Kanály",
|
||||
"nodes": "Uzly"
|
||||
},
|
||||
"app": {
|
||||
"title": "Meshtastic",
|
||||
"logo": "Meshtastic Logo"
|
||||
},
|
||||
"sidebar": {
|
||||
"collapseToggle": {
|
||||
"button": {
|
||||
"open": "Open sidebar",
|
||||
"close": "Close sidebar"
|
||||
}
|
||||
},
|
||||
"deviceInfo": {
|
||||
"volts": "{{voltage}} volts",
|
||||
"firmware": {
|
||||
"title": "Firmware",
|
||||
"version": "v{{version}}",
|
||||
"buildDate": "Build date: {{date}}"
|
||||
},
|
||||
"deviceName": {
|
||||
"title": "Device Name",
|
||||
"changeName": "Change Device Name",
|
||||
"placeholder": "Enter device name"
|
||||
},
|
||||
"editDeviceName": "Edit device name"
|
||||
}
|
||||
},
|
||||
"batteryStatus": {
|
||||
"charging": "{{level}}% charging",
|
||||
"pluggedIn": "Plugged in",
|
||||
"title": "Baterie"
|
||||
},
|
||||
"search": {
|
||||
"nodes": "Search nodes...",
|
||||
"channels": "Search channels...",
|
||||
"commandPalette": "Search commands..."
|
||||
},
|
||||
"toast": {
|
||||
"positionRequestSent": {
|
||||
"title": "Position request sent."
|
||||
},
|
||||
"requestingPosition": {
|
||||
"title": "Requesting position, please wait..."
|
||||
},
|
||||
"sendingTraceroute": {
|
||||
"title": "Sending Traceroute, please wait..."
|
||||
},
|
||||
"tracerouteSent": {
|
||||
"title": "Traceroute sent."
|
||||
},
|
||||
"savedChannel": {
|
||||
"title": "Saved Channel: {{channelName}}"
|
||||
},
|
||||
"messages": {
|
||||
"pkiEncryption": {
|
||||
"title": "Chat is using PKI encryption."
|
||||
},
|
||||
"pskEncryption": {
|
||||
"title": "Chat is using PSK encryption."
|
||||
}
|
||||
},
|
||||
"configSaveError": {
|
||||
"title": "Error Saving Config",
|
||||
"description": "An error occurred while saving the configuration."
|
||||
},
|
||||
"validationError": {
|
||||
"title": "Config Errors Exist",
|
||||
"description": "Please fix the configuration errors before saving."
|
||||
},
|
||||
"saveSuccess": {
|
||||
"title": "Saving Config",
|
||||
"description": "The configuration change {{case}} has been saved."
|
||||
},
|
||||
"favoriteNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} favorites.",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
},
|
||||
"ignoreNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} ignore list",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"copied": {
|
||||
"label": "Copied!"
|
||||
},
|
||||
"copyToClipboard": {
|
||||
"label": "Copy to clipboard"
|
||||
},
|
||||
"hidePassword": {
|
||||
"label": "Skrýt heslo"
|
||||
},
|
||||
"showPassword": {
|
||||
"label": "Zobrazit heslo"
|
||||
},
|
||||
"deliveryStatus": {
|
||||
"delivered": "Delivered",
|
||||
"failed": "Delivery Failed",
|
||||
"waiting": "Waiting",
|
||||
"unknown": "Unknown"
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"label": "General"
|
||||
},
|
||||
"hardware": {
|
||||
"label": "Hardware"
|
||||
},
|
||||
"metrics": {
|
||||
"label": "Metriky"
|
||||
},
|
||||
"role": {
|
||||
"label": "Role"
|
||||
},
|
||||
"filter": {
|
||||
"label": "Filtr"
|
||||
},
|
||||
"advanced": {
|
||||
"label": "Advanced"
|
||||
},
|
||||
"clearInput": {
|
||||
"label": "Clear input"
|
||||
},
|
||||
"resetFilters": {
|
||||
"label": "Reset Filters"
|
||||
},
|
||||
"nodeName": {
|
||||
"label": "Node name/number",
|
||||
"placeholder": "Meshtastic 1234"
|
||||
},
|
||||
"airtimeUtilization": {
|
||||
"label": "Airtime Utilization (%)"
|
||||
},
|
||||
"batteryLevel": {
|
||||
"label": "Battery level (%)",
|
||||
"labelText": "Battery level (%): {{value}}"
|
||||
},
|
||||
"batteryVoltage": {
|
||||
"label": "Battery voltage (V)",
|
||||
"title": "Napětí"
|
||||
},
|
||||
"channelUtilization": {
|
||||
"label": "Channel Utilization (%)"
|
||||
},
|
||||
"hops": {
|
||||
"direct": "Přímý",
|
||||
"label": "Number of hops",
|
||||
"text": "Number of hops: {{value}}"
|
||||
},
|
||||
"lastHeard": {
|
||||
"label": "Naposledy slyšen",
|
||||
"labelText": "Last heard: {{value}}",
|
||||
"nowLabel": "Now"
|
||||
},
|
||||
"snr": {
|
||||
"label": "SNR (db)"
|
||||
},
|
||||
"favorites": {
|
||||
"label": "Favorites"
|
||||
},
|
||||
"hide": {
|
||||
"label": "Hide"
|
||||
},
|
||||
"showOnly": {
|
||||
"label": "Show Only"
|
||||
},
|
||||
"viaMqtt": {
|
||||
"label": "Connected via MQTT"
|
||||
},
|
||||
"hopsUnknown": {
|
||||
"label": "Unknown number of hops"
|
||||
},
|
||||
"showUnheard": {
|
||||
"label": "Never heard"
|
||||
},
|
||||
"language": {
|
||||
"label": "Jazyk",
|
||||
"changeLanguage": "Change Language"
|
||||
},
|
||||
"theme": {
|
||||
"dark": "Tmavý",
|
||||
"light": "Světlý",
|
||||
"system": "Automatic",
|
||||
"changeTheme": "Change Color Scheme"
|
||||
},
|
||||
"errorPage": {
|
||||
"title": "This is a little embarrassing...",
|
||||
"description1": "We are really sorry but an error occurred in the web client that caused it to crash. <br /> This is not supposed to happen, and we are working hard to fix it.",
|
||||
"description2": "The best way to prevent this from happening again to you or anyone else is to report the issue to us.",
|
||||
"reportInstructions": "Please include the following information in your report:",
|
||||
"reportSteps": {
|
||||
"step1": "What you were doing when the error occurred",
|
||||
"step2": "What you expected to happen",
|
||||
"step3": "What actually happened",
|
||||
"step4": "Any other relevant information"
|
||||
},
|
||||
"reportLink": "You can report the issue to our <0>GitHub</0>",
|
||||
"connectionsLink": "Return to the <0>connections</0>",
|
||||
"detailsSummary": "Error Details",
|
||||
"errorMessageLabel": "Error message:",
|
||||
"stackTraceLabel": "Stack trace:",
|
||||
"fallbackError": "{{error}}"
|
||||
},
|
||||
"footer": {
|
||||
"text": "Powered by <0>▲ Vercel</0> | Meshtastic® is a registered trademark of Meshtastic LLC. | <1>Legal Information</1>",
|
||||
"commitSha": "Commit SHA: {{sha}}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
{
|
||||
"button": {
|
||||
"apply": "Apply",
|
||||
"addConnection": "Add Connection",
|
||||
"saveConnection": "Save connection",
|
||||
"backupKey": "Backup Key",
|
||||
"cancel": "Cancel",
|
||||
"connect": "Connect",
|
||||
"clearMessages": "Clear Messages",
|
||||
"close": "Close",
|
||||
"confirm": "Confirm",
|
||||
"delete": "Delete",
|
||||
"dismiss": "Dismiss",
|
||||
"download": "Download",
|
||||
"disconnect": "Disconnect",
|
||||
"export": "Export",
|
||||
"generate": "Generate",
|
||||
"regenerate": "Regenerate",
|
||||
@@ -21,7 +25,10 @@
|
||||
"requestNewKeys": "Request New Keys",
|
||||
"requestPosition": "Request Position",
|
||||
"reset": "Reset",
|
||||
"retry": "Retry",
|
||||
"save": "Save",
|
||||
"setDefault": "Set as default",
|
||||
"unsetDefault": "Unset default",
|
||||
"scanQr": "Scan QR Code",
|
||||
"traceRoute": "Trace Route",
|
||||
"submit": "Submit"
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"page": {
|
||||
"title": "Connect to a Meshtastic device",
|
||||
"description": "Add a device connection via HTTP, Bluetooth, or Serial. Your saved connections will be saved in your browser."
|
||||
},
|
||||
"connectionType_ble": "BLE",
|
||||
"connectionType_serial": "Serial",
|
||||
"connectionType_network": "Network",
|
||||
"deleteConnection": "Delete connection",
|
||||
"areYouSure": "This will remove {{name}}. You canot undo this action.",
|
||||
"moreActions": "More actions",
|
||||
"noConnections": {
|
||||
"title": "No connections yet.",
|
||||
"description": "Create your first connection. It will connect immediately and be saved for later."
|
||||
},
|
||||
"lastConnectedAt": "Last connected: {{date}}",
|
||||
"neverConnected": "Never connected",
|
||||
"toasts": {
|
||||
"connected": "Connected",
|
||||
"nowConnected": "{{name}} is now connected",
|
||||
"nowDisconnected": "{{name}} are now disconnecte",
|
||||
"disconnected": "Disconnected",
|
||||
"failed": "Failed to connect",
|
||||
"checkConnetion": "Check your device or settings and try again",
|
||||
"defaultSet": "Default set",
|
||||
"defaultConnection": "Default connection is now {{nameisconnected}}",
|
||||
"deleted": "Deleted",
|
||||
"deletedByName": "{{name}} was removed",
|
||||
"pickConnectionAgain": "Could not connect. You may need to reselect the device/port.",
|
||||
"added": "Connection added",
|
||||
"savedByName": "{{name}} saved.",
|
||||
"savedCantConnect": "The connection was saved but could not connect."
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"dashboard": {
|
||||
"title": "Connected Devices",
|
||||
"description": "Manage your connected Meshtastic devices.",
|
||||
"connectionType_ble": "BLE",
|
||||
"connectionType_serial": "Serial",
|
||||
"connectionType_network": "Network",
|
||||
"noDevicesTitle": "No devices connected",
|
||||
"noDevicesDescription": "Connect a new device to get started.",
|
||||
"button_newConnection": "New Connection"
|
||||
}
|
||||
}
|
||||
@@ -3,18 +3,6 @@
|
||||
"description": "This action will clear all message history. This cannot be undone. Are you sure you want to continue?",
|
||||
"title": "Clear All Messages"
|
||||
},
|
||||
"deviceName": {
|
||||
"description": "The Device will restart once the config is saved.",
|
||||
"longName": "Long Name",
|
||||
"shortName": "Short Name",
|
||||
"title": "Change Device Name",
|
||||
"validation": {
|
||||
"longNameMax": "Long name must not be more than 40 characters",
|
||||
"shortNameMax": "Short name must not be more than 4 characters",
|
||||
"longNameMin": "Long name must have at least 1 character",
|
||||
"shortNameMin": "Short name must have at least 1 character"
|
||||
}
|
||||
},
|
||||
"import": {
|
||||
"description": "Import a Channel Set from a Meshtastic URL. <br />Valid Meshtasic URLs start with \"<italic>https://meshtastic.org/e/...</italic>\"",
|
||||
"error": {
|
||||
@@ -41,49 +29,77 @@
|
||||
"description": "Are you sure you want to regenerate the pre-shared key?",
|
||||
"regenerate": "Regenerate"
|
||||
},
|
||||
"newDeviceDialog": {
|
||||
"title": "Connect New Device",
|
||||
"https": "https",
|
||||
"http": "http",
|
||||
"tabHttp": "HTTP",
|
||||
"tabBluetooth": "Bluetooth",
|
||||
"tabSerial": "Serial",
|
||||
|
||||
"useHttps": "Use HTTPS",
|
||||
"connecting": "Connecting...",
|
||||
"connect": "Connect",
|
||||
"connectionFailedAlert": {
|
||||
"title": "Connection Failed",
|
||||
"descriptionPrefix": "Could not connect to the device. ",
|
||||
"httpsHint": "If using HTTPS, you may need to accept a self-signed certificate first. ",
|
||||
"openLinkPrefix": "Please open ",
|
||||
"openLinkSuffix": " in a new tab",
|
||||
"acceptTlsWarningSuffix": ", accept any TLS warnings if prompted, then try again",
|
||||
"learnMoreLink": "Learn more"
|
||||
},
|
||||
"httpConnection": {
|
||||
"label": "IP Address/Hostname",
|
||||
"placeholder": "000.000.000.000 / meshtastic.local"
|
||||
},
|
||||
"serialConnection": {
|
||||
"noDevicesPaired": "No devices paired yet.",
|
||||
"newDeviceButton": "New device",
|
||||
"deviceIdentifier": "# {{index}} - {{vendorId}} - {{productId}}"
|
||||
},
|
||||
"bluetoothConnection": {
|
||||
"noDevicesPaired": "No devices paired yet.",
|
||||
"newDeviceButton": "New device",
|
||||
"connectionFailed": "Connection failed",
|
||||
"deviceDisconnected": "Device disconnected",
|
||||
"unknownDevice": "Unknown Device",
|
||||
"errorLoadingDevices": "Error loading devices",
|
||||
"unknownErrorLoadingDevices": "Unknown error loading devices"
|
||||
},
|
||||
"addConnection": {
|
||||
"title": "Add connection",
|
||||
"description": "Choose a connection type and fill in the details",
|
||||
"validation": {
|
||||
"requiresWebBluetooth": "This connection type requires <0>Web Bluetooth</0>. Please use a supported browser, like Chrome or Edge.",
|
||||
"requiresWebSerial": "This connection type requires <0>Web Serial</0>. Please use a supported browser, like Chrome or Edge.",
|
||||
"requiresSecureContext": "This application requires a <0>secure context</0>. Please connect using HTTPS or localhost.",
|
||||
"additionallyRequiresSecureContext": "Additionally, it requires a <0>secure context</0>. Please connect using HTTPS or localhost."
|
||||
},
|
||||
"bluetoothConnection": {
|
||||
"namePlaceholder": "My Bluetooth Node",
|
||||
"supported": {
|
||||
"title": "Web Bluetooth supported"
|
||||
},
|
||||
"notSupported": {
|
||||
"title": "Web Bluetooth not supported",
|
||||
"description": "Your browser or device does not support Web Bluetooth"
|
||||
},
|
||||
"short": "BT: {{deviceName}}",
|
||||
"long": "Bluetooth Device",
|
||||
"device": "Device",
|
||||
"selectDevice": "Select device",
|
||||
"selected": "Bluetooth device selected",
|
||||
"notSelected": "No device selected",
|
||||
"helperText": "Uses the Meshtastic Bluetooth service for discovery."
|
||||
},
|
||||
"serialConnection": {
|
||||
"namePlaceholder": "My Serial Node",
|
||||
"helperText": "Selecting a port grants permission so the app can open it to connect.",
|
||||
"supported": {
|
||||
"title": "Web Serial supported"
|
||||
},
|
||||
"notSupported": {
|
||||
"title": "Web Serial not supported",
|
||||
"description": "Your browser or device does not support Web Serial"
|
||||
},
|
||||
"portSelected": {
|
||||
"title": "Serial port selected",
|
||||
"description": "Port permissions granted."
|
||||
},
|
||||
"port": "Port",
|
||||
"selectPort": "Select port",
|
||||
"deviceName": "USB {{vendorId}}:{{productId}}",
|
||||
"notSelected": "No port selected"
|
||||
},
|
||||
"httpConnection": {
|
||||
"namePlaceholder": "My HTTP Node",
|
||||
"inputPlaceholder": "192.168.1.10 or meshtastic.local",
|
||||
"heading": "URL or IP",
|
||||
"useHttps": "Use HTTTPS",
|
||||
"invalidUrl": {
|
||||
"title": "Invalid URL",
|
||||
"description": "Please enter a valid HTTP or HTTPS URL."
|
||||
},
|
||||
"connectionTest": {
|
||||
"description": "Test the connetion before saving to verify the device is reachable.",
|
||||
"button": {
|
||||
"loading": "Testing...",
|
||||
"label": "Test connection"
|
||||
},
|
||||
"reachable": "Reachable",
|
||||
"notReachable": "Not reachable",
|
||||
"success": {
|
||||
"title": "Connection test successful",
|
||||
"description": "The device appears to be reachable."
|
||||
},
|
||||
"failure": {
|
||||
"title": "Connection test failed",
|
||||
"description": "Could not reach the device. Check the URL and try again."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"nodeDetails": {
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
"radioConfig": "Radio Config",
|
||||
"deviceConfig": "Device Config",
|
||||
"moduleConfig": "Module Config",
|
||||
"manageConnections": "Manage Connections",
|
||||
"nodes": "Nodes"
|
||||
},
|
||||
"app": {
|
||||
@@ -202,7 +203,7 @@
|
||||
"step4": "Any other relevant information"
|
||||
},
|
||||
"reportLink": "You can report the issue to our <0>GitHub</0>",
|
||||
"dashboardLink": "Return to the <0>dashboard</0>",
|
||||
"connectionsLink": "Return to the <0>connections</0>",
|
||||
"detailsSummary": "Error Details",
|
||||
"errorMessageLabel": "Error message:",
|
||||
"stackTraceLabel": "Stack trace:",
|
||||
|
||||
@@ -1,229 +1,228 @@
|
||||
{
|
||||
"navigation": {
|
||||
"title": "Navigation",
|
||||
"messages": "消息",
|
||||
"map": "地图",
|
||||
"settings": "设置",
|
||||
"channels": "频道",
|
||||
"radioConfig": "Radio Config",
|
||||
"deviceConfig": "设备配置",
|
||||
"moduleConfig": "Module Config",
|
||||
"nodes": "节点"
|
||||
},
|
||||
"app": {
|
||||
"title": "Meshtastic",
|
||||
"logo": "Meshtastic Logo"
|
||||
},
|
||||
"sidebar": {
|
||||
"collapseToggle": {
|
||||
"button": {
|
||||
"open": "Open sidebar",
|
||||
"close": "Close sidebar"
|
||||
}
|
||||
},
|
||||
"deviceInfo": {
|
||||
"volts": "{{voltage}} volts",
|
||||
"firmware": {
|
||||
"title": "固件",
|
||||
"version": "v{{version}}",
|
||||
"buildDate": "Build date: {{date}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"batteryStatus": {
|
||||
"charging": "{{level}}% charging",
|
||||
"pluggedIn": "Plugged in",
|
||||
"title": "电池"
|
||||
},
|
||||
"search": {
|
||||
"nodes": "Search nodes...",
|
||||
"channels": "Search channels...",
|
||||
"commandPalette": "Search commands..."
|
||||
},
|
||||
"toast": {
|
||||
"positionRequestSent": {
|
||||
"title": "Position request sent."
|
||||
},
|
||||
"requestingPosition": {
|
||||
"title": "Requesting position, please wait..."
|
||||
},
|
||||
"sendingTraceroute": {
|
||||
"title": "Sending Traceroute, please wait..."
|
||||
},
|
||||
"tracerouteSent": {
|
||||
"title": "Traceroute sent."
|
||||
},
|
||||
"savedChannel": {
|
||||
"title": "Saved Channel: {{channelName}}"
|
||||
},
|
||||
"messages": {
|
||||
"pkiEncryption": {
|
||||
"title": "Chat is using PKI encryption."
|
||||
},
|
||||
"pskEncryption": {
|
||||
"title": "Chat is using PSK encryption."
|
||||
}
|
||||
},
|
||||
"configSaveError": {
|
||||
"title": "Error Saving Config",
|
||||
"description": "An error occurred while saving the configuration."
|
||||
},
|
||||
"validationError": {
|
||||
"title": "Config Errors Exist",
|
||||
"description": "Please fix the configuration errors before saving."
|
||||
},
|
||||
"saveSuccess": {
|
||||
"title": "Saving Config",
|
||||
"description": "The configuration change {{case}} has been saved."
|
||||
},
|
||||
"saveAllSuccess": {
|
||||
"title": "Saved",
|
||||
"description": "All configuration changes have been saved."
|
||||
},
|
||||
"favoriteNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} favorites.",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
},
|
||||
"ignoreNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} ignore list",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"copied": {
|
||||
"label": "Copied!"
|
||||
},
|
||||
"copyToClipboard": {
|
||||
"label": "Copy to clipboard"
|
||||
},
|
||||
"hidePassword": {
|
||||
"label": "隐藏密码"
|
||||
},
|
||||
"showPassword": {
|
||||
"label": "显示密码"
|
||||
},
|
||||
"deliveryStatus": {
|
||||
"delivered": "Delivered",
|
||||
"failed": "Delivery Failed",
|
||||
"waiting": "等待中...",
|
||||
"unknown": "未知"
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"label": "General"
|
||||
},
|
||||
"hardware": {
|
||||
"label": "硬件"
|
||||
},
|
||||
"metrics": {
|
||||
"label": "Metrics"
|
||||
},
|
||||
"role": {
|
||||
"label": "角色"
|
||||
},
|
||||
"filter": {
|
||||
"label": "筛选器csvfganw"
|
||||
},
|
||||
"advanced": {
|
||||
"label": "高级"
|
||||
},
|
||||
"clearInput": {
|
||||
"label": "Clear input"
|
||||
},
|
||||
"resetFilters": {
|
||||
"label": "Reset Filters"
|
||||
},
|
||||
"nodeName": {
|
||||
"label": "Node name/number",
|
||||
"placeholder": "Meshtastic 1234"
|
||||
},
|
||||
"airtimeUtilization": {
|
||||
"label": "Airtime Utilization (%)",
|
||||
"short": "Airtime Util. (%)"
|
||||
},
|
||||
"batteryLevel": {
|
||||
"label": "Battery level (%)",
|
||||
"labelText": "Battery level (%): {{value}}"
|
||||
},
|
||||
"batteryVoltage": {
|
||||
"label": "Battery voltage (V)",
|
||||
"title": "电压"
|
||||
},
|
||||
"channelUtilization": {
|
||||
"label": "Channel Utilization (%)",
|
||||
"short": "Channel Util. (%)"
|
||||
},
|
||||
"hops": {
|
||||
"direct": "直频",
|
||||
"label": "Number of hops",
|
||||
"text": "Number of hops: {{value}}"
|
||||
},
|
||||
"lastHeard": {
|
||||
"label": "最后听到",
|
||||
"labelText": "Last heard: {{value}}",
|
||||
"nowLabel": "Now"
|
||||
},
|
||||
"snr": {
|
||||
"label": "SNR (db)"
|
||||
},
|
||||
"favorites": {
|
||||
"label": "Favorites"
|
||||
},
|
||||
"hide": {
|
||||
"label": "Hide"
|
||||
},
|
||||
"showOnly": {
|
||||
"label": "Show Only"
|
||||
},
|
||||
"viaMqtt": {
|
||||
"label": "Connected via MQTT"
|
||||
},
|
||||
"hopsUnknown": {
|
||||
"label": "Unknown number of hops"
|
||||
},
|
||||
"showUnheard": {
|
||||
"label": "Never heard"
|
||||
},
|
||||
"language": {
|
||||
"label": "语言",
|
||||
"changeLanguage": "Change Language"
|
||||
},
|
||||
"theme": {
|
||||
"dark": "深色",
|
||||
"light": "浅色",
|
||||
"system": "Automatic",
|
||||
"changeTheme": "Change Color Scheme"
|
||||
},
|
||||
"errorPage": {
|
||||
"title": "This is a little embarrassing...",
|
||||
"description1": "We are really sorry but an error occurred in the web client that caused it to crash. <br /> This is not supposed to happen, and we are working hard to fix it.",
|
||||
"description2": "The best way to prevent this from happening again to you or anyone else is to report the issue to us.",
|
||||
"reportInstructions": "Please include the following information in your report:",
|
||||
"reportSteps": {
|
||||
"step1": "What you were doing when the error occurred",
|
||||
"step2": "What you expected to happen",
|
||||
"step3": "What actually happened",
|
||||
"step4": "Any other relevant information"
|
||||
},
|
||||
"reportLink": "You can report the issue to our <0>GitHub</0>",
|
||||
"dashboardLink": "Return to the <0>dashboard</0>",
|
||||
"detailsSummary": "Error Details",
|
||||
"errorMessageLabel": "Error message:",
|
||||
"stackTraceLabel": "Stack trace:",
|
||||
"fallbackError": "{{error}}"
|
||||
},
|
||||
"footer": {
|
||||
"text": "Powered by <0>▲ Vercel</0> | Meshtastic® is a registered trademark of Meshtastic LLC. | <1>Legal Information</1>",
|
||||
"commitSha": "Commit SHA: {{sha}}"
|
||||
}
|
||||
"navigation": {
|
||||
"title": "Navigation",
|
||||
"messages": "消息",
|
||||
"map": "地图",
|
||||
"config": "配置",
|
||||
"radioConfig": "Radio Config",
|
||||
"moduleConfig": "Module Config",
|
||||
"channels": "频道",
|
||||
"nodes": "节点"
|
||||
},
|
||||
"app": {
|
||||
"title": "Meshtastic",
|
||||
"logo": "Meshtastic Logo"
|
||||
},
|
||||
"sidebar": {
|
||||
"collapseToggle": {
|
||||
"button": {
|
||||
"open": "Open sidebar",
|
||||
"close": "Close sidebar"
|
||||
}
|
||||
},
|
||||
"deviceInfo": {
|
||||
"volts": "{{voltage}} volts",
|
||||
"firmware": {
|
||||
"title": "固件",
|
||||
"version": "v{{version}}",
|
||||
"buildDate": "Build date: {{date}}"
|
||||
},
|
||||
"deviceName": {
|
||||
"title": "Device Name",
|
||||
"changeName": "Change Device Name",
|
||||
"placeholder": "Enter device name"
|
||||
},
|
||||
"editDeviceName": "Edit device name"
|
||||
}
|
||||
},
|
||||
"batteryStatus": {
|
||||
"charging": "{{level}}% charging",
|
||||
"pluggedIn": "Plugged in",
|
||||
"title": "电池"
|
||||
},
|
||||
"search": {
|
||||
"nodes": "Search nodes...",
|
||||
"channels": "Search channels...",
|
||||
"commandPalette": "Search commands..."
|
||||
},
|
||||
"toast": {
|
||||
"positionRequestSent": {
|
||||
"title": "Position request sent."
|
||||
},
|
||||
"requestingPosition": {
|
||||
"title": "Requesting position, please wait..."
|
||||
},
|
||||
"sendingTraceroute": {
|
||||
"title": "Sending Traceroute, please wait..."
|
||||
},
|
||||
"tracerouteSent": {
|
||||
"title": "Traceroute sent."
|
||||
},
|
||||
"savedChannel": {
|
||||
"title": "Saved Channel: {{channelName}}"
|
||||
},
|
||||
"messages": {
|
||||
"pkiEncryption": {
|
||||
"title": "Chat is using PKI encryption."
|
||||
},
|
||||
"pskEncryption": {
|
||||
"title": "Chat is using PSK encryption."
|
||||
}
|
||||
},
|
||||
"configSaveError": {
|
||||
"title": "Error Saving Config",
|
||||
"description": "An error occurred while saving the configuration."
|
||||
},
|
||||
"validationError": {
|
||||
"title": "Config Errors Exist",
|
||||
"description": "Please fix the configuration errors before saving."
|
||||
},
|
||||
"saveSuccess": {
|
||||
"title": "Saving Config",
|
||||
"description": "The configuration change {{case}} has been saved."
|
||||
},
|
||||
"favoriteNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} favorites.",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
},
|
||||
"ignoreNode": {
|
||||
"title": "{{action}} {{nodeName}} {{direction}} ignore list",
|
||||
"action": {
|
||||
"added": "Added",
|
||||
"removed": "Removed",
|
||||
"to": "to",
|
||||
"from": "from"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"copied": {
|
||||
"label": "Copied!"
|
||||
},
|
||||
"copyToClipboard": {
|
||||
"label": "Copy to clipboard"
|
||||
},
|
||||
"hidePassword": {
|
||||
"label": "隐藏密码"
|
||||
},
|
||||
"showPassword": {
|
||||
"label": "显示密码"
|
||||
},
|
||||
"deliveryStatus": {
|
||||
"delivered": "Delivered",
|
||||
"failed": "Delivery Failed",
|
||||
"waiting": "等待中...",
|
||||
"unknown": "未知"
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"label": "General"
|
||||
},
|
||||
"hardware": {
|
||||
"label": "硬件"
|
||||
},
|
||||
"metrics": {
|
||||
"label": "Metrics"
|
||||
},
|
||||
"role": {
|
||||
"label": "角色"
|
||||
},
|
||||
"filter": {
|
||||
"label": "筛选器csvfganw"
|
||||
},
|
||||
"advanced": {
|
||||
"label": "高级"
|
||||
},
|
||||
"clearInput": {
|
||||
"label": "Clear input"
|
||||
},
|
||||
"resetFilters": {
|
||||
"label": "Reset Filters"
|
||||
},
|
||||
"nodeName": {
|
||||
"label": "Node name/number",
|
||||
"placeholder": "Meshtastic 1234"
|
||||
},
|
||||
"airtimeUtilization": {
|
||||
"label": "Airtime Utilization (%)"
|
||||
},
|
||||
"batteryLevel": {
|
||||
"label": "Battery level (%)",
|
||||
"labelText": "Battery level (%): {{value}}"
|
||||
},
|
||||
"batteryVoltage": {
|
||||
"label": "Battery voltage (V)",
|
||||
"title": "电压"
|
||||
},
|
||||
"channelUtilization": {
|
||||
"label": "Channel Utilization (%)"
|
||||
},
|
||||
"hops": {
|
||||
"direct": "直频",
|
||||
"label": "Number of hops",
|
||||
"text": "Number of hops: {{value}}"
|
||||
},
|
||||
"lastHeard": {
|
||||
"label": "最后听到",
|
||||
"labelText": "Last heard: {{value}}",
|
||||
"nowLabel": "Now"
|
||||
},
|
||||
"snr": {
|
||||
"label": "SNR (db)"
|
||||
},
|
||||
"favorites": {
|
||||
"label": "Favorites"
|
||||
},
|
||||
"hide": {
|
||||
"label": "Hide"
|
||||
},
|
||||
"showOnly": {
|
||||
"label": "Show Only"
|
||||
},
|
||||
"viaMqtt": {
|
||||
"label": "Connected via MQTT"
|
||||
},
|
||||
"hopsUnknown": {
|
||||
"label": "Unknown number of hops"
|
||||
},
|
||||
"showUnheard": {
|
||||
"label": "Never heard"
|
||||
},
|
||||
"language": {
|
||||
"label": "语言",
|
||||
"changeLanguage": "Change Language"
|
||||
},
|
||||
"theme": {
|
||||
"dark": "深色",
|
||||
"light": "浅色",
|
||||
"system": "Automatic",
|
||||
"changeTheme": "Change Color Scheme"
|
||||
},
|
||||
"errorPage": {
|
||||
"title": "This is a little embarrassing...",
|
||||
"description1": "We are really sorry but an error occurred in the web client that caused it to crash. <br /> This is not supposed to happen, and we are working hard to fix it.",
|
||||
"description2": "The best way to prevent this from happening again to you or anyone else is to report the issue to us.",
|
||||
"reportInstructions": "Please include the following information in your report:",
|
||||
"reportSteps": {
|
||||
"step1": "What you were doing when the error occurred",
|
||||
"step2": "What you expected to happen",
|
||||
"step3": "What actually happened",
|
||||
"step4": "Any other relevant information"
|
||||
},
|
||||
"reportLink": "You can report the issue to our <0>GitHub</0>",
|
||||
"connectionsLink": "Return to the <0>connections</0>",
|
||||
"detailsSummary": "Error Details",
|
||||
"errorMessageLabel": "Error message:",
|
||||
"stackTraceLabel": "Stack trace:",
|
||||
"fallbackError": "{{error}}"
|
||||
},
|
||||
"footer": {
|
||||
"text": "Powered by <0>▲ Vercel</0> | Meshtastic® is a registered trademark of Meshtastic LLC. | <1>Legal Information</1>",
|
||||
"commitSha": "Commit SHA: {{sha}}"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user