From 8b413344e077ec3d8a40ed9411cc2d5e71a609ab Mon Sep 17 00:00:00 2001 From: polyzium Date: Fri, 23 Aug 2024 17:28:50 +0300 Subject: [PATCH] Add Russian language --- web/src/i18n/index.ts | 3 +- web/src/i18n/ru.ts | 164 ++++++++++++++++++ .../desktop/menu-phone/settings/language.tsx | 1 + .../pages/desktop/menu/settings/language.tsx | 1 + 4 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 web/src/i18n/ru.ts diff --git a/web/src/i18n/index.ts b/web/src/i18n/index.ts index f610389..3c32aa7 100644 --- a/web/src/i18n/index.ts +++ b/web/src/i18n/index.ts @@ -6,8 +6,9 @@ import { getLanguage } from '@/lib/localstorage.ts'; import { en } from './en'; import { fr } from './fr'; import { zh } from './zh'; +import { ru } from './ru'; -const resources = { en, fr, zh }; +const resources = { en, fr, ru, zh }; function getCurrentLanguage(): string { const languages = Object.keys(resources); diff --git a/web/src/i18n/ru.ts b/web/src/i18n/ru.ts new file mode 100644 index 0000000..5b68fba --- /dev/null +++ b/web/src/i18n/ru.ts @@ -0,0 +1,164 @@ +export const ru = { + translation: { + language: 'Язык', + changePassword: 'Изменить пароль', + logout: 'Выйти', + keyboard: 'Клавиатура', + images: 'Образы', + loading: 'Загрузка', + empty: 'Пусто', + settings: 'Настройки', + showMouse: 'Показать мышь', + hideMouse: 'Скрыть мышь', + power: 'Питание', + reset: 'Экстренная перезагрузка', + powerShort: 'Питание (короткое нажатие)', + powerLong: 'Питание (длинное нажатие)', + hddLed: 'Индикатор активности хранилища', + checkLibFailed: 'Не удалось проверить библиотеку среды выполнения, попробуйте еще раз', + updateLibFailed: 'Не удалось обновить библиотеку среды выполнения, попробуйте еще раз', + updatingLib: 'Обновление библиотеки среды выполнения. Пожалуйста, обновите страницу после обновления.', + checkForUpdate: 'Проверить обновления', + head: { + desktop: 'Удаленный рабочий стол', + login: 'Войти', + changePassword: 'Изменить пароль', + terminal: 'Терминал' + }, + auth: { + login: 'Войти', + placeholderUsername: 'Введите имя пользователя', + placeholderPassword: 'Введите пароль', + placeholderPassword2: 'Введите пароль снова', + noEmptyUsername: 'Имя пользователя не может быть пустым', + noEmptyPassword: 'Пароль не может быть пустым', + noAccount: 'Не удалось получить информацию о пользователе, пожалуйста, обновите веб-страницу или сбросьте пароль', + invalidUser: 'Неверное имя пользователя или пароль', + error: 'Непредвиденная ошибка', + changePassword: 'Изменить пароль', + differentPassword: 'Пароли не совпадают', + illegalUsername: 'Имя пользователя содержит недопустимые символы', + illegalPassword: 'Пароль содержит недопустимые символы', + forgetPassword: 'Забыли пароль?', + resetPassword: 'Сбросить пароль', + reset1: 'Если вы забыли пароль, выполните следующие действия для его восстановления:', + reset2: '1. Войдите в устройство NanoKVM по протоколу SSH;', + reset3: '2. Удалите файл на устройстве: ', + reset4: '3. Используйте учетную запись по умолчанию для входа в систему: ', + ok: 'ОК', + cancel: 'Отмена' + }, + screen: { + resolution: 'Разрешение', + fps: 'Частота кадров', + customizeFps: 'Настроить', + quality: 'Качество', + frameDetect: 'Экономия трафика', + frameDetectTip: + "Вычисляет разницу между кадрами и прекращает передачу видеопотока, если на экране удаленного узла не обнаружено никаких изменений." + }, + cursor: { + default: 'Курсор по умолчанию', + pointer: 'Курсор: указатель', + cell: 'Курсор: крест', + text: 'Курсор: выбор текста', + grab: 'Курсор: захват', + hide: 'Скрыть курсор', + mode: 'Режим мыши', + absolute: 'Абсолютный режим', + relative: 'Относительный режим', + requestPointer: 'Используется относительный режим. Нажмите на рабочий стол для захвата мыши.', + resetHid: 'Перезагрузить HID-подсистему' + }, + image: { + title: 'Образы', + loading: 'Загрузка...', + empty: 'Пусто', + tips: { + title: 'Как загрузить', + usb1: 'Подключите NanoKVM к вашему компьютеру через USB.', + usb2: 'Убедитесь что Виртуальный USB-накопитель смонтирован (Настройки - Виртуальный USB-накопитель).', + usb3: 'Откройте виртуальный USB-накопитель на вашем компьютере и скопируйте файл образа в корневую директорию USB-накопителя.', + scp1: 'Убедитесь что NanoKVM и ваш компьютер находятся в одной и той же сети.', + scp2: 'Откройте терминал на вашем компьютере и используйте команду scp чтобы загрузить файл образа в директорию /data, находящуюся на NanoKVM.', + scp3: 'Например: scp путь-к-образу root@ip-вашего-nanokvm:/data', + tfCard: 'Карта памяти', + tf1: 'Этот метод поддерживается на Linux-системах', + tf2: 'Извлеките карту памяти из NanoKVM (если у вас "полная" (Full) версия, сначала нужно разобрать корпус).', + tf3: 'Вставьте карту памяти в картридер и подключите его в свой компьютер.', + tf4: 'Скопируйте файл образа в директорию /data на карте памяти.', + tf5: 'Вставьте карту памяти в NanoKVM.' + }, + }, + script: { + title: 'Скрипты', + upload: 'Загрузить', + run: 'Выполнить', + runBackground: 'Выполнить в фоне', + runFailed: 'Не удалось выполнить', + attention: 'Внимание', + delDesc: 'Вы уверены, что хотите удалить этот файл?', + confirm: 'Да', + cancel: 'Нет', + delete: 'Удалить', + close: 'Закрыть' + }, + terminal: { + title: 'Терминал', + nanokvm: 'Терминал NanoKVM', + serial: 'Терминал COM-порта', + serialPort: 'COM-порт', + serialPortPlaceholder: 'Введите COM-порт', + baudrate: 'Скорость передачи', + confirm: 'ОК' + }, + wol: { + sending: 'Отправка команды...', + sent: 'Команда отправлена', + input: 'Введите MAC-адрес', + ok: 'ОК' + }, + about: { + title: 'О системе NanoKVM', + information: 'Информация', + ip: 'IP-адрес', + mdns: 'Доменное имя mDNS', + firmware: 'Версия ПО', + image: 'Версия прошивки', + deviceKey: 'Ключ устройства', + queryFailed: 'Запрос не удался', + community: 'Сообщество' + }, + update: { + title: 'Проверить обновления', + queryFailed: 'Получить версию не удалось', + updateFailed: 'Обновление не удалось. Пожалуйста, попробуйте еще раз.', + isLatest: 'У вас уже есть последняя версия.', + available: 'Доступно обновление. Вы уверены, что хотите обновить?', + updating: 'Начато обновление. Пожалуйста, подождите...', + confirm: 'Подтвердить', + cancel: 'Отмена' + }, + virtualDevice: { + network: 'Виртуальная сеть', + usb: 'Виртуальный USB-накопитель' + }, + tailscale: { + loading: 'Загрузка...', + notInstalled: 'Tailscale не найден! Пожалуйста, установите.', + install: 'Установить', + installing: 'Установка...', + urlPeriod: 'Этот адрес действителен в течение 10 минут', + installed: 'Tailscale уже установлен. Пожалуйста, войдите в систему.', + login: 'Войти', + failed: 'Не удалось установить', + retry: 'Пожалуйста, обновите и попробуйте снова, или попробуйте установить вручную', + download: 'Скачайте', + package: 'установочный пакет', + unzip: 'и разархивируйте его', + upTailscale: 'Переместите tailscale в каталог /usr/bin/ на NanoKVM', + upTailscaled: 'Переместите tailscaled в каталог /usr/sbin/ на NanoKVM', + refresh: 'Обновите текущую страницу' + } + } +}; diff --git a/web/src/pages/desktop/menu-phone/settings/language.tsx b/web/src/pages/desktop/menu-phone/settings/language.tsx index 511c936..c708663 100644 --- a/web/src/pages/desktop/menu-phone/settings/language.tsx +++ b/web/src/pages/desktop/menu-phone/settings/language.tsx @@ -18,6 +18,7 @@ export const Language = () => { const languageItems = [ { lng: 'en', name: 'English' }, { lng: 'fr', name: 'Français' }, + { lng: 'ru', name: 'Русский' }, { lng: 'zh', name: '中文' } ]; diff --git a/web/src/pages/desktop/menu/settings/language.tsx b/web/src/pages/desktop/menu/settings/language.tsx index 511c936..c708663 100644 --- a/web/src/pages/desktop/menu/settings/language.tsx +++ b/web/src/pages/desktop/menu/settings/language.tsx @@ -18,6 +18,7 @@ export const Language = () => { const languageItems = [ { lng: 'en', name: 'English' }, { lng: 'fr', name: 'Français' }, + { lng: 'ru', name: 'Русский' }, { lng: 'zh', name: '中文' } ];