From cd8347d20ffa2e185e611262378f57e2cae767cb Mon Sep 17 00:00:00 2001 From: Izzotop <1680033+Izzotop@users.noreply.github.com> Date: Thu, 9 Nov 2023 16:03:40 +0300 Subject: [PATCH] Add Russian language --- ui/public/locales/en/translation.json | 4 +- ui/public/locales/ru/translation.json | 224 ++++++++++++++++++ .../LanguageSelect/LanguageSelect.jsx | 1 + ui/src/i18n.js | 2 +- 4 files changed, 228 insertions(+), 3 deletions(-) create mode 100644 ui/public/locales/ru/translation.json diff --git a/ui/public/locales/en/translation.json b/ui/public/locales/en/translation.json index 34488218..13c6f375 100644 --- a/ui/public/locales/en/translation.json +++ b/ui/public/locales/en/translation.json @@ -23,7 +23,7 @@ }, "dashboard": { "title": "Dashboard", - "heading": "Overview of your video surveilance", + "heading": "Overview of your video surveillance", "number_of_days": "Number of days", "total_recordings": "Total recordings", "connected": "Connected", @@ -151,7 +151,7 @@ "stun_turn_description_webrtc": "Forward h264 stream through MQTT", "stun_turn_transcode": "Transcode stream", "stun_turn_description_transcode": "Convert stream to a lower resolution", - "stun_turn_downscale": "Downscale resolution (in % or original resolution)", + "stun_turn_downscale": "Downscale resolution (in % of original resolution)", "mqtt": "MQTT", "description_mqtt": "A MQTT broker is used to communicate from", "description2_mqtt": "to the Kerberos Agent, to achieve for example livestreaming or ONVIF (PTZ) capabilities.", diff --git a/ui/public/locales/ru/translation.json b/ui/public/locales/ru/translation.json new file mode 100644 index 00000000..3b2f3b1a --- /dev/null +++ b/ui/public/locales/ru/translation.json @@ -0,0 +1,224 @@ +{ + "breadcrumb": { + "watch_recordings": "Смотреть записи", + "configure": "Настроить" + }, + "buttons": { + "save": "Сохранить", + "verify_connection": "Проверить подключение" + }, + "navigation": { + "profile": "Профиль", + "admin": "admin", + "management": "Управление", + "dashboard": "Панель", + "recordings": "Записи", + "settings": "Настройки", + "help_support": "Помощь & Поддержка", + "swagger": "Swagger API", + "documentation": "Документация", + "ui_library": "UI Библиотека", + "layout": "Язык & Макет ", + "choose_language": "Выбрать язык" + }, + "dashboard": { + "title": "Панель", + "heading": "Обзор системы видеонаблюдения", + "number_of_days": "Количество дней", + "total_recordings": "Всего записей", + "connected": "Подключён", + "not_connected": "Не подключён", + "offline_mode": "Оффлайн режим", + "latest_events": "Последние события", + "configure_connection": "Настроить подключение", + "no_events": "Нет событий", + "no_events_description": "Записи не найдены, убедитесь, что ваш Kerberos Agent правильно настроен.", + "motion_detected": "Обнаружено движение", + "live_view": "Прямая трансляция", + "loading_live_view": "Загрузка трансляции", + "loading_live_view_description": "Подождите, мы загружаем сюда изображение в реальном времени. Если вы не настроили подключение камеры, обновите его на страницах настроек.", + "time": "Время", + "description": "Описание", + "name": "Название" + }, + "recordings": { + "title": "Записи", + "heading": "Все ваши записи в одном месте", + "search_media": "Поиск записи" + }, + "settings": { + "title": "Настройки", + "heading": "Обзор настроек камеры и агента", + "submenu": { + "all": "Все", + "overview": "Обзор", + "camera": "Камера", + "recording": "Запись", + "streaming": "Потоковое вещание", + "conditions": "Условия", + "persistence": "Хранилище" + }, + "info": { + "kerberos_hub_demo": "Посмотрите на демо, чтобы увидеть Kerberos Hub в действии!", + "configuration_updated_success": "Настройки успешно обновлены.", + "configuration_updated_error": "При сохранении что-то пошло не так.", + "verify_hub": "Проверка настроек Kerberos Hub.", + "verify_hub_success": "Настройки Kerberos Hub успешно проверены.", + "verify_hub_error": "Что-то пошло не так при проверке концентратора Kerberos Hub", + "verify_persistence": "Проверка настроек хранилища.", + "verify_persistence_success": "Настройки хранилища успешно проверены.", + "verify_persistence_error": "Что-то пошло не так при проверке хранилища", + "verify_camera": "Проверка настроек камеры.", + "verify_camera_success": "Настройки камеры успешно проверены.", + "verify_camera_error": "Что-то пошло не так при проверке настроек камеры", + "verify_onvif": "Проверка настроек ONVIF.", + "verify_onvif_success": "Настройки ONVIF успешно проверены.", + "verify_onvif_error": "Что-то пошло не так при проверке настроек ONVIF" + }, + "overview": { + "general": "Главная", + "description_general": "Общие настройки Kerberos Agent", + "key": "Ключ", + "camera_name": "Название камеры", + "timezone": "Часовой пояс", + "select_timezone": "Выберите часовой пояс", + "advanced_configuration": "Расширенные настройки", + "description_advanced_configuration": "Расширенные настройки для включения или отключения определенных частей Kerberos Agent", + "offline_mode": "Автономный режим", + "description_offline_mode": "Отключить весь исходящий трафик", + "encryption": "Шифрование", + "description_encryption": "Включите шифрование для всего исходящего трафика. MQTT-сообщения и/или записи будут зашифрованы с использованием AES-256. Для подписи используется закрытый ключ.", + "encryption_enabled": "Включить шифрование MQTT", + "description_encryption_enabled": "Включает шифрование для всех сообщений MQTT.", + "encryption_recordings_enabled": "Включить шифрование записей", + "description_encryption_recordings_enabled": "Включает шифрование для всех записей.", + "encryption_fingerprint": "Отпечаток", + "encryption_privatekey": "Закрытый ключ", + "encryption_symmetrickey": "Симметричный ключ" + }, + "camera": { + "camera": "Камера", + "description_camera": "Настройки камеры необходимы для установки соединения с выбранной камерой.", + "only_h264": "В настоящее время поддерживаются только потоки H264 RTSP.", + "rtsp_url": "Адрес основного потока RTSP", + "rtsp_h264": "Подключение к камере по протоколу H264 RTSP.", + "sub_rtsp_url": "Адрес дополнительного потока RTSP (используется для прямой трансляции)", + "sub_rtsp_h264": "Дополнительное RTSP-соединение с низким разрешением камеры.", + "onvif": "ONVIF", + "description_onvif": "Учетные данные для связи по протоколу ONVIF. Они используются для PTZ или других возможностей, предоставляемых камерой.", + "onvif_xaddr": "ONVIF xaddr", + "onvif_username": "ONVIF пользователь", + "onvif_password": "ONVIF пароль", + "verify_connection": "Проверка основного соединения", + "verify_sub_connection": "Проверка дополнительного подключения" + }, + "recording": { + "recording": "Запись", + "description_recording": "Укажите, как вы хотите вести запись. Непрерывная круглосуточная запись или запись по движению.", + "continuous_recording": "Непрерывная запись", + "description_continuous_recording": "Осуществлять 24/7 запись или запись по движению.", + "max_duration": "максимальная продолжительность видео (секунд)", + "description_max_duration": "Максимальная продолжительность записи.", + "pre_recording": "Предзапись (секунд)", + "description_pre_recording": "Секунд до наступления события.", + "post_recording": "Записывать после (секунд)", + "description_post_recording": "Секунд после наступления события.", + "threshold": "Уровень срабатывания записи (пикселей)", + "description_threshold": "Количество пикселей, измененных для записи", + "autoclean": "Автоочистка", + "description_autoclean": "Укажите, может ли Kerberos Agent очищать записи при достижении определенного объема памяти (МБ). При этом по достижении указанной емкости будут удаляться самые старые записи.", + "autoclean_enable": "Включить автоматическую очистку", + "autoclean_description_enable": "При достижении емкости удаляется самая старая запись.", + "autoclean_max_directory_size": "Максимальный размер каталога (МБ)", + "autoclean_description_max_directory_size": "Максимальное количество хранимых мегабайт записей.", + "fragmentedrecordings": "Фрагментированные записи", + "description_fragmentedrecordings": "Когда записи фрагментированы, они подходят для HLS-потока. При включении контейнер MP4 будет выглядеть несколько иначе.", + "fragmentedrecordings_enable": "Включить фрагментацию", + "fragmentedrecordings_description_enable": "Фрагментированные записи необходимы для HLS.", + "fragmentedrecordings_duration": "продолжительность фрагмента", + "fragmentedrecordings_description_duration": "Продолжительность одного фрагмента." + }, + "streaming": { + "stun_turn": "STUN/TURN для WebRTC", + "description_stun_turn": "Для организации трансляций в полном разрешении мы используем технологию WebRTC. Одной из ключевых возможностей является функция ICE-candidate, которая позволяет обходить NAT, используя концепции STUN/TURN.", + "stun_server": "STUN сервер", + "turn_server": "TURN сервер", + "turn_username": "Имя пользователя", + "turn_password": "Пароль", + "stun_turn_forward": "Переадресация и транскодирование", + "stun_turn_description_forward": "Оптимизация и усовершенствование связи TURN/STUN.", + "stun_turn_webrtc": "Переадресация на WebRTC-брокера", + "stun_turn_description_webrtc": "Передача потока h264 через MQTT", + "stun_turn_transcode": "Транскодирование потока", + "stun_turn_description_transcode": "Преобразование потока в меньшее разрешение", + "stun_turn_downscale": "Уменьшение разрешения (в % от исходного разрешения)", + "mqtt": "MQTT", + "description_mqtt": "Брокер MQTT используется для обмена данными с", + "description2_mqtt": "к Kerberos Agent, чтобы, например, получить возможность трансляции видео или ONVIF (PTZ).", + "mqtt_brokeruri": "Адрес брокера", + "mqtt_username": "Имя пользователя", + "mqtt_password": "Пароль" + }, + "conditions": { + "timeofinterest": "Время интереса", + "description_timeofinterest": "Производить запись только в определенные временные интервалы (в зависимости от часового пояса).", + "timeofinterest_enabled": "Включено", + "timeofinterest_description_enabled": "Если эта функция включена, то можно указать временные окна", + "sunday": "Воскресенье", + "monday": "Понедельник", + "tuesday": "Вторник", + "wednesday": "Среда", + "thursday": "Четверг", + "friday": "Пятница", + "saturday": "Суббота", + "externalcondition": "Внешнее условия", + "description_externalcondition": "В зависимости от внешнего веб-сервиса запись может быть включена или отключена.", + "regionofinterest": "Область интереса", + "description_regionofinterest": "Если задать одну или несколько областей, то движение будет отслеживаться только в заданных областях." + }, + "persistence": { + "kerberoshub": "Kerberos Hub", + "description_kerberoshub": "Kerberos Agent'ы могут отправлять heartbeat сообщения в центральный", + "description2_kerberoshub": "узел. Heartbeat и другая необходимая информация синхронизируются с Kerberos Hub для отображения информации о видеоландшафте в реальном времени.", + "persistence": "Хранилище", + "saasoffering": "Kerberos Hub (SAAS предложение)", + "description_persistence": "Возможность хранения записей - это начало всего. Вы можете выбрать один из наших вариантов", + "description2_persistence": ", или стороннего провайдера", + "select_persistence": "Выберите хранилище", + "kerberoshub_proxyurl": "Kerberos Hub Proxy URL", + "kerberoshub_description_proxyurl": "Конечная точка Proxy для загрузки записей.", + "kerberoshub_apiurl": "Kerberos Hub API URL", + "kerberoshub_description_apiurl": "Конечная точка API для загрузки записей.", + "kerberoshub_publickey": "Открытый ключ", + "kerberoshub_description_publickey": "Открытый ключ, присвоенный вашей учетной записи Kerberos Hub.", + "kerberoshub_privatekey": "Закрытый ключ", + "kerberoshub_description_privatekey": "Закрытый ключ, присвоенный вашей учетной записи Kerberos Hub.", + "kerberoshub_site": "Сайт", + "kerberoshub_description_site": "Идентификатор сайта, к которому принадлежат агенты Kerberos (Agent) в Kerberos Hub.", + "kerberoshub_region": "Регион", + "kerberoshub_description_region": "Регион, в котором хранятся наши записи.", + "kerberoshub_bucket": "Bucket", + "kerberoshub_description_bucket": "Bucket, в котором мы храним наши записи.", + "kerberoshub_username": "Имя пользователя/каталог (должно соответствовать имени пользователя в Kerberos Hub)", + "kerberoshub_description_username": "Имя пользователя вашей учетной записи Kerberos Hub.", + "kerberosvault_apiurl": "Kerberos Vault API URL", + "kerberosvault_description_apiurl": "The Kerberos Vault API", + "kerberosvault_provider": "Провайдер", + "kerberosvault_description_provider": "Провайдер, которому будут отправляться ваши записи.", + "kerberosvault_directory": "Каталог (должен совпадать с именем пользователя в Kerberos Hub)", + "kerberosvault_description_directory": "Подкаталог, в котором будут храниться записи у вашего провайдера.", + "kerberosvault_accesskey": "Ключ доступа", + "kerberosvault_description_accesskey": "Ключ доступа вашей учетной записи Kerberos Vault.", + "kerberosvault_secretkey": "Секретный ключ", + "kerberosvault_description_secretkey": "Секретный ключ учетной записи Kerberos Vault.", + "dropbox_directory": "Каталог", + "dropbox_description_directory": "Подкаталог, в котором будут храниться записи в вашем аккаунте Dropbox.", + "dropbox_accesstoken": "Токен доступа", + "dropbox_description_accesstoken": "Токен доступа вашего аккаунта/приложения Dropbox.", + "verify_connection": "Проверка соединения", + "remove_after_upload": "Как только записи будут загружены на какой-либо сервер, вы, возможно, захотите удалить их из локального агента Kerberos.", + "remove_after_upload_description": "Удаление записей после их успешной загрузки.", + "remove_after_upload_enabled": "Включено удаление при выгрузке" + } + } +} diff --git a/ui/src/components/LanguageSelect/LanguageSelect.jsx b/ui/src/components/LanguageSelect/LanguageSelect.jsx index 8c9ded9e..92ebed82 100644 --- a/ui/src/components/LanguageSelect/LanguageSelect.jsx +++ b/ui/src/components/LanguageSelect/LanguageSelect.jsx @@ -25,6 +25,7 @@ const LanguageSelect = () => { es: { label: 'Español', dir: 'ltr', active: false }, ja: { label: '日本', dir: 'rlt', active: false }, hi: { label: 'हिंदी', dir: 'ltr', active: false }, + ru: { label: 'Русский', dir: 'ltr', active: false }, }; if (!languageMap[selected]) { diff --git a/ui/src/i18n.js b/ui/src/i18n.js index df60712e..029487c3 100644 --- a/ui/src/i18n.js +++ b/ui/src/i18n.js @@ -14,7 +14,7 @@ i18n escapeValue: false, }, load: 'languageOnly', - whitelist: ['de', 'en', 'nl', 'fr', 'pl', 'es', 'pt', 'ja'], + whitelist: ['de', 'en', 'nl', 'fr', 'pl', 'es', 'pt', 'ja', 'ru'], }); export default i18n;