chore(i18n): improve ru-RU translation consistency (#1026)

Co-authored-by: Dan Ditomaso <dan.ditomaso@gmail.com>
This commit is contained in:
NIKOLYA PRODIGY
2026-03-16 21:35:36 -04:00
committed by GitHub
co-authored by Dan Ditomaso
parent 080cce1bf0
commit 6535c96e81
12 changed files with 879 additions and 908 deletions
@@ -3,69 +3,69 @@
"sectionLabel": "Каналы", "sectionLabel": "Каналы",
"channelName": "Канал: {{channelName}}", "channelName": "Канал: {{channelName}}",
"broadcastLabel": "Первичный", "broadcastLabel": "Первичный",
"channelIndex": "Кн {{index}}", "channelIndex": "Канал {{index}}",
"import": "Импортировать", "import": "Импорт",
"export": "Экспорт" "export": "Экспорт"
}, },
"validation": { "validation": {
"pskInvalid": "Введите правильный {{bits}} бит PSK." "pskInvalid": "Введите корректный PSK длиной {{bits}} бит."
}, },
"settings": { "settings": {
"label": "Настройки канала", "label": "Настройки канала",
"description": "Настройка шифрования, MQTT и пр" "description": "Шифрование, MQTT и прочие настройки"
}, },
"role": { "role": {
"label": "Роль", "label": "Роль",
"description": "Телеметрия устройства отправляется через ГЛАВНЫЙ. Только один ГЛАВНЫЙ разрешен", "description": "Телеметрия устройства отправляется по ПЕРВИЧНОМУ каналу. Допускается только один ПЕРВИЧНЫЙ канал",
"options": { "options": {
"primary": "ГЛАВНЫЙ", "primary": "ПЕРВИЧНЫЙ",
"disabled": "ЗАПРЕЩЕННЫЙ", "disabled": "ОТКЛЮЧЕН",
"secondary": "ВТОРИЧНЫЙ" "secondary": "ВТОРИЧНЫЙ"
} }
}, },
"psk": { "psk": {
"label": "Pre-Shared Ключ", "label": "Pre-Shared Key (PSK)",
"description": "Поддерживаемая длина PSK: 256-бит, 128-бит, 8-бит, Пустое (0-бит)", "description": "Поддерживаемая длина PSK: 256 бит, 128 бит, 8 бит, пустой (0 бит)",
"generate": "Сгенерировать" "generate": "Сгенерировать"
}, },
"name": { "name": {
"label": "Имя", "label": "Имя",
"description": "ЗАПРЕЩЕННЫЙ" "description": "Уникальное имя канала (до 12 байт); оставьте пустым для значения по умолчанию"
}, },
"uplinkEnabled": { "uplinkEnabled": {
"label": "Выгрузка Разрешена", "label": "Аплинк включён",
"description": "Отправлять сообщения из местного mesh в MQTT" "description": "Отправлять сообщения из локальной mesh-сети в MQTT"
}, },
"downlinkEnabled": { "downlinkEnabled": {
"label": "Загрузка Разрешена", "label": "Даунлинк включён",
"description": "Отправлять сообщения из MQTT в местный mesh" "description": "Отправлять сообщения из MQTT в локальную mesh-сеть"
}, },
"positionPrecision": { "positionPrecision": {
"label": "Позиция", "label": "Местоположение",
"description": "Точность позиции для отправки в канал. Можно запретить.", "description": "Точность местоположения для обмена в канале. Можно отключить.",
"options": { "options": {
"none": "Не делиться позицией", "none": "Не делиться местоположением",
"precise": "Точная позиция", "precise": "Точное местоположение",
"metric_km23": "Около 23 километров", "metric_km23": "В пределах 23 километров",
"metric_km12": "Около 12 километров", "metric_km12": "В пределах 12 километров",
"metric_km5_8": "Within 5.8 kilometers", "metric_km5_8": "В пределах 5,8 километра",
"metric_km2_9": "Within 2.9 kilometers", "metric_km2_9": "В пределах 2,9 километра",
"metric_km1_5": "Около 1,5 километров", "metric_km1_5": "В пределах 1,5 километра",
"metric_m700": "Около 700 метров", "metric_m700": "В пределах 700 метров",
"metric_m350": "Около 350 метров", "metric_m350": "В пределах 350 метров",
"metric_m200": "Около 200 метров", "metric_m200": "В пределах 200 метров",
"metric_m90": "Около 90 метров", "metric_m90": "В пределах 90 метров",
"metric_m50": "Около 50 метров", "metric_m50": "В пределах 50 метров",
"imperial_mi15": "Около 15 миль", "imperial_mi15": "В пределах 15 миль",
"imperial_mi7_3": "Within 7.3 miles", "imperial_mi7_3": "В пределах 7,3 мили",
"imperial_mi3_6": "Within 3.6 miles", "imperial_mi3_6": "В пределах 3,6 мили",
"imperial_mi1_8": "Within 1.8 miles", "imperial_mi1_8": "В пределах 1,8 мили",
"imperial_mi0_9": "Within 0.9 miles", "imperial_mi0_9": "В пределах 0,9 мили",
"imperial_mi0_5": "Within 0.5 miles", "imperial_mi0_5": "В пределах 0,5 мили",
"imperial_mi0_2": "Около 0,2 миль", "imperial_mi0_2": "В пределах 0,2 мили",
"imperial_ft600": "Около 600 футов", "imperial_ft600": "В пределах 600 футов",
"imperial_ft300": "Около 300 футов", "imperial_ft300": "В пределах 300 футов",
"imperial_ft150": "Около 150 футов" "imperial_ft150": "В пределах 150 футов"
} }
} }
} }
@@ -1,50 +1,50 @@
{ {
"emptyState": "Результаты не найдены..", "emptyState": "Результаты не найдены.",
"page": { "page": {
"title": "Меню" "title": "Командное меню"
}, },
"pinGroup": { "pinGroup": {
"label": "Закрепить меню" "label": "Закрепить группу команд"
}, },
"unpinGroup": { "unpinGroup": {
"label": "Открепить меню" "label": "Открепить группу команд"
}, },
"goto": { "goto": {
"label": "Перейти", "label": "Перейти",
"command": { "command": {
"messages": "Сообщения", "messages": "Сообщения",
"map": "Карта", "map": "Карта",
"config": "Настройка", "config": "Настройки",
"nodes": "Узлы" "nodes": "Ноды"
} }
}, },
"manage": { "manage": {
"label": "Управление", "label": "Управление",
"command": { "command": {
"switchNode": "Выбрать узел", "switchNode": "Переключить ноду",
"connectNewNode": "Подключить новый узел" "connectNewNode": "Подключить новую ноду"
} }
}, },
"contextual": { "contextual": {
"label": "Контекст", "label": "Контекстные",
"command": { "command": {
"qrCode": "QR Код", "qrCode": "QR-код",
"qrGenerator": "Генератор", "qrGenerator": "Генератор",
"qrImport": "Импортировать", "qrImport": "Импорт",
"scheduleShutdown": "Расписание выключения", "scheduleShutdown": "Запланировать выключение",
"scheduleReboot": "Перезагрузить устройство", "scheduleReboot": "Перезагрузить устройство",
"resetNodeDb": "Стереть базу данных узлов", "resetNodeDb": "Сбросить базу нод",
"dfuMode": "Войти в режим DFU", "dfuMode": "Войти в режим DFU",
"factoryResetDevice": "Сброс устройства к заводским установкам", "factoryResetDevice": "Сброс устройства к заводским настройкам",
"factoryResetConfig": "Factory Reset Config", "factoryResetConfig": "Сброс настроек к заводским",
"disconnect": "Отключиться" "disconnect": "Отключиться"
} }
}, },
"debug": { "debug": {
"label": "Debug", "label": "Отладка",
"command": { "command": {
"reconfigure": "Перенастроить", "reconfigure": "Перенастроить",
"clearAllStoredMessages": "Удалить все сохранённые сообщения", "clearAllStoredMessages": "Очистить все сохранённые сообщения",
"clearAllStores": "Очистить всё локальное хранилище" "clearAllStores": "Очистить всё локальное хранилище"
} }
} }
@@ -3,39 +3,39 @@
"apply": "Применить", "apply": "Применить",
"addConnection": "Добавить подключение", "addConnection": "Добавить подключение",
"saveConnection": "Сохранить подключение", "saveConnection": "Сохранить подключение",
"backupKey": "Бэкап ключа", "backupKey": "Резервная копия ключа",
"cancel": "Отмена", "cancel": "Отмена",
"connect": "Подключиться", "connect": "Подключиться",
"clearMessages": "Очистить сообщения", "clearMessages": "Очистить сообщения",
"close": "Закрыть", "close": "Закрыть",
"confirm": "Подтвердить", "confirm": "Подтвердить",
"delete": "Удалить", "delete": "Удалить",
"dismiss": "Отменить", "dismiss": "Скрыть",
"download": "Скачать", "download": "Скачать",
"disconnect": "Отключиться", "disconnect": "Отключиться",
"export": "Экспорт", "export": "Экспорт",
"generate": "Создать", "generate": "Сгенерировать",
"regenerate": "Создать снова", "regenerate": "Сгенерировать заново",
"import": "Импортировать", "import": "Импорт",
"message": "Сообщение", "message": "Сообщение",
"now": "Сейчас", "now": "Сейчас",
"ok": "Лады", "ok": "ОК",
"print": "Печать", "print": "Печать",
"remove": "Удалить", "remove": "Удалить",
"requestNewKeys": "Запрос нового ключа", "requestNewKeys": "Запросить новые ключи",
"requestPosition": "Запрос позиции", "requestPosition": "Запросить позицию",
"reset": "Сброс", "reset": "Сброс",
"retry": "Повторить", "retry": "Повторить",
"save": "Сохранить", "save": "Сохранить",
"setDefault": "Установить по умолчанию", "setDefault": "Сделать по умолчанию",
"unsetDefault": "Убрать умолчание", "unsetDefault": "Снять по умолчанию",
"scanQr": "Сканировать QR код", "scanQr": "Сканировать QR-код",
"traceRoute": "Отследить маршрут", "traceRoute": "Трассировка маршрута",
"submit": "Отправить" "submit": "Отправить"
}, },
"app": { "app": {
"title": "Meshtastic", "title": "Meshtastic",
"fullTitle": "Веб клиент Meshtastic" "fullTitle": "Веб-клиент Meshtastic"
}, },
"loading": "Загрузка...", "loading": "Загрузка...",
"unit": { "unit": {
@@ -43,123 +43,89 @@
"dbm": "dBm", "dbm": "dBm",
"hertz": "Гц", "hertz": "Гц",
"hop": { "hop": {
"one": "Прыжок", "one": "прыжок",
"plural": "Прыжков" "plural": "прыжков"
}, },
"hopsAway": { "hopsAway": {
"one": "{{count}} прыжок до", "one": "{{count}} прыжок от вас",
"plural": "{{count}} прыжков", "plural": "{{count}} прыжков от вас",
"unknown": "? прыжков" "unknown": "Неизвестно, сколько прыжков"
}, },
"megahertz": "МГц", "megahertz": "МГц",
"kilohertz": "кГц", "kilohertz": "кГц",
"raw": "raw", "raw": "сырое",
"meter": { "meter": { "one": "метр", "plural": "метров", "suffix": "м" },
"one": "Метр", "kilometer": { "one": "километр", "plural": "километров", "suffix": "км" },
"plural": "Метров", "minute": { "one": "минута", "plural": "минут" },
"suffix": "м" "hour": { "one": "час", "plural": "часов" },
},
"kilometer": {
"one": "Километр",
"plural": "Километров",
"suffix": "км"
},
"minute": {
"one": "Минута",
"plural": "Минут"
},
"hour": {
"one": "Час",
"plural": "Часов"
},
"millisecond": { "millisecond": {
"one": "Миллисекунда", "one": "миллисекунда",
"plural": "Миллисекунд", "plural": "миллисекунд",
"suffix": "мс" "suffix": "мс"
}, },
"second": { "second": { "one": "секунда", "plural": "секунд" },
"one": "Секунда",
"plural": "Секунд"
},
"day": { "day": {
"one": "День", "one": "день",
"plural": "Дней", "plural": "дней",
"today": "Сегодня", "today": "Сегодня",
"yesterday": "Вчера" "yesterday": "Вчера"
}, },
"month": { "month": { "one": "месяц", "plural": "месяцев" },
"one": "Месяц", "year": { "one": "год", "plural": "лет" },
"plural": "Месяцев" "snr": "SNR",
}, "volt": { "one": "вольт", "plural": "вольт", "suffix": "В" },
"year": { "record": { "one": "запись", "plural": "записей" },
"one": "Year", "degree": { "one": "градус", "plural": "градусов", "suffix": "°" }
"plural": "Years"
},
"snr": "Сигнал/шум",
"volt": {
"one": "Volt",
"plural": "Volts",
"suffix": "V"
},
"record": {
"one": "Records",
"plural": "Records"
},
"degree": {
"one": "Degree",
"plural": "Degrees",
"suffix": "°"
}
}, },
"security": { "security": {
"0bit": "Empty", "0bit": "Пусто",
"8bit": "8 bit", "8bit": "8 бит",
"128bit": "128 bit", "128bit": "128 бит",
"256bit": "256 bit" "256bit": "256 бит"
}, },
"unknown": { "unknown": {
"longName": "Неизвестно", "longName": "Неизвестно",
"shortName": "UNK", "shortName": "Н/Д",
"notAvailable": "N/A", "notAvailable": "Н/Д",
"num": "??" "num": "??"
}, },
"nodeUnknownPrefix": "!", "nodeUnknownPrefix": "!",
"unset": "UNSET", "unset": "НЕ ЗАДАНО",
"fallbackName": "Meshtastic {{last4}}", "fallbackName": "Meshtastic {{last4}}",
"node": "Node", "node": "Нода",
"formValidation": { "formValidation": {
"unsavedChanges": "Unsaved changes", "unsavedChanges": "Есть несохранённые изменения",
"tooBig": { "tooBig": {
"string": "Too long, expected less than or equal to {{maximum}} characters.", "string": "Слишком длинно, ожидается не более {{maximum}} символов.",
"number": "Too big, expected a number smaller than or equal to {{maximum}}.", "number": "Слишком большое значение, ожидается число не более {{maximum}}.",
"bytes": "Too big, expected less than or equal to {{params.maximum}} bytes." "bytes": "Слишком большое значение, ожидается не более {{params.maximum}} байт."
}, },
"tooSmall": { "tooSmall": {
"string": "Too short, expected more than or equal to {{minimum}} characters.", "string": "Слишком коротко, ожидается не менее {{minimum}} символов.",
"number": "Too small, expected a number larger than or equal to {{minimum}}." "number": "Слишком маленькое значение, ожидается число не менее {{minimum}}."
}, },
"invalidFormat": { "invalidFormat": {
"ipv4": "Invalid format, expected an IPv4 address.", "ipv4": "Неверный формат, ожидается IPv4-адрес.",
"key": "Invalid format, expected a Base64 encoded pre-shared key (PSK)." "key": "Неверный формат, ожидается Pre-Shared Key (PSK), закодированный в Base64."
}, },
"invalidType": { "invalidType": {
"number": "Invalid type, expected a number." "number": "Неверный тип, ожидается число."
}, },
"pskLength": { "pskLength": {
"0bit": "Key is required to be empty.", "0bit": "Ключ должен быть пустым.",
"8bit": "Key is required to be an 8 bit pre-shared key (PSK).", "8bit": "Ключ должен быть Pre-Shared Key (PSK) длиной 8 бит.",
"128bit": "Key is required to be a 128 bit pre-shared key (PSK).", "128bit": "Ключ должен быть Pre-Shared Key (PSK) длиной 128 бит.",
"256bit": "Key is required to be a 256 bit pre-shared key (PSK)." "256bit": "Ключ должен быть Pre-Shared Key (PSK) длиной 256 бит."
}, },
"required": { "required": {
"generic": "This field is required.", "generic": "Это поле обязательно.",
"managed": "At least one admin key is requred if the node is managed.", "managed": "Для управляемой ноды требуется хотя бы один ключ администратора.",
"key": "Key is required." "key": "Ключ обязателен."
}, },
"invalidOverrideFreq": { "invalidOverrideFreq": {
"number": "Invalid format, expected a value in the range 410-930 MHz or 0 (use default)." "number": "Неверный формат, ожидается значение в диапазоне 410–930 МГц или 0 (использовать по умолчанию)."
} }
}, },
"yes": "Yes", "yes": "Да",
"no": "No" "no": "Нет"
} }
+217 -205
View File
@@ -5,454 +5,466 @@
"tabChannels": "Каналы", "tabChannels": "Каналы",
"tabBluetooth": "Bluetooth", "tabBluetooth": "Bluetooth",
"tabDevice": "Устройство", "tabDevice": "Устройство",
"tabDisplay": "Дисплей", "tabDisplay": "Экран",
"tabLora": "LoRa", "tabLora": "LoRa",
"tabNetwork": "Сеть", "tabNetwork": "Сеть",
"tabPosition": "Местоположение", "tabPosition": "Позиция",
"tabPower": "Питание", "tabPower": "Питание",
"tabSecurity": "Безопасность" "tabSecurity": "Безопасность"
}, },
"sidebar": { "sidebar": {
"label": "Configuration" "label": "Конфигурация"
}, },
"device": { "device": {
"title": "Device Settings", "title": "Настройки устройства",
"description": "Settings for the device", "description": "Настройки устройства",
"buttonPin": { "buttonPin": {
"description": "Button pin override", "description": "Переопределение пина кнопки",
"label": "Button Pin" "label": "Пин кнопки"
}, },
"buzzerPin": { "buzzerPin": {
"description": "Buzzer pin override", "description": "Переопределение пина зуммера",
"label": "Buzzer Pin" "label": "Пин зуммера"
}, },
"disableTripleClick": { "disableTripleClick": {
"description": "Disable triple click", "description": "Отключить тройное нажатие",
"label": "Disable Triple Click" "label": "Отключить тройное нажатие"
}, },
"doubleTapAsButtonPress": { "doubleTapAsButtonPress": {
"description": "Treat double tap as button press", "description": "Считать двойной тап нажатием кнопки",
"label": "Double Tap as Button Press" "label": "Двойной тап как нажатие"
}, },
"ledHeartbeatDisabled": { "ledHeartbeatDisabled": {
"description": "Disable default blinking LED", "description": "Отключить стандартный мигающий LED",
"label": "LED Heartbeat Disabled" "label": "Отключить индикатор"
}, },
"nodeInfoBroadcastInterval": { "nodeInfoBroadcastInterval": {
"description": "How often to broadcast node info", "description": "Как часто рассылать информацию о ноде",
"label": "Интервал вещания передачи информации об узле" "label": "Интервал рассылки информации о ноде"
}, },
"posixTimezone": { "posixTimezone": {
"description": "The POSIX timezone string for the device", "description": "Строка POSIX часового пояса устройства",
"label": "Часовой пояс POSIX" "label": "Часовой пояс POSIX"
}, },
"rebroadcastMode": { "rebroadcastMode": {
"description": "How to handle rebroadcasting", "description": "Как обрабатывать ретрансляцию",
"label": "Режим ретрансляции" "label": "Режим ретрансляции"
}, },
"role": { "role": {
"description": "What role the device performs on the mesh", "description": "Какую роль устройство выполняет в mesh-сети",
"label": "Роль" "label": "Роль"
} }
}, },
"bluetooth": { "bluetooth": {
"title": "Bluetooth Settings", "title": "Настройки Bluetooth",
"description": "Settings for the Bluetooth module", "description": "Настройки модуля Bluetooth",
"note": "Note: Some devices (ESP32) cannot use both Bluetooth and WiFi at the same time.", "note": "Примечание: некоторые устройства (ESP32) не могут использовать Bluetooth и WiFi одновременно.",
"enabled": { "enabled": {
"description": "Enable or disable Bluetooth", "description": "Включить или отключить Bluetooth",
"label": "Включено" "label": "Включено"
}, },
"pairingMode": { "pairingMode": {
"description": "Pin selection behaviour.", "description": "Поведение выбора PIN.",
"label": "Режим сопряжения" "label": "Режим сопряжения"
}, },
"pin": { "pin": {
"description": "Pin to use when pairing", "description": "PIN для сопряжения",
"label": "Pin" "label": "PIN"
} }
}, },
"display": { "display": {
"description": "Settings for the device display", "description": "Настройки экрана устройства",
"title": "Display Settings", "title": "Настройки экрана",
"headingBold": { "headingBold": {
"description": "Bolden the heading text", "description": "Сделать заголовок жирным",
"label": "Выделять жирным заголовок" "label": "Жирный заголовок"
}, },
"carouselDelay": { "carouselDelay": {
"description": "How fast to cycle through windows", "description": "Скорость переключения окон",
"label": "Carousel Delay" "label": "Задержка карусели"
}, },
"compassNorthTop": { "compassNorthTop": {
"description": "Fix north to the top of compass", "description": "Зафиксировать север вверху компаса",
"label": "Compass North Top" "label": "Север сверху"
}, },
"displayMode": { "displayMode": {
"description": "Screen layout variant", "description": "Вариант компоновки экрана",
"label": "Display Mode" "label": "Режим отображения"
}, },
"displayUnits": { "displayUnits": {
"description": "Display metric or imperial units", "description": "Показывать метрические или имперские единицы",
"label": "Display Units" "label": "Единицы измерения"
}, },
"flipScreen": { "flipScreen": {
"description": "Flip display 180 degrees", "description": "Повернуть экран на 180 градусов",
"label": "Flip Screen" "label": "Повернуть экран"
}, },
"gpsDisplayUnits": { "gpsDisplayUnits": {
"description": "Coordinate display format", "description": "Формат отображения координат",
"label": "GPS Display Units" "label": "Единицы GPS"
}, },
"oledType": { "oledType": {
"description": "Type of OLED screen attached to the device", "description": "Тип OLED-экрана, подключённого к устройству",
"label": "OLED Type" "label": "Тип OLED"
}, },
"screenTimeout": { "screenTimeout": {
"description": "Turn off the display after this long", "description": "Выключать экран через это время",
"label": "Screen Timeout" "label": "Тайм-аут экрана"
}, },
"twelveHourClock": { "twelveHourClock": {
"description": "Use 12-hour clock format", "description": "Использовать 12-часовой формат времени",
"label": "12-Hour Clock" "label": "12-часовой формат"
}, },
"wakeOnTapOrMotion": { "wakeOnTapOrMotion": {
"description": "Wake the device on tap or motion", "description": "Пробуждать устройство по касанию или движению",
"label": "Wake on Tap or Motion" "label": "Пробуждать по касанию или движению"
} }
}, },
"lora": { "lora": {
"title": "Mesh Settings", "title": "Настройки mesh-сети",
"description": "Settings for the LoRa mesh", "description": "Настройки LoRa для mesh-сети",
"bandwidth": { "bandwidth": {
"description": "Channel bandwidth in kHz", "description": "Ширина канала в кГц",
"label": "Ширина канала" "label": "Ширина полосы"
}, },
"boostedRxGain": { "boostedRxGain": {
"description": "Boosted RX gain", "description": "Усиленный RX Gain",
"label": "Boosted RX Gain" "label": "Усиленный RX Gain"
}, },
"codingRate": { "codingRate": {
"description": "The denominator of the coding rate", "description": "Знаменатель скорости кодирования",
"label": "Частота кодирования" "label": "Скорость кодирования"
}, },
"frequencyOffset": { "frequencyOffset": {
"description": "Frequency offset to correct for crystal calibration errors", "description": "Смещение частоты для компенсации ошибок калибровки кварца",
"label": "Frequency Offset" "label": "Смещение частоты"
}, },
"frequencySlot": { "frequencySlot": {
"description": "LoRa frequency channel number", "description": "Номер частотного канала LoRa",
"label": "Частота слота" "label": "Частотный слот"
}, },
"hopLimit": { "hopLimit": {
"description": "Maximum number of hops", "description": "Максимальное число прыжков",
"label": "Hop Limit" "label": "Лимит прыжков"
}, },
"ignoreMqtt": { "ignoreMqtt": {
"description": "Don't forward MQTT messages over the mesh", "description": "Не пересылать сообщения MQTT по mesh-сети",
"label": "Игнорировать MQTT" "label": "Игнорировать MQTT"
}, },
"modemPreset": { "modemPreset": {
"description": "Modem preset to use", "description": "Используемый пресет модема",
"label": "Режим работы модема" "label": "Пресет модема"
}, },
"okToMqtt": { "okToMqtt": {
"description": "When set to true, this configuration indicates that the user approves the packet to be uploaded to MQTT. If set to false, remote nodes are requested not to forward packets to MQTT", "description": "Если установлено значение true, эта конфигурация указывает, что пользователь разрешает выгрузку пакета в MQTT. Если установлено значение false, удалённым нодам предлагается не пересылать пакеты в MQTT",
"label": "ОК в MQTT" "label": "Разрешено в MQTT"
}, },
"overrideDutyCycle": { "overrideDutyCycle": {
"description": "Переопределить рабочий цикл", "description": "Переопределить рабочий цикл",
"label": "Переопределить рабочий цикл" "label": "Переопределить рабочий цикл"
}, },
"overrideFrequency": { "overrideFrequency": {
"description": "Override frequency", "description": "Переопределить частоту",
"label": "Override Frequency" "label": "Переопределить частоту"
}, },
"region": { "region": {
"description": "Sets the region for your node", "description": "Задаёт регион для вашей ноды",
"label": "Регион / Страна" "label": "Регион"
}, },
"spreadingFactor": { "spreadingFactor": {
"description": "Indicates the number of chirps per symbol", "description": "Количество чирпов на символ",
"label": "Spreading Factor" "label": "Фактор расширения"
}, },
"transmitEnabled": { "transmitEnabled": {
"description": "Enable/Disable transmit (TX) from the LoRa radio", "description": "Включить/выключить передачу (TX) для LoRa",
"label": "Передача включена" "label": "Передача включена"
}, },
"transmitPower": { "transmitPower": {
"description": "Max transmit power", "description": "Максимальная мощность передачи",
"label": "Мощность передатчика" "label": "Мощность передачи"
}, },
"usePreset": { "usePreset": {
"description": "Use one of the predefined modem presets", "description": "Использовать один из предопределённых пресетов модема",
"label": "Использовать шаблон" "label": "Использовать пресет"
}, },
"meshSettings": { "meshSettings": {
"description": "Settings for the LoRa mesh", "description": "Настройки LoRa для mesh-сети",
"label": "Mesh Settings" "label": "Настройки mesh-сети"
}, },
"waveformSettings": { "waveformSettings": {
"description": "Settings for the LoRa waveform", "description": "Настройки формы сигнала LoRa",
"label": "Waveform Settings" "label": "Настройки формы сигнала"
}, },
"radioSettings": { "radioSettings": {
"label": "Radio Settings", "label": "Настройки радио",
"description": "Settings for the LoRa radio" "description": "Настройки LoRa-радиомодуля"
} }
}, },
"network": { "network": {
"title": "WiFi Config", "title": "Настройки WiFi",
"description": "WiFi radio configuration", "description": "Конфигурация WiFi-радио",
"note": "Note: Some devices (ESP32) cannot use both Bluetooth and WiFi at the same time.", "note": "Примечание: некоторые устройства (ESP32) не могут использовать Bluetooth и WiFi одновременно.",
"addressMode": { "addressMode": {
"description": "Address assignment selection", "description": "Выбор способа назначения адреса",
"label": "Address Mode" "label": "Режим адресации"
}, },
"dns": { "dns": {
"description": "DNS Server", "description": "DNS-сервер",
"label": "DNS" "label": "DNS"
}, },
"ethernetEnabled": { "ethernetEnabled": {
"description": "Enable or disable the Ethernet port", "description": "Включить или отключить Ethernet-порт",
"label": "Включено" "label": "Включено"
}, },
"gateway": { "gateway": {
"description": "Default Gateway", "description": "Шлюз по умолчанию",
"label": "Шлюз" "label": "Шлюз"
}, },
"ip": { "ip": {
"description": "IP Address", "description": "IP-адрес",
"label": "IP-адрес" "label": "IP"
}, },
"psk": { "psk": {
"description": "Network password", "description": "Пароль сети",
"label": "Пароль" "label": "PSK"
}, },
"ssid": { "ssid": {
"description": "Network name", "description": "Имя сети",
"label": "Название сети" "label": "SSID"
}, },
"subnet": { "subnet": {
"description": "Subnet Mask", "description": "Маска подсети",
"label": "Подсеть" "label": "Подсеть"
}, },
"wifiEnabled": { "wifiEnabled": {
"description": "Enable or disable the WiFi radio", "description": "Включить или отключить WiFi-радио",
"label": "Включено" "label": "Включено"
}, },
"meshViaUdp": { "meshViaUdp": {
"label": "Mesh via UDP" "label": "Mesh-сеть через UDP"
}, },
"ntpServer": { "ntpServer": {
"label": "NTP Server" "label": "NTP-сервер"
}, },
"rsyslogServer": { "rsyslogServer": {
"label": "Rsyslog Server" "label": "Rsyslog-сервер"
}, },
"ethernetConfigSettings": { "ethernetConfigSettings": {
"description": "Ethernet port configuration", "description": "Конфигурация Ethernet-порта",
"label": "Ethernet Config" "label": "Настройки Ethernet"
}, },
"ipConfigSettings": { "ipConfigSettings": {
"description": "IP configuration", "description": "IP-конфигурация",
"label": "IP Config" "label": "Настройки IP"
}, },
"ntpConfigSettings": { "ntpConfigSettings": {
"description": "NTP configuration", "description": "Конфигурация NTP",
"label": "NTP Config" "label": "Настройки NTP"
}, },
"rsyslogConfigSettings": { "rsyslogConfigSettings": {
"description": "Rsyslog configuration", "description": "Конфигурация Rsyslog",
"label": "Rsyslog Config" "label": "Настройки Rsyslog"
}, },
"udpConfigSettings": { "udpConfigSettings": {
"description": "UDP over Mesh configuration", "description": "Конфигурация UDP поверх mesh-сети",
"label": "UDP Config" "label": "Настройки UDP"
} }
}, },
"position": { "position": {
"title": "Position Settings", "title": "Настройки позиции",
"description": "Settings for the position module", "description": "Настройки модуля позиционирования",
"broadcastInterval": { "broadcastInterval": {
"description": "How often your position is sent out over the mesh", "description": "Как часто ваша позиция отправляется по mesh-сети",
"label": "Период трансляции" "label": "Интервал рассылки"
}, },
"enablePin": { "enablePin": {
"description": "GPS module enable pin override", "description": "Переопределение пина включения GPS-модуля",
"label": "Enable Pin" "label": "Пин включения"
}, },
"fixedPosition": { "fixedPosition": {
"description": "Don't report GPS position, but a manually-specified one", "description": "Не передавать GPS-позицию, а использовать указанную вручную",
"label": "Фиксированное положение" "label": "Фиксированная позиция",
"latitude": {
"label": "Широта",
"description": "Десятичные градусы между -90 и 90 (например, 37.7749)"
},
"longitude": {
"label": "Долгота",
"description": "Десятичные градусы между -180 и 180 (например, -122.4194)"
},
"altitude": {
"label": "Высота",
"description": "Необязательно — введите высоту в {{unit}} над уровнем моря (например, 100). Оставьте пустым, если неизвестно, или добавьте высоту для антенн/мачт."
}
}, },
"gpsMode": { "gpsMode": {
"description": "Configure whether device GPS is Enabled, Disabled, or Not Present", "description": "Настройте, включён ли GPS устройства, выключен или отсутствует",
"label": "GPS Mode" "label": "Режим GPS"
}, },
"gpsUpdateInterval": { "gpsUpdateInterval": {
"description": "How often a GPS fix should be acquired", "description": "Как часто следует получать GPS-фикс",
"label": "GPS Update Interval" "label": "Интервал обновления GPS"
}, },
"positionFlags": { "positionFlags": {
"description": "Optional fields to include when assembling position messages. The more fields are selected, the larger the message will be leading to longer airtime usage and a higher risk of packet loss.", "description": "Необязательные поля для включения в сообщения о позиции. Чем больше полей выбрано, тем больше будет сообщение, что приводит к увеличению времени в эфире и риску потери пакетов.",
"label": "Флаги позиции" "label": "Флаги позиции"
}, },
"receivePin": { "receivePin": {
"description": "GPS module RX pin override", "description": "Переопределение RX-пина GPS-модуля",
"label": "Receive Pin" "label": "Пин приёма"
}, },
"smartPositionEnabled": { "smartPositionEnabled": {
"description": "Only send position when there has been a meaningful change in location", "description": "Отправлять позицию только при значимом изменении",
"label": "Enable Smart Position" "label": "Включить умную позицию"
}, },
"smartPositionMinDistance": { "smartPositionMinDistance": {
"description": "Minimum distance (in meters) that must be traveled before a position update is sent", "description": "Минимальная дистанция (в метрах), которую нужно пройти перед отправкой обновления",
"label": "Smart Position Minimum Distance" "label": "Мин. дистанция умной позиции"
}, },
"smartPositionMinInterval": { "smartPositionMinInterval": {
"description": "Minimum interval (in seconds) that must pass before a position update is sent", "description": "Минимальный интервал (в секундах), который должен пройти перед отправкой обновления",
"label": "Smart Position Minimum Interval" "label": "Мин. интервал умной позиции"
}, },
"transmitPin": { "transmitPin": {
"description": "GPS module TX pin override", "description": "Переопределение TX-пина GPS-модуля",
"label": "Transmit Pin" "label": "Пин передачи"
}, },
"intervalsSettings": { "intervalsSettings": {
"description": "How often to send position updates", "description": "Как часто отправлять обновления позиции",
"label": "Intervals" "label": "Интервалы"
}, },
"flags": { "flags": {
"placeholder": "Select position flags...", "placeholder": "Выберите флаги позиции...",
"altitude": "Высота", "altitude": "Высота",
"altitudeGeoidalSeparation": "Altitude Geoidal Separation", "altitudeGeoidalSeparation": "Геоидальная разность высот",
"altitudeMsl": "Altitude is Mean Sea Level", "altitudeMsl": "Высота — средний уровень моря",
"dop": "Dilution of precision (DOP) PDOP used by default", "dop": "Размытость точности (DOP), по умолчанию используется PDOP",
"hdopVdop": "If DOP is set, use HDOP / VDOP values instead of PDOP", "hdopVdop": "Если DOP задан, использовать значения HDOP/VDOP вместо PDOP",
"numSatellites": "Number of satellites", "numSatellites": "Количество спутников",
"sequenceNumber": "Sequence number", "sequenceNumber": "Порядковый номер",
"timestamp": "Отметка времени", "timestamp": "Временная метка",
"unset": "Не установлена", "unset": "Не задано",
"vehicleHeading": "Vehicle heading", "vehicleHeading": "Курс",
"vehicleSpeed": "Vehicle speed" "vehicleSpeed": "Скорость"
} }
}, },
"power": { "power": {
"adcMultiplierOverride": { "adcMultiplierOverride": {
"description": "Used for tweaking battery voltage reading", "description": "Используется для коррекции показаний напряжения батареи",
"label": "ADC Multiplier Override ratio" "label": "Переопределение коэффициента ADC"
}, },
"ina219Address": { "ina219Address": {
"description": "Address of the INA219 battery monitor", "description": "Адрес монитора батареи INA219",
"label": "INA219 Address" "label": "Адрес INA219"
}, },
"lightSleepDuration": { "lightSleepDuration": {
"description": "How long the device will be in light sleep for", "description": "Сколько устройство будет в лёгком сне",
"label": "Light Sleep Duration" "label": "Длительность лёгкого сна"
}, },
"minimumWakeTime": { "minimumWakeTime": {
"description": "Minimum amount of time the device will stay awake for after receiving a packet", "description": "Минимальное время бодрствования после получения пакета",
"label": "Minimum Wake Time" "label": "Минимальное время бодрствования"
}, },
"noConnectionBluetoothDisabled": { "noConnectionBluetoothDisabled": {
"description": "If the device does not receive a Bluetooth connection, the BLE radio will be disabled after this long", "description": "Если устройство не получает Bluetooth-подключение, BLE-радио будет отключено через это время",
"label": "No Connection Bluetooth Disabled" "label": "Отключение Bluetooth при отсутствии подключения"
}, },
"powerSavingEnabled": { "powerSavingEnabled": {
"description": "Select if powered from a low-current source (i.e. solar), to minimize power consumption as much as possible.", "description": "Выберите, если питание от источника с малым током (например, солнечного), чтобы максимально снизить потребление.",
"label": "Включить режим энергосбережения" "label": "Включить режим энергосбережения"
}, },
"shutdownOnBatteryDelay": { "shutdownOnBatteryDelay": {
"description": "Automatically shutdown node after this long when on battery, 0 for indefinite", "description": "Автоматически выключать ноду через это время при питании от батареи, 0 — без ограничения",
"label": "Shutdown on battery delay" "label": "Задержка выключения от батареи"
}, },
"superDeepSleepDuration": { "superDeepSleepDuration": {
"description": "How long the device will be in super deep sleep for", "description": "Сколько устройство будет в сверхглубоком сне",
"label": "Super Deep Sleep Duration" "label": "Длительность сверхглубокого сна"
}, },
"powerConfigSettings": { "powerConfigSettings": {
"description": "Settings for the power module", "description": "Настройки модуля питания",
"label": "Настройка питания" "label": "Настройки питания"
}, },
"sleepSettings": { "sleepSettings": {
"description": "Sleep settings for the power module", "description": "Настройки сна модуля питания",
"label": "Sleep Settings" "label": "Настройки сна"
} }
}, },
"security": { "security": {
"description": "Settings for the Security configuration", "description": "Параметры безопасности",
"title": "Security Settings", "title": "Настройки безопасности",
"button_backupKey": "Backup Key", "button_backupKey": "Резервная копия ключа",
"adminChannelEnabled": { "adminChannelEnabled": {
"description": "Allow incoming device control over the insecure legacy admin channel", "description": "Разрешить входящее управление устройством через небезопасный устаревший админ-канал",
"label": "Allow Legacy Admin" "label": "Разрешить устаревший админ"
}, },
"enableDebugLogApi": { "enableDebugLogApi": {
"description": "Output live debug logging over serial, view and export position-redacted device logs over Bluetooth", "description": "Выводить живой отладочный лог по COM-порту, просматривать и экспортировать логи устройства с удалением координат по Bluetooth",
"label": "Enable Debug Log API" "label": "Включить API отладочных логов"
}, },
"managed": { "managed": {
"description": "If enabled, device configuration options are only able to be changed remotely by a Remote Admin node via admin messages. Do not enable this option unless at least one suitable Remote Admin node has been setup, and the public key is stored in one of the fields above.", "description": "Если включено, параметры устройства можно менять удалённо только через ноду Remote Admin с помощью админ-сообщений. Не включайте эту опцию, если не настроена хотя бы одна подходящая нода Remote Admin и её публичный ключ не сохранён в одном из полей выше.",
"label": "Managed" "label": "Управляемый режим"
}, },
"privateKey": { "privateKey": {
"description": "Used to create a shared key with a remote device", "description": "Используется для создания общего ключа с удалённым устройством",
"label": "Приватный ключ" "label": "Приватный ключ"
}, },
"publicKey": { "publicKey": {
"description": "Sent out to other nodes on the mesh to allow them to compute a shared secret key", "description": "Отправляется другим нодам в mesh-сети, чтобы они могли вычислить общий секретный ключ",
"label": "Публичный ключ" "label": "Публичный ключ"
}, },
"primaryAdminKey": { "primaryAdminKey": {
"description": "The primary public key authorized to send admin messages to this node", "description": "Первичный публичный ключ, которому разрешено отправлять админ-сообщения этой ноде",
"label": "Primary Admin Key" "label": "Первичный админ-ключ"
}, },
"secondaryAdminKey": { "secondaryAdminKey": {
"description": "The secondary public key authorized to send admin messages to this node", "description": "Вторичный публичный ключ, которому разрешено отправлять админ-сообщения этой ноде",
"label": "Secondary Admin Key" "label": "Вторичный админ-ключ"
}, },
"serialOutputEnabled": { "serialOutputEnabled": {
"description": "Serial Console over the Stream API", "description": "Консоль COM-порта через Stream API",
"label": "Serial Output Enabled" "label": "Вывод через COM-порт включён"
}, },
"tertiaryAdminKey": { "tertiaryAdminKey": {
"description": "The tertiary public key authorized to send admin messages to this node", "description": "Третичный публичный ключ, которому разрешено отправлять админ-сообщения этой ноде",
"label": "Tertiary Admin Key" "label": "Третичный админ-ключ"
}, },
"adminSettings": { "adminSettings": {
"description": "Settings for Admin", "description": "Настройки администратора",
"label": "Admin Settings" "label": "Настройки администратора"
}, },
"loggingSettings": { "loggingSettings": {
"description": "Settings for Logging", "description": "Настройки логирования",
"label": "Logging Settings" "label": "Настройки логирования"
} }
}, },
"user": { "user": {
"title": "User Settings", "title": "Настройки пользователя",
"description": "Configure your device name and identity settings", "description": "Настройте имя устройства и параметры идентификации",
"longName": { "longName": {
"label": "Полное имя", "label": "Полное имя",
"description": "Your full display name (1-40 characters)", "description": "Ваше полное отображаемое имя (1–40 символов)",
"validation": { "validation": {
"min": "Long name must be at least 1 character", "min": "Полное имя должно быть не короче 1 символа",
"max": "Long name must be at most 40 characters" "max": "Полное имя должно быть не длиннее 40 символов"
} }
}, },
"shortName": { "shortName": {
"label": "Короткое имя", "label": "Короткое имя",
"description": "Your abbreviated name (2-4 characters)", "description": "Сокращённое имя (2–4 символа)",
"validation": { "validation": {
"min": "Short name must be at least 2 characters", "min": "Короткое имя должно быть не короче 2 символов",
"max": "Short name must be at most 4 characters" "max": "Короткое имя должно быть не длиннее 4 символов"
} }
}, },
"isUnmessageable": { "isUnmessageable": {
"label": "Не отправляемо", "label": "Недоступен для сообщений",
"description": "Used to identify unmonitored or infrastructure nodes so that messaging is not available to nodes that will never respond." "description": "Используется для обозначения необслуживаемых или инфраструктурных нод, чтобы отключить обмен сообщениями для нод, которые никогда не отвечают."
}, },
"isLicensed": { "isLicensed": {
"label": "Лицензированный радиолюбитель (HAM)", "label": "Лицензированный радиолюбитель (HAM)",
"description": "Enable if you are a licensed amateur radio operator, enabling this option disables encryption and is not compatible with the default Meshtastic network." "description": "Включите, если вы лицензированный радиолюбитель; это отключает шифрование и несовместимо с сетью Meshtastic по умолчанию."
} }
} }
} }
@@ -1,34 +1,34 @@
{ {
"page": { "page": {
"title": "Connect to a Meshtastic device", "title": "Подключение к устройству Meshtastic",
"description": "Add a device connection via HTTP, Bluetooth, or Serial. Your saved connections will be saved in your browser." "description": "Добавьте подключение по HTTP, Bluetooth или COM-порту. Сохранённые подключения будут храниться в вашем браузере."
}, },
"connectionType_ble": "BLE", "connectionType_ble": "BLE",
"connectionType_serial": "COM-порт", "connectionType_serial": "COM-порт",
"connectionType_network": "Сеть", "connectionType_network": "Сеть",
"deleteConnection": "Delete connection", "deleteConnection": "Удалить подключение",
"areYouSure": "This will remove {{name}}. You canot undo this action.", "areYouSure": "Это удалит {{name}}. Это действие нельзя отменить.",
"moreActions": "More actions", "moreActions": "Другие действия",
"noConnections": { "noConnections": {
"title": "No connections yet.", "title": "Подключений пока нет.",
"description": "Create your first connection. It will connect immediately and be saved for later." "description": "Создайте первое подключение. Оно подключится сразу и сохранится на будущее."
}, },
"lastConnectedAt": "Last connected: {{date}}", "lastConnectedAt": "Последнее подключение: {{date}}",
"neverConnected": "Never connected", "neverConnected": "Никогда не подключалось",
"toasts": { "toasts": {
"connected": "Подключено", "connected": "Подключено",
"nowConnected": "{{name}} is now connected", "nowConnected": "Подключено: {{name}}",
"nowDisconnected": "{{name}} are now disconnecte", "nowDisconnected": "Отключено: {{name}}",
"disconnected": "Отключено", "disconnected": "Отключено",
"failed": "Failed to connect", "failed": "Не удалось подключиться",
"checkConnetion": "Check your device or settings and try again", "checkConnection": "Проверьте устройство или настройки и попробуйте снова",
"defaultSet": "Default set", "defaultSet": "По умолчанию",
"defaultConnection": "Default connection is now {{nameisconnected}}", "defaultConnection": "Теперь подключение по умолчанию: {{nameisconnected}}",
"deleted": "Deleted", "deleted": "Удалено",
"deletedByName": "{{name}} was removed", "deletedByName": "Удалено: {{name}}",
"pickConnectionAgain": "Could not connect. You may need to reselect the device/port.", "pickConnectionAgain": "Не удалось подключиться. Возможно, нужно заново выбрать устройство/порт.",
"added": "Connection added", "added": "Подключение добавлено",
"savedByName": "{{name}} saved.", "savedByName": "{{name}} сохранено.",
"savedCantConnect": "The connection was saved but could not connect." "savedCantConnect": "Подключение сохранено, но подключиться не удалось."
} }
} }
+148 -148
View File
@@ -1,238 +1,238 @@
{ {
"deleteMessages": { "deleteMessages": {
"description": "This action will clear all message history. This cannot be undone. Are you sure you want to continue?", "description": "Это действие очистит всю историю сообщений. Это нельзя отменить. Вы уверены, что хотите продолжить?",
"title": "Clear All Messages" "title": "Очистить все сообщения"
}, },
"import": { "import": {
"description": "Import a Channel Set from a Meshtastic URL. <br />Valid Meshtasic URLs start with \"<italic>https://meshtastic.org/e/...</italic>\"", "description": "Импортируйте набор каналов по URL Meshtastic. <br />Корректные URL Meshtastic начинаются с \"<italic>https://meshtastic.org/e/...</italic>\"",
"error": { "error": {
"invalidUrl": "Invalid Meshtastic URL" "invalidUrl": "Некорректный URL Meshtastic"
}, },
"channelPrefix": "Channel ", "channelPrefix": "Канал ",
"primary": "Primary ", "primary": "Первичный ",
"doNotImport": "No not import", "doNotImport": "Не импортировать",
"channelName": "Имя", "channelName": "Имя",
"channelSlot": "Слот", "channelSlot": "Слот",
"channelSetUrl": "Channel Set/QR Code URL", "channelSetUrl": "URL набора каналов/QR-кода",
"useLoraConfig": "Import LoRa Config", "useLoraConfig": "Импортировать конфигурацию LoRa",
"presetDescription": "The current LoRa Config will be replaced.", "presetDescription": "Текущая конфигурация LoRa будет заменена.",
"title": "Import Channels" "title": "Импорт каналов"
}, },
"locationResponse": { "locationResponse": {
"title": "Location: {{identifier}}", "title": "Местоположение: {{identifier}}",
"altitude": "Altitude: ", "altitude": "Высота: ",
"coordinates": "Coordinates: ", "coordinates": "Координаты: ",
"noCoordinates": "No Coordinates" "noCoordinates": "Нет координат"
}, },
"pkiRegenerateDialog": { "pkiRegenerateDialog": {
"title": "Regenerate Pre-Shared Key?", "title": "Сгенерировать Pre-Shared Key заново?",
"description": "Are you sure you want to regenerate the pre-shared key?", "description": "Вы уверены, что хотите пересоздать Pre-Shared Key?",
"regenerate": "Regenerate" "regenerate": "Сгенерировать заново"
}, },
"addConnection": { "addConnection": {
"title": "Add connection", "title": "Добавить подключение",
"description": "Choose a connection type and fill in the details", "description": "Выберите тип подключения и заполните параметры",
"validation": { "validation": {
"requiresWebBluetooth": "This connection type requires <0>Web Bluetooth</0>. Please use a supported browser, like Chrome or Edge.", "requiresWebBluetooth": "Для этого типа подключения требуется <0>Web Bluetooth</0>. Используйте поддерживаемый браузер, например Chrome или Edge.",
"requiresWebSerial": "This connection type requires <0>Web Serial</0>. Please use a supported browser, like Chrome or Edge.", "requiresWebSerial": "Для этого типа подключения требуется <0>Web Serial</0>. Используйте поддерживаемый браузер, например Chrome или Edge.",
"requiresSecureContext": "This application requires a <0>secure context</0>. Please connect using HTTPS or localhost.", "requiresSecureContext": "Этому приложению требуется <0>безопасный контекст</0>. Подключайтесь через HTTPS или localhost.",
"additionallyRequiresSecureContext": "Additionally, it requires a <0>secure context</0>. Please connect using HTTPS or localhost." "additionallyRequiresSecureContext": "Кроме того, требуется <0>безопасный контекст</0>. Подключайтесь через HTTPS или localhost."
}, },
"bluetoothConnection": { "bluetoothConnection": {
"namePlaceholder": "My Bluetooth Node", "namePlaceholder": "Моя Bluetooth-нода",
"supported": { "supported": {
"title": "Web Bluetooth supported" "title": "Web Bluetooth поддерживается"
}, },
"notSupported": { "notSupported": {
"title": "Web Bluetooth not supported", "title": "Web Bluetooth не поддерживается",
"description": "Your browser or device does not support Web Bluetooth" "description": "Ваш браузер или устройство не поддерживает Web Bluetooth"
}, },
"short": "BT: {{deviceName}}", "short": "BT: {{deviceName}}",
"long": "Bluetooth Device", "long": "Bluetooth-устройство",
"device": "Устройство", "device": "Устройство",
"selectDevice": "Select device", "selectDevice": "Выберите устройство",
"selected": "Bluetooth device selected", "selected": "Bluetooth-устройство выбрано",
"notSelected": "No device selected", "notSelected": "Устройство не выбрано",
"helperText": "Uses the Meshtastic Bluetooth service for discovery." "helperText": "Используется служба Meshtastic Bluetooth для обнаружения."
}, },
"serialConnection": { "serialConnection": {
"namePlaceholder": "My Serial Node", "namePlaceholder": "Моя COM-нода",
"helperText": "Selecting a port grants permission so the app can open it to connect.", "helperText": "Выбор порта даёт разрешение, чтобы приложение могло открыть его для подключения.",
"supported": { "supported": {
"title": "Web Serial supported" "title": "Web Serial поддерживается"
}, },
"notSupported": { "notSupported": {
"title": "Web Serial not supported", "title": "Web Serial не поддерживается",
"description": "Your browser or device does not support Web Serial" "description": "Ваш браузер или устройство не поддерживает Web Serial"
}, },
"portSelected": { "portSelected": {
"title": "Serial port selected", "title": "Порт выбран",
"description": "Port permissions granted." "description": "Разрешения на порт предоставлены."
}, },
"port": "Port", "port": "Порт",
"selectPort": "Select port", "selectPort": "Выберите порт",
"deviceName": "USB {{vendorId}}:{{productId}}", "deviceName": "USB {{vendorId}}:{{productId}}",
"notSelected": "No port selected" "notSelected": "Порт не выбран"
}, },
"httpConnection": { "httpConnection": {
"namePlaceholder": "My HTTP Node", "namePlaceholder": "Моя HTTP-нода",
"inputPlaceholder": "192.168.1.10 or meshtastic.local", "inputPlaceholder": "192.168.1.10 или meshtastic.local",
"heading": "URL or IP", "heading": "URL или IP",
"useHttps": "Use HTTPS", "useHttps": "Использовать HTTPS",
"invalidUrl": { "invalidUrl": {
"title": "Invalid URL", "title": "Неверный URL",
"description": "Please enter a valid HTTP or HTTPS URL." "description": "Введите корректный URL HTTP или HTTPS."
}, },
"connectionTest": { "connectionTest": {
"description": "Test the connetion before saving to verify the device is reachable.", "description": "Проверьте подключение перед сохранением, чтобы убедиться, что устройство доступно.",
"button": { "button": {
"loading": "Testing...", "loading": "Проверка...",
"label": "Test connection" "label": "Проверить подключение"
}, },
"reachable": "Reachable", "reachable": "Доступно",
"notReachable": "Not reachable", "notReachable": "Недоступно",
"success": { "success": {
"title": "Connection test successful", "title": "Проверка подключения успешна",
"description": "The device appears to be reachable." "description": "Устройство доступно."
}, },
"failure": { "failure": {
"title": "Connection test failed", "title": "Проверка подключения не удалась",
"description": "Could not reach the device. Check the URL and try again." "description": "Не удалось связаться с устройством. Проверьте URL и попробуйте снова."
} }
} }
} }
}, },
"nodeDetails": { "nodeDetails": {
"message": "Сообщение", "message": "Сообщение",
"requestPosition": "Request Position", "requestPosition": "Запросить позицию",
"traceRoute": "Trace Route", "traceRoute": "Трассировка маршрута",
"airTxUtilization": "Air TX utilization", "airTxUtilization": "Загрузка TX в эфире",
"allRawMetrics": "All Raw Metrics:", "allRawMetrics": "Все сырые метрики:",
"batteryLevel": "Battery level", "batteryLevel": "Уровень батареи",
"channelUtilization": "Channel utilization", "channelUtilization": "Загрузка канала",
"details": "Details:", "details": "Детали:",
"deviceMetrics": "Device Metrics:", "deviceMetrics": "Метрики устройства:",
"hardware": "Hardware: ", "hardware": "Оборудование: ",
"lastHeard": "Last Heard: ", "lastHeard": "Последний раз слышен: ",
"nodeHexPrefix": "Node Hex: ", "nodeHexPrefix": "HEX ноды: ",
"nodeNumber": "Node Number: ", "nodeNumber": "Номер ноды: ",
"position": "Position:", "position": "Позиция:",
"role": "Role: ", "role": "Роль: ",
"uptime": "Uptime: ", "uptime": "Время работы: ",
"voltage": "Напряжение", "voltage": "Напряжение",
"title": "Node Details for {{identifier}}", "title": "Детали ноды {{identifier}}",
"ignoreNode": "Ignore node", "ignoreNode": "Игнорировать ноду",
"removeNode": "Remove node", "removeNode": "Удалить ноду",
"unignoreNode": "Unignore node", "unignoreNode": "Не игнорировать ноду",
"security": "Security:", "security": "Безопасность:",
"publicKey": "Public Key: ", "publicKey": "Публичный ключ: ",
"messageable": "Messageable: ", "messageable": "Доступен для сообщений: ",
"KeyManuallyVerifiedTrue": "Public Key has been manually verified", "KeyManuallyVerifiedTrue": "Публичный ключ вручную подтверждён",
"KeyManuallyVerifiedFalse": "Public Key is not manually verified" "KeyManuallyVerifiedFalse": "Публичный ключ не подтверждён вручную"
}, },
"pkiBackup": { "pkiBackup": {
"loseKeysWarning": "If you lose your keys, you will need to reset your device.", "loseKeysWarning": "Если вы потеряете ключи, потребуется сбросить устройство.",
"secureBackup": "Its important to backup your public and private keys and store your backup securely!", "secureBackup": "Важно сделать резервную копию публичного и приватного ключей и хранить её безопасно!",
"footer": "=== END OF KEYS ===", "footer": "=== КОНЕЦ КЛЮЧЕЙ ===",
"header": "=== MESHTASTIC KEYS FOR {{longName}} ({{shortName}}) ===", "header": "=== КЛЮЧИ MESHTASTIC ДЛЯ {{longName}} ({{shortName}}) ===",
"privateKey": "Private Key:", "privateKey": "Приватный ключ:",
"publicKey": "Public Key:", "publicKey": "Публичный ключ:",
"fileName": "meshtastic_keys_{{longName}}_{{shortName}}.txt", "fileName": "meshtastic_keys_{{longName}}_{{shortName}}.txt",
"title": "Backup Keys" "title": "Резервное копирование ключей"
}, },
"pkiBackupReminder": { "pkiBackupReminder": {
"description": "We recommend backing up your key data regularly. Would you like to back up now?", "description": "Рекомендуем регулярно делать резервную копию ключевых данных. Хотите сделать копию сейчас?",
"title": "Backup Reminder", "title": "Напоминание о резервной копии",
"remindLaterPrefix": "Remind me in", "remindLaterPrefix": "Напомнить через",
"remindNever": "Never remind me", "remindNever": "Никогда не напоминать",
"backupNow": "Back up now" "backupNow": "Сделать копию сейчас"
}, },
"pkiRegenerate": { "pkiRegenerate": {
"description": "Are you sure you want to regenerate key pair?", "description": "Вы уверены, что хотите пересоздать пару ключей?",
"title": "Regenerate Key Pair" "title": "Пересоздать пару ключей"
}, },
"qr": { "qr": {
"addChannels": "Add Channels", "addChannels": "Добавить каналы",
"replaceChannels": "Replace Channels", "replaceChannels": "Заменить каналы",
"description": "The current LoRa configuration will also be shared.", "description": "Текущая конфигурация LoRa также будет передана.",
"sharableUrl": "Sharable URL", "sharableUrl": "Ссылка для обмена",
"title": "Generate QR Code" "title": "Сгенерировать QR-код"
}, },
"reboot": { "reboot": {
"title": "Reboot device", "title": "Перезагрузка устройства",
"description": "Reboot now or schedule a reboot of the connected node. Optionally, you can choose to reboot into OTA (Over-the-Air) mode.", "description": "Перезагрузить сейчас или запланировать перезагрузку подключённой ноды. При желании можно перезагрузить в режим OTA (Over-the-Air).",
"ota": "Reboot into OTA mode", "ota": "Перезагрузить в режим OTA",
"enterDelay": "Enter delay", "enterDelay": "Укажите задержку",
"scheduled": "Reboot has been scheduled", "scheduled": "Перезагрузка запланирована",
"schedule": "Schedule reboot", "schedule": "Запланировать перезагрузку",
"now": "Reboot now", "now": "Перезагрузить сейчас",
"cancel": "Cancel scheduled reboot" "cancel": "Отменить запланированную перезагрузку"
}, },
"refreshKeys": { "refreshKeys": {
"description": { "description": {
"acceptNewKeys": "This will remove the node from device and request new keys.", "acceptNewKeys": "Это удалит ноду с устройства и запросит новые ключи.",
"keyMismatchReasonSuffix": ". This is due to the remote node's current public key does not match the previously stored key for this node.", "keyMismatchReasonSuffix": ". Это связано с тем, что текущий публичный ключ удалённой ноды не совпадает с ранее сохранённым ключом для этой ноды.",
"unableToSendDmPrefix": "Your node is unable to send a direct message to node: " "unableToSendDmPrefix": "Ваша нода не может отправить личное сообщение ноде: "
}, },
"acceptNewKeys": "Accept New Keys", "acceptNewKeys": "Принять новые ключи",
"title": "Keys Mismatch - {{identifier}}" "title": "Несоответствие ключей — {{identifier}}"
}, },
"removeNode": { "removeNode": {
"description": "Are you sure you want to remove this Node?", "description": "Вы уверены, что хотите удалить эту ноду?",
"title": "Remove Node?" "title": "Удалить ноду?"
}, },
"shutdown": { "shutdown": {
"title": "Schedule Shutdown", "title": "Запланировать выключение",
"description": "Turn off the connected node after x minutes." "description": "Выключить подключённую ноду через X минут."
}, },
"traceRoute": { "traceRoute": {
"routeToDestination": "Route to destination:", "routeToDestination": "Маршрут к месту назначения:",
"routeBack": "Route back:" "routeBack": "Маршрут обратно:"
}, },
"tracerouteResponse": { "tracerouteResponse": {
"title": "Traceroute: {{identifier}}" "title": "Трассировка: {{identifier}}"
}, },
"unsafeRoles": { "unsafeRoles": {
"confirmUnderstanding": "Yes, I know what I'm doing", "confirmUnderstanding": "Да, я понимаю, что делаю",
"conjunction": " and the blog post about ", "conjunction": " и запись в блоге о ",
"postamble": " and understand the implications of changing the role.", "postamble": " и понимаю последствия изменения роли.",
"preamble": "I have read the ", "preamble": "Я прочитал(а) ",
"choosingRightDeviceRole": "Choosing The Right Device Role", "choosingRightDeviceRole": "Как выбрать правильную роль устройства",
"deviceRoleDocumentation": "Device Role Documentation", "deviceRoleDocumentation": "Документация по ролям устройств",
"title": "Вы уверены?" "title": "Вы уверены?"
}, },
"managedMode": { "managedMode": {
"confirmUnderstanding": "Yes, I know what I'm doing", "confirmUnderstanding": "Да, я понимаю, что делаю",
"title": "Вы уверены?", "title": "Вы уверены?",
"description": "Enabling Managed Mode blocks client applications (including the web client) from writing configurations to a radio. Once enabled, radio configurations can only be changed through Remote Admin messages. This setting is not required for remote node administration." "description": "Включение управляемого режима блокирует клиентские приложения (включая веб-клиент) от записи конфигурации в радио. После включения конфигурации радиомодуля можно менять только через сообщения удалённого администратора. Эта настройка не требуется для удалённого администрирования нод."
}, },
"clientNotification": { "clientNotification": {
"title": "Уведомления клиента", "title": "Уведомление клиента",
"TraceRoute can only be sent once every 30 seconds": "TraceRoute can only be sent once every 30 seconds", "TraceRoute can only be sent once every 30 seconds": "Трассировку можно отправлять не чаще одного раза в 30 секунд",
"Compromised keys were detected and regenerated.": "Compromised keys were detected and regenerated." "Compromised keys were detected and regenerated.": "Обнаружены скомпрометированные ключи и они были пересозданы."
}, },
"resetNodeDb": { "resetNodeDb": {
"title": "Reset Node Database", "title": "Сброс базы нод",
"description": "This will clear all nodes from the connected device's node database and clear all message history in the client. This cannot be undone. Are you sure you want to continue?", "description": "Это действие удалит все ноды из базы нод подключённого устройства и очистит всю историю сообщений в клиенте. Это нельзя отменить. Вы уверены, что хотите продолжить?",
"confirm": "Reset Node Database", "confirm": "Сбросить базу нод",
"failedTitle": "There was an error resetting the Node DB. Please try again." "failedTitle": "Произошла ошибка при сбросе базы нод. Повторите попытку."
}, },
"clearAllStores": { "clearAllStores": {
"title": "Clear All Local Storage", "title": "Очистить всё локальное хранилище",
"description": "This will clear all locally stored data, including message history and node databases for all previously connected devices. This will require you to reconnect to your node once complete and cannot be undone. Are you sure you want to continue?", "description": "Это действие очистит все локально сохранённые данные, включая историю сообщений и базы нод для всех ранее подключённых устройств. После завершения потребуется заново подключиться к ноде. Это нельзя отменить. Вы уверены, что хотите продолжить?",
"confirm": "Clear all local storage", "confirm": "Очистить всё локальное хранилище",
"failedTitle": "There was an error clearing local storage. Please try again." "failedTitle": "Произошла ошибка при очистке локального хранилища. Повторите попытку."
}, },
"factoryResetDevice": { "factoryResetDevice": {
"title": "Factory Reset Device", "title": "Сброс устройства к заводским настройкам",
"description": "This will factory reset the connected device, erasing all configurations and data on the device as well as all nodes and messages saved in the client. This cannot be undone. Are you sure you want to continue?", "description": "Это действие выполнит сброс подключённого устройства к заводским настройкам, удалив все конфигурации и данные на устройстве, а также все ноды и сообщения, сохранённые в клиенте. Это нельзя отменить. Вы уверены, что хотите продолжить?",
"confirm": "Factory Reset Device", "confirm": "Сбросить устройство к заводским настройкам",
"failedTitle": "There was an error performing the factory reset. Please try again." "failedTitle": "Произошла ошибка при выполнении сброса. Повторите попытку."
}, },
"factoryResetConfig": { "factoryResetConfig": {
"title": "Factory Reset Config", "title": "Сброс конфигурации к заводским настройкам",
"description": "This will factory reset the configuration on the connected device, erasing all configurations on the device. This cannot be undone. Are you sure you want to continue?", "description": "Это действие выполнит сброс конфигурации на подключённом устройстве, удалив все конфигурации на устройстве. Это нельзя отменить. Вы уверены, что хотите продолжить?",
"confirm": "Factory Reset Config", "confirm": "Сбросить конфигурацию к заводским настройкам",
"failedTitle": "There was an error performing the factory reset. Please try again." "failedTitle": "Произошла ошибка при выполнении сброса. Повторите попытку."
} }
} }
+27 -25
View File
@@ -1,38 +1,40 @@
{ {
"maplibre": { "maplibre": {
"GeolocateControl.FindMyLocation": "Find my location", "GeolocateControl.FindMyLocation": "Найти моё местоположение",
"NavigationControl.ZoomIn": "Zoom in", "NavigationControl.ZoomIn": "Увеличить",
"NavigationControl.ZoomOut": "Zoom out", "NavigationControl.ZoomOut": "Уменьшить",
"CooperativeGesturesHandler.WindowsHelpText": "Use Ctrl + scroll to zoom the map", "CooperativeGesturesHandler.WindowsHelpText": "Используйте Ctrl + прокрутку, чтобы приблизить карту",
"CooperativeGesturesHandler.MacHelpText": "Use ⌘ + scroll to zoom the map", "CooperativeGesturesHandler.MacHelpText": "Используйте ⌘ + прокрутку, чтобы приблизить карту",
"CooperativeGesturesHandler.MobileHelpText": "Use two fingers to move the map" "CooperativeGesturesHandler.MobileHelpText": "Используйте два пальца, чтобы перемещать карту"
}, },
"layerTool": { "layerTool": {
"nodeMarkers": "Show nodes", "nodeMarkers": "Показать ноды",
"directNeighbors": "Show direct connections", "directNeighbors": "Показать прямые соединения",
"remoteNeighbors": "Show remote connections", "remoteNeighbors": "Показать удалённые соединения",
"positionPrecision": "Show position precision", "positionPrecision": "Показать точность позиции",
"traceroutes": "Show traceroutes", "traceroutes": "Показать трассировки",
"waypoints": "Show waypoints" "waypoints": "Показать путевые точки",
"heatmap": "Показать тепловую карту",
"density": "Плотность"
}, },
"mapMenu": { "mapMenu": {
"locateAria": "Locate my node", "locateAria": "Найти мою ноду",
"layersAria": "Change map style" "layersAria": "Изменить стиль карты"
}, },
"waypointDetail": { "waypointDetail": {
"edit": "Редактировать", "edit": "Редактировать",
"description": "Description:", "description": "Описание:",
"createdBy": "Edited by:", "createdBy": "Кем изменено:",
"createdDate": "Created:", "createdDate": "Создано:",
"updated": "Updated:", "updated": "Обновлено:",
"expires": "Expires:", "expires": "Истекает:",
"distance": "Distance:", "distance": "Расстояние:",
"bearing": "Absolute bearing:", "bearing": "Абсолютный азимут:",
"lockedTo": "Locked by:", "lockedTo": "Закреплено за:",
"latitude": "Latitude:", "latitude": "Широта:",
"longitude": "Longitude:" "longitude": "Долгота:"
}, },
"myNode": { "myNode": {
"tooltip": "This device" "tooltip": "Это устройство"
} }
} }
@@ -1,39 +1,39 @@
{ {
"page": { "page": {
"title": "Messages: {{chatName}}", "title": "Сообщения: {{chatName}}",
"placeholder": "Enter Message" "placeholder": "Введите сообщение"
}, },
"emptyState": { "emptyState": {
"title": "Select a Chat", "title": "Выберите чат",
"text": "No messages yet." "text": "Сообщений пока нет."
}, },
"selectChatPrompt": { "selectChatPrompt": {
"text": "Select a channel or node to start messaging." "text": "Выберите канал или ноду, чтобы начать переписку."
}, },
"sendMessage": { "sendMessage": {
"placeholder": "Enter your message here...", "placeholder": "Введите сообщение...",
"sendButton": "Отправить" "sendButton": "Отправить"
}, },
"actionsMenu": { "actionsMenu": {
"addReactionLabel": "Add Reaction", "addReactionLabel": "Добавить реакцию",
"replyLabel": "Ответить" "replyLabel": "Ответить"
}, },
"deliveryStatus": { "deliveryStatus": {
"delivered": { "delivered": {
"label": "Message delivered", "label": "Сообщение доставлено",
"displayText": "Message delivered" "displayText": "Сообщение доставлено"
}, },
"failed": { "failed": {
"label": "Message delivery failed", "label": "Не удалось доставить сообщение",
"displayText": "Delivery failed" "displayText": "Доставка не удалась"
}, },
"unknown": { "unknown": {
"label": "Message status unknown", "label": "Статус сообщения неизвестен",
"displayText": "Unknown state" "displayText": "Неизвестный статус"
}, },
"waiting": { "waiting": {
"label": "Sending message", "label": "Отправка сообщения",
"displayText": "Waiting for delivery" "displayText": "Ожидание доставки"
} }
} }
} }
@@ -1,448 +1,448 @@
{ {
"page": { "page": {
"tabAmbientLighting": "Световое освещение", "tabAmbientLighting": "Подсветка",
"tabAudio": "Звук", "tabAudio": "Аудио",
"tabCannedMessage": "Canned", "tabCannedMessage": "Шаблоны",
"tabDetectionSensor": "Датчик обнаружения", "tabDetectionSensor": "Датчик обнаружения",
"tabExternalNotification": "Ext Notif", "tabExternalNotification": "Внешн. уведомл.",
"tabMqtt": "MQTT", "tabMqtt": "MQTT",
"tabNeighborInfo": "Информация об окружности", "tabNeighborInfo": "Инфо о соседях",
"tabPaxcounter": "Счётчик прохожих", "tabPaxcounter": "Paxcounter",
"tabRangeTest": "Проверка дальности", "tabRangeTest": "Тест дальности",
"tabSerial": "COM-порт", "tabSerial": "COM-порт",
"tabStoreAndForward": "S&F", "tabStoreAndForward": "S&F",
"tabTelemetry": "Телеметрия" "tabTelemetry": "Телеметрия"
}, },
"ambientLighting": { "ambientLighting": {
"title": "Ambient Lighting Settings", "title": "Настройки подсветки",
"description": "Settings for the Ambient Lighting module", "description": "Настройки модуля подсветки",
"ledState": { "ledState": {
"label": "LED State", "label": "Состояние LED",
"description": "Sets LED to on or off" "description": "Включить или выключить LED"
}, },
"current": { "current": {
"label": "Ток", "label": "Ток",
"description": "Sets the current for the LED output. Default is 10" "description": "Устанавливает ток для LED-выхода. По умолчанию 10"
}, },
"red": { "red": {
"label": "Красный", "label": "Красный",
"description": "Sets the red LED level. Values are 0-255" "description": "Устанавливает яркость красного LED. Значения 0–255"
}, },
"green": { "green": {
"label": "Зеленый", "label": "Зелёный",
"description": "Sets the green LED level. Values are 0-255" "description": "Устанавливает яркость зелёного LED. Значения 0–255"
}, },
"blue": { "blue": {
"label": "Синий", "label": "Синий",
"description": "Sets the blue LED level. Values are 0-255" "description": "Устанавливает яркость синего LED. Значения 0–255"
} }
}, },
"audio": { "audio": {
"title": "Audio Settings", "title": "Настройки аудио",
"description": "Settings for the Audio module", "description": "Настройки аудио-модуля",
"codec2Enabled": { "codec2Enabled": {
"label": "Codec 2 Enabled", "label": "Codec 2 включён",
"description": "Enable Codec 2 audio encoding" "description": "Включить аудиокодирование Codec 2"
}, },
"pttPin": { "pttPin": {
"label": "PTT Pin", "label": "Пин PTT",
"description": "GPIO pin to use for PTT" "description": "GPIO-пин для PTT"
}, },
"bitrate": { "bitrate": {
"label": "Bitrate", "label": "Битрейт",
"description": "Bitrate to use for audio encoding" "description": "Битрейт для аудиокодирования"
}, },
"i2sWs": { "i2sWs": {
"label": "i2S WS", "label": "i2S WS",
"description": "GPIO pin to use for i2S WS" "description": "GPIO-пин для i2S WS"
}, },
"i2sSd": { "i2sSd": {
"label": "i2S SD", "label": "i2S SD",
"description": "GPIO pin to use for i2S SD" "description": "GPIO-пин для i2S SD"
}, },
"i2sDin": { "i2sDin": {
"label": "i2S DIN", "label": "i2S DIN",
"description": "GPIO pin to use for i2S DIN" "description": "GPIO-пин для i2S DIN"
}, },
"i2sSck": { "i2sSck": {
"label": "i2S SCK", "label": "i2S SCK",
"description": "GPIO pin to use for i2S SCK" "description": "GPIO-пин для i2S SCK"
} }
}, },
"cannedMessage": { "cannedMessage": {
"title": "Canned Message Settings", "title": "Настройки шаблонных сообщений",
"description": "Settings for the Canned Message module", "description": "Настройки модуля шаблонных сообщений",
"moduleEnabled": { "moduleEnabled": {
"label": "Module Enabled", "label": "Модуль включён",
"description": "Enable Canned Message" "description": "Включить шаблонные сообщения"
}, },
"rotary1Enabled": { "rotary1Enabled": {
"label": "Rotary Encoder #1 Enabled", "label": "Энкодер #1 включён",
"description": "Enable the rotary encoder" "description": "Включить энкодер"
}, },
"inputbrokerPinA": { "inputbrokerPinA": {
"label": "Encoder Pin A", "label": "Пин энкодера A",
"description": "GPIO Pin Value (1-39) For encoder port A" "description": "Значение GPIO (1–39) для порта A энкодера"
}, },
"inputbrokerPinB": { "inputbrokerPinB": {
"label": "Encoder Pin B", "label": "Пин энкодера B",
"description": "GPIO Pin Value (1-39) For encoder port B" "description": "Значение GPIO (1–39) для порта B энкодера"
}, },
"inputbrokerPinPress": { "inputbrokerPinPress": {
"label": "Encoder Pin Press", "label": "Пин нажатия энкодера",
"description": "GPIO Pin Value (1-39) For encoder Press" "description": "Значение GPIO (1–39) для нажатия энкодера"
}, },
"inputbrokerEventCw": { "inputbrokerEventCw": {
"label": "Clockwise event", "label": "Событие по часовой",
"description": "Select input event." "description": "Выберите событие ввода."
}, },
"inputbrokerEventCcw": { "inputbrokerEventCcw": {
"label": "Counter Clockwise event", "label": "Событие против часовой",
"description": "Select input event." "description": "Выберите событие ввода."
}, },
"inputbrokerEventPress": { "inputbrokerEventPress": {
"label": "Press event", "label": "Событие нажатия",
"description": "Select input event" "description": "Выберите событие ввода"
}, },
"updown1Enabled": { "updown1Enabled": {
"label": "Up Down enabled", "label": "Вверх/вниз включён",
"description": "Enable the up / down encoder" "description": "Включить энкодер вверх/вниз"
}, },
"allowInputSource": { "allowInputSource": {
"label": "Allow Input Source", "label": "Разрешённый источник ввода",
"description": "Select from: '_any', 'rotEnc1', 'upDownEnc1', 'cardkb'" "description": "Выберите из: '_any', 'rotEnc1', 'upDownEnc1', 'cardkb'"
}, },
"sendBell": { "sendBell": {
"label": "Send Bell", "label": "Отправлять звонок",
"description": "Sends a bell character with each message" "description": "Отправляет символ звонка с каждым сообщением"
} }
}, },
"detectionSensor": { "detectionSensor": {
"title": "Detection Sensor Settings", "title": "Настройки датчика обнаружения",
"description": "Settings for the Detection Sensor module", "description": "Настройки модуля датчика обнаружения",
"enabled": { "enabled": {
"label": "Включено", "label": "Включено",
"description": "Enable or disable Detection Sensor Module" "description": "Включить или отключить модуль датчика обнаружения"
}, },
"minimumBroadcastSecs": { "minimumBroadcastSecs": {
"label": "Minimum Broadcast Seconds", "label": "Мин. интервал рассылки",
"description": "The interval in seconds of how often we can send a message to the mesh when a state change is detected" "description": "Минимальный интервал в секундах между отправкой сообщений по mesh-сети при изменении состояния"
}, },
"stateBroadcastSecs": { "stateBroadcastSecs": {
"label": "State Broadcast Seconds", "label": "Интервал рассылки состояния",
"description": "The interval in seconds of how often we should send a message to the mesh with the current state regardless of changes" "description": "Интервал в секундах между отправкой сообщений с текущим состоянием, независимо от изменений"
}, },
"sendBell": { "sendBell": {
"label": "Send Bell", "label": "Отправлять звонок",
"description": "Send ASCII bell with alert message" "description": "Отправлять ASCII-звонок с тревожным сообщением"
}, },
"name": { "name": {
"label": "Friendly Name", "label": "Понятное имя",
"description": "Used to format the message sent to mesh, max 20 Characters" "description": "Используется для форматирования сообщения, отправляемого по mesh-сети. Максимум 20 символов"
}, },
"monitorPin": { "monitorPin": {
"label": "Monitor Pin", "label": "Пин мониторинга",
"description": "The GPIO pin to monitor for state changes" "description": "GPIO-пин для мониторинга изменений состояния"
}, },
"detectionTriggerType": { "detectionTriggerType": {
"label": "Detection Triggered Type", "label": "Тип триггера",
"description": "The type of trigger event to be used" "description": "Тип события-триггера"
}, },
"usePullup": { "usePullup": {
"label": "Use Pullup", "label": "Использовать подтяжку",
"description": "Whether or not use INPUT_PULLUP mode for GPIO pin" "description": "Использовать режим INPUT_PULLUP для GPIO-пина"
} }
}, },
"externalNotification": { "externalNotification": {
"title": "External Notification Settings", "title": "Настройки внешних уведомлений",
"description": "Configure the external notification module", "description": "Настройка модуля внешних уведомлений",
"enabled": { "enabled": {
"label": "Module Enabled", "label": "Модуль включён",
"description": "Enable External Notification" "description": "Включить внешние уведомления"
}, },
"outputMs": { "outputMs": {
"label": "Output MS", "label": "Длительность (мс)",
"description": "Output MS" "description": "Длительность (мс)"
}, },
"output": { "output": {
"label": "Output", "label": "Выход",
"description": "Output" "description": "Выход"
}, },
"outputVibra": { "outputVibra": {
"label": "Output Vibrate", "label": "Выход вибро",
"description": "Output Vibrate" "description": "Выход вибро"
}, },
"outputBuzzer": { "outputBuzzer": {
"label": "Output Buzzer", "label": "Выход зуммера",
"description": "Output Buzzer" "description": "Выход зуммера"
}, },
"active": { "active": {
"label": "Active", "label": "Активен",
"description": "Active" "description": "Активен"
}, },
"alertMessage": { "alertMessage": {
"label": "Alert Message", "label": "Сообщение тревоги",
"description": "Alert Message" "description": "Сообщение тревоги"
}, },
"alertMessageVibra": { "alertMessageVibra": {
"label": "Alert Message Vibrate", "label": "Вибро при сообщении",
"description": "Alert Message Vibrate" "description": "Вибро при сообщении"
}, },
"alertMessageBuzzer": { "alertMessageBuzzer": {
"label": "Alert Message Buzzer", "label": "Зуммер при сообщении",
"description": "Alert Message Buzzer" "description": "Зуммер при сообщении"
}, },
"alertBell": { "alertBell": {
"label": "Alert Bell", "label": "Звонок тревоги",
"description": "Should an alert be triggered when receiving an incoming bell?" "description": "Запускать тревогу при получении входящего звонка?"
}, },
"alertBellVibra": { "alertBellVibra": {
"label": "Alert Bell Vibrate", "label": "Вибро при звонке",
"description": "Alert Bell Vibrate" "description": "Вибро при звонке"
}, },
"alertBellBuzzer": { "alertBellBuzzer": {
"label": "Alert Bell Buzzer", "label": "Зуммер при звонке",
"description": "Alert Bell Buzzer" "description": "Зуммер при звонке"
}, },
"usePwm": { "usePwm": {
"label": "Use PWM", "label": "Использовать PWM",
"description": "Use PWM" "description": "Использовать PWM"
}, },
"nagTimeout": { "nagTimeout": {
"label": "Nag Timeout", "label": "Тайм-аут напоминания",
"description": "Nag Timeout" "description": "Тайм-аут напоминания"
}, },
"useI2sAsBuzzer": { "useI2sAsBuzzer": {
"label": "Use I²S Pin as Buzzer", "label": "Использовать пин I²S как зуммер",
"description": "Designate I²S Pin as Buzzer Output" "description": "Назначить пин I²S как выход зуммера"
} }
}, },
"mqtt": { "mqtt": {
"title": "MQTT Settings", "title": "Настройки MQTT",
"description": "Settings for the MQTT module", "description": "Настройки модуля MQTT",
"enabled": { "enabled": {
"label": "Включено", "label": "Включено",
"description": "Enable or disable MQTT" "description": "Включить или отключить MQTT"
}, },
"address": { "address": {
"label": "MQTT Server Address", "label": "Адрес сервера MQTT",
"description": "MQTT server address to use for default/custom servers" "description": "Адрес сервера MQTT для стандартных/пользовательских серверов"
}, },
"username": { "username": {
"label": "MQTT Username", "label": "Имя пользователя MQTT",
"description": "MQTT username to use for default/custom servers" "description": "Имя пользователя MQTT для стандартных/пользовательских серверов"
}, },
"password": { "password": {
"label": "MQTT Password", "label": "Пароль MQTT",
"description": "MQTT password to use for default/custom servers" "description": "Пароль MQTT для стандартных/пользовательских серверов"
}, },
"encryptionEnabled": { "encryptionEnabled": {
"label": "Encryption Enabled", "label": "Шифрование включено",
"description": "Enable or disable MQTT encryption. Note: All messages are sent to the MQTT broker unencrypted if this option is not enabled, even when your uplink channels have encryption keys set. This includes position data." "description": "Включить или отключить шифрование MQTT. Примечание: если опция не включена, все сообщения отправляются брокеру MQTT без шифрования, даже если на каналах аплинка заданы ключи шифрования. Это включает данные позиции."
}, },
"jsonEnabled": { "jsonEnabled": {
"label": "JSON Enabled", "label": "JSON включён",
"description": "Whether to send/consume JSON packets on MQTT" "description": "Отправлять/получать JSON-пакеты по MQTT"
}, },
"tlsEnabled": { "tlsEnabled": {
"label": "TLS Enabled", "label": "TLS включён",
"description": "Enable or disable TLS" "description": "Включить или отключить TLS"
}, },
"root": { "root": {
"label": "Корневая тема", "label": "Корневой топик",
"description": "MQTT root topic to use for default/custom servers" "description": "Корневой топик MQTT для стандартных/пользовательских серверов"
}, },
"proxyToClientEnabled": { "proxyToClientEnabled": {
"label": "MQTT Client Proxy Enabled", "label": "Прокси MQTT-клиента",
"description": "Utilizes the network connection to proxy MQTT messages to the client." "description": "Использует сетевое подключение для проксирования MQTT-сообщений клиенту."
}, },
"mapReportingEnabled": { "mapReportingEnabled": {
"label": "Map Reporting Enabled", "label": "Отправка отчётов карты включена",
"description": "Your node will periodically send an unencrypted map report packet to the configured MQTT server, this includes id, short and long name, approximate location, hardware model, role, firmware version, LoRa region, modem preset and primary channel name." "description": "Ваша нода будет периодически отправлять незашифрованный пакет отчёта карты на настроенный MQTT-сервер; он включает ID, короткое и полное имя, приблизительное местоположение, модель оборудования, роль, версию прошивки, регион LoRa, пресет модема и имя первичного канала."
}, },
"mapReportSettings": { "mapReportSettings": {
"publishIntervalSecs": { "publishIntervalSecs": {
"label": "Map Report Publish Interval (s)", "label": "Интервал публикации отчёта (с)",
"description": "Interval in seconds to publish map reports" "description": "Интервал в секундах для публикации отчётов карты"
}, },
"positionPrecision": { "positionPrecision": {
"label": "Approximate Location", "label": "Приблизительное местоположение",
"description": "Position shared will be accurate within this distance", "description": "Передаваемая позиция будет точной в пределах этого расстояния",
"options": { "options": {
"metric_km23": "Within 23 km", "metric_km23": "В пределах 23 км",
"metric_km12": "Within 12 km", "metric_km12": "В пределах 12 км",
"metric_km5_8": "Within 5.8 km", "metric_km5_8": "В пределах 5,8 км",
"metric_km2_9": "Within 2.9 km", "metric_km2_9": "В пределах 2,9 км",
"metric_km1_5": "Within 1.5 km", "metric_km1_5": "В пределах 1,5 км",
"metric_m700": "Within 700 m", "metric_m700": "В пределах 700 м",
"metric_m350": "Within 350 m", "metric_m350": "В пределах 350 м",
"metric_m200": "Within 200 m", "metric_m200": "В пределах 200 м",
"metric_m90": "Within 90 m", "metric_m90": "В пределах 90 м",
"metric_m50": "Within 50 m", "metric_m50": "В пределах 50 м",
"imperial_mi15": "Within 15 miles", "imperial_mi15": "В пределах 15 миль",
"imperial_mi7_3": "Within 7.3 miles", "imperial_mi7_3": "В пределах 7,3 мили",
"imperial_mi3_6": "Within 3.6 miles", "imperial_mi3_6": "В пределах 3,6 мили",
"imperial_mi1_8": "Within 1.8 miles", "imperial_mi1_8": "В пределах 1,8 мили",
"imperial_mi0_9": "Within 0.9 miles", "imperial_mi0_9": "В пределах 0,9 мили",
"imperial_mi0_5": "Within 0.5 miles", "imperial_mi0_5": "В пределах 0,5 мили",
"imperial_mi0_2": "Within 0.2 miles", "imperial_mi0_2": "В пределах 0,2 мили",
"imperial_ft600": "Within 600 feet", "imperial_ft600": "В пределах 600 футов",
"imperial_ft300": "Within 300 feet", "imperial_ft300": "В пределах 300 футов",
"imperial_ft150": "Within 150 feet" "imperial_ft150": "В пределах 150 футов"
} }
} }
} }
}, },
"neighborInfo": { "neighborInfo": {
"title": "Neighbor Info Settings", "title": "Настройки информации о соседях",
"description": "Settings for the Neighbor Info module", "description": "Настройки модуля информации о соседях",
"enabled": { "enabled": {
"label": "Включено", "label": "Включено",
"description": "Enable or disable Neighbor Info Module" "description": "Включить или отключить модуль информации о соседях"
}, },
"updateInterval": { "updateInterval": {
"label": "Интервал обновления", "label": "Интервал обновления",
"description": "Interval in seconds of how often we should try to send our Neighbor Info to the mesh" "description": "Интервал в секундах между попытками отправки информации о соседях по mesh-сети"
} }
}, },
"paxcounter": { "paxcounter": {
"title": "Paxcounter Settings", "title": "Настройки Paxcounter",
"description": "Settings for the Paxcounter module", "description": "Настройки модуля Paxcounter",
"enabled": { "enabled": {
"label": "Module Enabled", "label": "Модуль включён",
"description": "Enable Paxcounter" "description": "Включить Paxcounter"
}, },
"paxcounterUpdateInterval": { "paxcounterUpdateInterval": {
"label": "Update Interval (seconds)", "label": "Интервал обновления (сек.)",
"description": "How long to wait between sending paxcounter packets" "description": "Сколько ждать между отправкой пакетов Paxcounter"
}, },
"wifiThreshold": { "wifiThreshold": {
"label": "WiFi RSSI Threshold", "label": "Порог WiFi RSSI",
"description": "At what WiFi RSSI level should the counter increase. Defaults to -80." "description": "При каком уровне WiFi RSSI увеличивать счётчик. По умолчанию -80."
}, },
"bleThreshold": { "bleThreshold": {
"label": "BLE RSSI Threshold", "label": "Порог BLE RSSI",
"description": "At what BLE RSSI level should the counter increase. Defaults to -80." "description": "При каком уровне BLE RSSI увеличивать счётчик. По умолчанию -80."
} }
}, },
"rangeTest": { "rangeTest": {
"title": "Range Test Settings", "title": "Настройки теста дальности",
"description": "Settings for the Range Test module", "description": "Настройки модуля теста дальности",
"enabled": { "enabled": {
"label": "Module Enabled", "label": "Модуль включён",
"description": "Enable Range Test" "description": "Включить тест дальности"
}, },
"sender": { "sender": {
"label": "Message Interval", "label": "Интервал сообщений",
"description": "How long to wait between sending test packets" "description": "Сколько ждать между отправкой тестовых пакетов"
}, },
"save": { "save": {
"label": "Save CSV to storage", "label": "Сохранять CSV в хранилище",
"description": "ESP32 Only" "description": "Только ESP32"
} }
}, },
"serial": { "serial": {
"title": "Serial Settings", "title": "Настройки COM-порта",
"description": "Settings for the Serial module", "description": "Настройки модуля COM-порта",
"enabled": { "enabled": {
"label": "Module Enabled", "label": "Модуль включён",
"description": "Enable Serial output" "description": "Включить вывод в COM-порт"
}, },
"echo": { "echo": {
"label": "Echo", "label": "Эхо",
"description": "Any packets you send will be echoed back to your device" "description": "Все отправляемые вами пакеты будут возвращаться на устройство"
}, },
"rxd": { "rxd": {
"label": "Receive Pin", "label": "Пин приёма",
"description": "Set the GPIO pin to the RXD pin you have set up." "description": "Установите GPIO-пин для RXD."
}, },
"txd": { "txd": {
"label": "Transmit Pin", "label": "Пин передачи",
"description": "Set the GPIO pin to the TXD pin you have set up." "description": "Установите GPIO-пин для TXD."
}, },
"baud": { "baud": {
"label": "Baud Rate", "label": "Скорость (бод)",
"description": "The serial baud rate" "description": "Скорость передачи по COM-порту"
}, },
"timeout": { "timeout": {
"label": "Время ожидания истекло", "label": "Тайм-аут",
"description": "Seconds to wait before we consider your packet as 'done'" "description": "Секунды ожидания, прежде чем считать пакет «завершённым»"
}, },
"mode": { "mode": {
"label": "Mode", "label": "Режим",
"description": "Select Mode" "description": "Выберите режим"
}, },
"overrideConsoleSerialPort": { "overrideConsoleSerialPort": {
"label": "Override Console Serial Port", "label": "Переопределить консольный COM-порт",
"description": "If you have a serial port connected to the console, this will override it." "description": "Если к консоли подключён COM-порт, этот параметр его переопределит."
} }
}, },
"storeForward": { "storeForward": {
"title": "Store & Forward Settings", "title": "Настройки Store & Forward",
"description": "Settings for the Store & Forward module", "description": "Настройки модуля Store & Forward",
"enabled": { "enabled": {
"label": "Module Enabled", "label": "Модуль включён",
"description": "Enable Store & Forward" "description": "Включить Store & Forward"
}, },
"heartbeat": { "heartbeat": {
"label": "Heartbeat Enabled", "label": "Heartbeat включён",
"description": "Enable Store & Forward heartbeat" "description": "Включить heartbeat Store & Forward"
}, },
"records": { "records": {
"label": "Количество записей", "label": "Количество записей",
"description": "Number of records to store" "description": "Количество записей для хранения"
}, },
"historyReturnMax": { "historyReturnMax": {
"label": "Макс возврат истории", "label": "Максимум возврата истории",
"description": "Max number of records to return" "description": "Максимальное число записей для возврата"
}, },
"historyReturnWindow": { "historyReturnWindow": {
"label": "Окно возврата истории", "label": "Окно возврата истории",
"description": "Return records from this time window (minutes)" "description": "Возвращать записи из этого временного окна (минуты)"
} }
}, },
"telemetry": { "telemetry": {
"title": "Telemetry Settings", "title": "Настройки телеметрии",
"description": "Settings for the Telemetry module", "description": "Настройки модуля телеметрии",
"deviceUpdateInterval": { "deviceUpdateInterval": {
"label": "Device Metrics", "label": "Метрики устройства",
"description": "Интервал обновления метрик устройства (в секундах)" "description": "Интервал обновления метрик устройства (секунды)"
}, },
"environmentUpdateInterval": { "environmentUpdateInterval": {
"label": "Интервал обновления метрик окружения (в секундах)", "label": "Интервал обновления метрик окружения (секунды)",
"description": "" "description": ""
}, },
"environmentMeasurementEnabled": { "environmentMeasurementEnabled": {
"label": "Module Enabled", "label": "Модуль включён",
"description": "Enable the Environment Telemetry" "description": "Включить телеметрию окружения"
}, },
"environmentScreenEnabled": { "environmentScreenEnabled": {
"label": "Displayed on Screen", "label": "Показывать на экране",
"description": "Show the Telemetry Module on the OLED" "description": "Показывать модуль телеметрии на OLED-экране"
}, },
"environmentDisplayFahrenheit": { "environmentDisplayFahrenheit": {
"label": "Display Fahrenheit", "label": "Показывать Фаренгейт",
"description": "Display temp in Fahrenheit" "description": "Показывать температуру в Фаренгейтах"
}, },
"airQualityEnabled": { "airQualityEnabled": {
"label": "Air Quality Enabled", "label": "Качество воздуха включено",
"description": "Enable the Air Quality Telemetry" "description": "Включить телеметрию качества воздуха"
}, },
"airQualityInterval": { "airQualityInterval": {
"label": "Air Quality Update Interval", "label": "Интервал обновления качества воздуха",
"description": "How often to send Air Quality data over the mesh" "description": "Как часто отправлять данные о качестве воздуха по mesh-сети"
}, },
"powerMeasurementEnabled": { "powerMeasurementEnabled": {
"label": "Power Measurement Enabled", "label": "Измерение питания включено",
"description": "Enable the Power Measurement Telemetry" "description": "Включить телеметрию измерения питания"
}, },
"powerUpdateInterval": { "powerUpdateInterval": {
"label": "Power Update Interval", "label": "Интервал обновления питания",
"description": "How often to send Power data over the mesh" "description": "Как часто отправлять данные о питании по mesh-сети"
}, },
"powerScreenEnabled": { "powerScreenEnabled": {
"label": "Power Screen Enabled", "label": "Экран питания включён",
"description": "Enable the Power Telemetry Screen" "description": "Включить экран телеметрии питания"
} }
} }
} }
@@ -1,59 +1,62 @@
{ {
"nodeDetail": { "nodeDetail": {
"publicKeyEnabled": { "publicKeyEnabled": {
"label": "Public Key Enabled" "label": "Публичный ключ включён"
}, },
"noPublicKey": { "noPublicKey": {
"label": "No Public Key" "label": "Нет публичного ключа"
}, },
"directMessage": { "directMessage": {
"label": "Direct Message {{shortName}}" "label": "Личное сообщение {{shortName}}"
}, },
"favorite": { "favorite": {
"label": "Избранное", "label": "Избранное",
"tooltip": "Add or remove this node from your favorites" "tooltip": "Добавить или удалить эту ноду из избранного"
}, },
"notFavorite": { "notFavorite": {
"label": "Not a Favorite" "label": "Не в избранном"
}, },
"error": { "error": {
"label": "Ошибки", "label": "Ошибка",
"text": "An error occurred while fetching node details. Please try again later." "text": "Произошла ошибка при получении сведений о ноде. Повторите попытку позже."
}, },
"status": { "status": {
"heard": "Heard", "heard": "Слышен",
"mqtt": "MQTT" "mqtt": "MQTT"
}, },
"elevation": { "elevation": {
"label": "Elevation" "label": "Высота"
}, },
"channelUtil": { "channelUtil": {
"label": "Channel Util" "label": "Загрузка канала"
}, },
"airtimeUtil": { "airtimeUtil": {
"label": "Airtime Util" "label": "Загрузка эфира"
} }
}, },
"nodesTable": { "nodesTable": {
"headings": { "headings": {
"longName": "Полное имя", "longName": "Полное имя",
"connection": "Соединения", "connection": "Подключение",
"lastHeard": "Last Heard", "lastHeard": "Последний раз слышен",
"encryption": "Encryption", "encryption": "Шифрование",
"model": "Model", "model": "Модель",
"macAddress": "MAC Address" "macAddress": "MAC-адрес"
}, },
"connectionStatus": { "connectionStatus": {
"direct": "Прямой", "direct": "Прямое",
"away": "away", "away": "от вас",
"viaMqtt": ", via MQTT" "viaMqtt": ", через MQTT"
},
"lastHeardStatus": {
"never": "Никогда"
} }
}, },
"actions": { "actions": {
"added": "Added", "added": "Добавлено",
"removed": "Removed", "removed": "Удалено",
"ignoreNode": "Ignore Node", "ignoreNode": "Игнорировать ноду",
"unignoreNode": "Unignore Node", "unignoreNode": "Перестать игнорировать ноду",
"requestPosition": "Request Position" "requestPosition": "Запросить позицию"
} }
} }
+89 -103
View File
@@ -1,111 +1,97 @@
{ {
"navigation": { "navigation": {
"title": "Navigation", "title": "Навигация",
"messages": "Сообщения", "messages": "Сообщения",
"map": "Карта", "map": "Карта",
"settings": "Настройки", "settings": "Настройки",
"channels": "Каналы", "channels": "Каналы",
"radioConfig": "Radio Config", "radioConfig": "Настройки радио",
"deviceConfig": "Настройки устройства", "deviceConfig": "Настройки устройства",
"moduleConfig": "Module Config", "moduleConfig": "Настройки модулей",
"manageConnections": "Manage Connections", "manageConnections": "Управление подключениями",
"nodes": "Узлы" "nodes": "Ноды"
}, },
"app": { "app": {
"title": "Meshtastic", "title": "Meshtastic",
"logo": "Meshtastic Logo" "logo": "Логотип Meshtastic"
}, },
"sidebar": { "sidebar": {
"collapseToggle": { "collapseToggle": {
"button": { "button": {
"open": "Open sidebar", "open": "Открыть боковую панель",
"close": "Close sidebar" "close": "Закрыть боковую панель"
} }
}, },
"deviceInfo": { "deviceInfo": {
"volts": "{{voltage}} volts", "volts": "{{voltage}} В",
"firmware": { "firmware": {
"title": "Прошивка", "title": "Прошивка",
"version": "v{{version}}", "version": "v{{version}}",
"buildDate": "Build date: {{date}}" "buildDate": "Дата сборки: {{date}}"
} }
} }
}, },
"batteryStatus": { "batteryStatus": {
"charging": "{{level}}% charging", "charging": "{{level}}% зарядки",
"pluggedIn": "Plugged in", "pluggedIn": "Подключено к питанию",
"title": "Батарея" "title": "Батарея"
}, },
"search": { "search": {
"nodes": "Search nodes...", "nodes": "Поиск нод...",
"channels": "Search channels...", "channels": "Поиск каналов...",
"commandPalette": "Search commands..." "commandPalette": "Поиск команд..."
}, },
"toast": { "toast": {
"positionRequestSent": { "positionRequestSent": { "title": "Запрос позиции отправлен." },
"title": "Position request sent." "requestingPosition": { "title": "Запрашиваем позицию, пожалуйста, подождите..." },
}, "sendingTraceroute": { "title": "Отправляем трассировку, пожалуйста, подождите..." },
"requestingPosition": { "tracerouteSent": { "title": "Трассировка отправлена." },
"title": "Requesting position, please wait..." "savedChannel": { "title": "Канал сохранён: {{channelName}}" },
},
"sendingTraceroute": {
"title": "Sending Traceroute, please wait..."
},
"tracerouteSent": {
"title": "Traceroute sent."
},
"savedChannel": {
"title": "Saved Channel: {{channelName}}"
},
"messages": { "messages": {
"pkiEncryption": { "pkiEncryption": { "title": "Чат использует шифрование PKI." },
"title": "Chat is using PKI encryption." "pskEncryption": { "title": "Чат использует шифрование PSK." }
},
"pskEncryption": {
"title": "Chat is using PSK encryption."
}
}, },
"configSaveError": { "configSaveError": {
"title": "Error Saving Config", "title": "Ошибка сохранения настроек",
"description": "An error occurred while saving the configuration." "description": "При сохранении настроек произошла ошибка."
}, },
"validationError": { "validationError": {
"title": "Config Errors Exist", "title": "Есть ошибки в настройках",
"description": "Please fix the configuration errors before saving." "description": "Исправьте ошибки конфигурации перед сохранением."
}, },
"saveSuccess": { "saveSuccess": {
"title": "Saving Config", "title": "Сохранение настроек",
"description": "The configuration change {{case}} has been saved." "description": "Изменение конфигурации {{case}} сохранено."
}, },
"saveAllSuccess": { "saveAllSuccess": {
"title": "Saved", "title": "Сохранено",
"description": "All configuration changes have been saved." "description": "Все изменения конфигурации сохранены."
}, },
"favoriteNode": { "favoriteNode": {
"title": "{{action}} {{nodeName}} {{direction}} favorites.", "title": "{{action}} {{nodeName}} {{direction}}",
"action": { "action": {
"added": "Added", "added": "Добавлено",
"removed": "Removed", "removed": "Удалено",
"to": "to", "to": "в избранное",
"from": "from" "from": "из избранного"
} }
}, },
"ignoreNode": { "ignoreNode": {
"title": "{{action}} {{nodeName}} {{direction}} ignore list", "title": "{{action}} {{nodeName}} {{direction}}",
"action": { "action": {
"added": "Added", "added": "Добавлено",
"removed": "Removed", "removed": "Удалено",
"to": "to", "to": "в список игнорирования",
"from": "from" "from": "из списка игнорирования"
} }
} }
}, },
"notifications": { "notifications": {
"copied": { "copied": {
"label": "Copied!" "label": "Скопировано!"
}, },
"copyToClipboard": { "copyToClipboard": {
"label": "Copy to clipboard" "label": "Копировать в буфер обмена"
}, },
"hidePassword": { "hidePassword": {
"label": "Скрыть пароль" "label": "Скрыть пароль"
@@ -114,20 +100,20 @@
"label": "Показать пароль" "label": "Показать пароль"
}, },
"deliveryStatus": { "deliveryStatus": {
"delivered": "Delivered", "delivered": "Доставлено",
"failed": "Delivery Failed", "failed": "Доставка не удалась",
"waiting": "Waiting", "waiting": "Ожидание",
"unknown": "Неизвестно" "unknown": "Неизвестно"
} }
}, },
"general": { "general": {
"label": "General" "label": "Общие"
}, },
"hardware": { "hardware": {
"label": "Оборудование" "label": "Оборудование"
}, },
"metrics": { "metrics": {
"label": "Metrics" "label": "Метрики"
}, },
"role": { "role": {
"label": "Роль" "label": "Роль"
@@ -136,95 +122,95 @@
"label": "Фильтр" "label": "Фильтр"
}, },
"advanced": { "advanced": {
"label": "Расширенные" "label": "Дополнительно"
}, },
"clearInput": { "clearInput": {
"label": "Clear input" "label": "Очистить ввод"
}, },
"resetFilters": { "resetFilters": {
"label": "Reset Filters" "label": "Сбросить фильтры"
}, },
"nodeName": { "nodeName": {
"label": "Node name/number", "label": "Имя/номер ноды",
"placeholder": "Meshtastic 1234" "placeholder": "Meshtastic 1234"
}, },
"airtimeUtilization": { "airtimeUtilization": {
"label": "Airtime Utilization (%)", "label": "Загрузка эфира (%)",
"short": "Airtime Util. (%)" "short": "Загрузка эф. (%)"
}, },
"batteryLevel": { "batteryLevel": {
"label": "Battery level (%)", "label": "Уровень батареи (%)",
"labelText": "Battery level (%): {{value}}" "labelText": "Уровень батареи (%): {{value}}"
}, },
"batteryVoltage": { "batteryVoltage": {
"label": "Battery voltage (V)", "label": "Напряжение батареи (В)",
"title": "Напряжение" "title": "Напряжение"
}, },
"channelUtilization": { "channelUtilization": {
"label": "Channel Utilization (%)", "label": "Загрузка канала (%)",
"short": "Channel Util. (%)" "short": "Загрузка кан. (%)"
}, },
"hops": { "hops": {
"direct": "Прямой", "direct": "Прямой",
"label": "Number of hops", "label": "Количество прыжков",
"text": "Number of hops: {{value}}" "text": "Количество прыжков: {{value}}"
}, },
"lastHeard": { "lastHeard": {
"label": "Последний раз слышен", "label": "Последний раз слышен",
"labelText": "Last heard: {{value}}", "labelText": "Последний раз слышен: {{value}}",
"nowLabel": "Now" "nowLabel": "Сейчас"
}, },
"snr": { "snr": {
"label": "SNR (db)" "label": "SNR (дБ)"
}, },
"favorites": { "favorites": {
"label": "Favorites" "label": "Избранное"
}, },
"hide": { "hide": {
"label": "Hide" "label": "Скрыть"
}, },
"showOnly": { "showOnly": {
"label": "Show Only" "label": "Показывать только"
}, },
"viaMqtt": { "viaMqtt": {
"label": "Connected via MQTT" "label": "Подключено через MQTT"
}, },
"hopsUnknown": { "hopsUnknown": {
"label": "Unknown number of hops" "label": "Неизвестное число прыжков"
}, },
"showUnheard": { "showUnheard": {
"label": "Unknown last heard" "label": "Неизвестно время последнего приёма"
}, },
"language": { "languagePicker": {
"label": "Язык", "label": "Язык",
"changeLanguage": "Change Language" "changeLanguage": "Изменить язык"
}, },
"theme": { "theme": {
"dark": "Темная", "dark": "Тёмная",
"light": "Светлая", "light": "Светлая",
"system": "Automatic", "system": "Автоматически",
"changeTheme": "Change Color Scheme" "changeTheme": "Изменить цветовую схему"
}, },
"errorPage": { "errorPage": {
"title": "This is a little embarrassing...", "title": "Это немного неловко...",
"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.", "description1": "Очень жаль, но в веб-клиенте произошла ошибка, из-за которой он аварийно завершился. <br /> Этого не должно быть, и мы работаем над исправлением.",
"description2": "The best way to prevent this from happening again to you or anyone else is to report the issue to us.", "description2": "Лучший способ предотвратить это в будущем — сообщить нам о проблеме.",
"reportInstructions": "Please include the following information in your report:", "reportInstructions": "Пожалуйста, включите в отчёт следующую информацию:",
"reportSteps": { "reportSteps": {
"step1": "What you were doing when the error occurred", "step1": "Что вы делали, когда произошла ошибка",
"step2": "What you expected to happen", "step2": "Что вы ожидали",
"step3": "What actually happened", "step3": "Что произошло на самом деле",
"step4": "Any other relevant information" "step4": "Любую другую важную информацию"
}, },
"reportLink": "You can report the issue to our <0>GitHub</0>", "reportLink": "Вы можете сообщить о проблеме в нашем <0>GitHub</0>",
"connectionsLink": "Return to the <0>connections</0>", "connectionsLink": "Вернуться к <0>подключениям</0>",
"detailsSummary": "Error Details", "detailsSummary": "Детали ошибки",
"errorMessageLabel": "Error message:", "errorMessageLabel": "Сообщение об ошибке:",
"stackTraceLabel": "Stack trace:", "stackTraceLabel": "Стек вызовов:",
"fallbackError": "{{error}}" "fallbackError": "{{error}}"
}, },
"footer": { "footer": {
"text": "Powered by <0>▲ Vercel</0> | Meshtastic® is a registered trademark of Meshtastic LLC. | <1>Legal Information</1>", "text": "Работает на <0>▲ Vercel</0> | Meshtastic® — зарегистрированный товарный знак Meshtastic LLC. | <1>Юридическая информация</1>",
"commitSha": "Commit SHA: {{sha}}" "commitSha": "SHA коммита: {{sha}}"
} }
} }
+2
View File
@@ -17,6 +17,7 @@ export const supportedLanguages: Lang[] = [
{ code: "de", name: "Deutsch", flag: "🇩🇪" }, { code: "de", name: "Deutsch", flag: "🇩🇪" },
{ code: "en", name: "English", flag: "🇺🇸" }, { code: "en", name: "English", flag: "🇺🇸" },
{ code: "fr", name: "Français", flag: "🇫🇷" }, { code: "fr", name: "Français", flag: "🇫🇷" },
{ code: "ru", name: "Русский", flag: "🇷🇺" },
{ code: "sv", name: "Svenska", flag: "🇸🇪" }, { code: "sv", name: "Svenska", flag: "🇸🇪" },
]; ];
@@ -43,6 +44,7 @@ i18next
default: [FALLBACK_LANGUAGE_CODE], default: [FALLBACK_LANGUAGE_CODE],
fi: ["fi-FI", FALLBACK_LANGUAGE_CODE], fi: ["fi-FI", FALLBACK_LANGUAGE_CODE],
fr: ["fr-FR", FALLBACK_LANGUAGE_CODE], fr: ["fr-FR", FALLBACK_LANGUAGE_CODE],
ru: ["ru-RU", FALLBACK_LANGUAGE_CODE],
sv: ["sv-SE", FALLBACK_LANGUAGE_CODE], sv: ["sv-SE", FALLBACK_LANGUAGE_CODE],
de: ["de-DE", FALLBACK_LANGUAGE_CODE], de: ["de-DE", FALLBACK_LANGUAGE_CODE],
}, },