From c62a18d823ca66acfa14e51d772496ac0079bb51 Mon Sep 17 00:00:00 2001 From: Tristan Yang Date: Wed, 15 Jan 2025 19:17:20 +0800 Subject: [PATCH] feat: ru lang --- package.json | 2 +- public/locales/ru/auth.json | 74 +++++ public/locales/ru/chat.json | 68 +++++ public/locales/ru/common.json | 95 +++++++ public/locales/ru/fav.json | 6 + public/locales/ru/file.json | 6 + public/locales/ru/member.json | 39 +++ public/locales/ru/setting.json | 328 +++++++++++++++++++++++ public/locales/ru/welcome.json | 39 +++ public/locales/ru/widget.json | 5 + src/routes/setting/Overview/Language.tsx | 5 +- src/routes/setting/Overview/language.tsx | 5 +- 12 files changed, 667 insertions(+), 5 deletions(-) create mode 100644 public/locales/ru/auth.json create mode 100644 public/locales/ru/chat.json create mode 100644 public/locales/ru/common.json create mode 100644 public/locales/ru/fav.json create mode 100644 public/locales/ru/file.json create mode 100644 public/locales/ru/member.json create mode 100644 public/locales/ru/setting.json create mode 100644 public/locales/ru/welcome.json create mode 100644 public/locales/ru/widget.json diff --git a/package.json b/package.json index 9af71081..f2a2f534 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vocechat-web", - "version": "0.8.9", + "version": "0.8.11", "homepage": "https://voce.chat", "dependencies": { "@metamask/onboarding": "^1.0.1", diff --git a/public/locales/ru/auth.json b/public/locales/ru/auth.json new file mode 100644 index 00000000..a2371289 --- /dev/null +++ b/public/locales/ru/auth.json @@ -0,0 +1,74 @@ +{ + "login": { + "title": "Войти в {{name}}", + "google": "Войти с помощью Google", + "github": "Войти с помощью GitHub", + "metamask": "Войти с помощью MetaMask", + "password": "Войти с паролем", + "oidc": "Войти с помощью OIDC", + "no_account": "У вас нет учетной записи?" + }, + "reg": { + "title": "Зарегистрируйтесь, чтобы {{name}}", + "google": "Зарегистрироваться с Google", + "github": "Зарегистрироваться с GitHub", + "metamask": "Зарегистрироваться с MetaMask", + "oidc": "Зарегистрироваться с OIDC", + "have_account": "Есть аккаунт?", + "input_name": "Как тебя зовут", + "input_name_tip": "Введите имя или псевдоним, чтобы люди знали, как вы хотите, чтобы вас называли. Ваше имя будет видно только тем, кто находится в тех пространствах, к которым вы присоединились." + }, + "logout": { + "title": "Выйти", + "desc": "Вы уверены, что хотите выйти из этой учетной записи?", + "clear_local": "Очистить локальные данные", + "role_changed": "Обнаружено, что ваша роль изменилась. Необходимо ли вам повторно войти в систему, чтобы изменения вступили в силу?", + "later": "Может быть позже" + }, + "continue": "Продолжить с электронной почтой", + "placeholder_name": "Введите свое имя", + "placeholder_email": "Введите свой адрес электронной почты", + "placeholder_pwd": "Введите пароль", + "placeholder_confirm_pwd": "Подтвердите пароль", + "check_email": "Проверьте свой почтовый ящик", + "check_email_desc": "Мы только что отправили волшебную ссылку на <0>{{email}}. После того, как она придет, она будет действительна в течение 15 минут.", + "back_sign_in": "Вернуться к Войти", + "welcome": "Добропожаловать в {{name}} сервер", + "guest_login_tip": "Пожалуйста, отсканируйте QR-код или войдите в систему, чтобы отправить сообщение.", + "enter": "Войти в систему", + "sign_in": "Войти", + "sign_up": "Зарегистрироваться", + "signing_up": "Регистрация", + "github_login_success": "GitHub Login Success!", + "github_logging_in": "GitHub Logging in...", + "github_cb_tip": "Пожалуйста, закройте это окно и верните окно виджета.", + "magic_link_expire": { + "title": "Волшебная ссылка недействительна или просрочена", + "desc": "Пожалуйста, запросите новую волшебную ссылку.", + "desc_close": "Вы можете закрыть это окно сейчас." + }, + "invite_mobile": { + "join": "Присоединяйтесь к нашему серверу", + "start_download": "Начните с загрузку VoceChat мобильное приложение", + "open": "Открыть VoceChat", + "have_already": "У вас уже есть приложение?" + }, + "invite_expire": { + "min30": "30 минут", + "h1": "1 час", + "h6": "6 часов", + "h12": "12 часов", + "d1": "1 день", + "d7": "7 дней", + "d30": "30 дней" + }, + "invite_times": { + "no_limit": "Нет лимита", + "time1": "1 использование", + "times5": "5 использует", + "times10": "10 использует", + "times25": "25 использует", + "times50": "50 использует", + "times100": "100 использует" + } +} diff --git a/public/locales/ru/chat.json b/public/locales/ru/chat.json new file mode 100644 index 00000000..c153c689 --- /dev/null +++ b/public/locales/ru/chat.json @@ -0,0 +1,68 @@ +{ + "pin": "Приколоть", + "pin_desc": "Хотите ли вы закрепить это сообщение?", + "pinned_msg": "Закрепленное сообщение", + "pin_empty_tip": "На этом канале пока нет закрепленных сообщений.", + "fav": "Любимый", + "fav_msg": "Сохраненное сообщение", + "fav_empty_tip": "На этом канале пока нет сохраненных сообщений.", + "channel_members": "Участники канала", + "add_channel_members": "Добавить участников", + "welcome_channel": "Добро пожаловать в {{name}}", + "welcome_desc": "Это начало #{{name}} канала.", + "edit_channel": "Редактировать канал", + + "channel_name": "Имя канала", + "private_channel": "Частный канал", + "create_channel": "Создать новый канал", + "create_channel_desc": "Это публичный канал, его могут видеть все члены команды.", + "create_private_channel_desc": "Это закрытый канал, присоединиться к которому смогут только избранные участники.", + "search_user_placeholder": "Введите имя пользователя для поиска", + "welcome_msg": "Добро пожаловать на канал {{name}}", + + "invite_title": "Добавить друзей в {{name}}", + "invite_by_email": "Пригласить по электронной почте", + "enable_smtp": "Сначала включите SMTP", + "send_invite_link": "Или отправьте ссылку-приглашение своим друзьям", + "share_invite_link": "Поделитесь этой ссылкой, чтобы пригласить людей на этот сервер.", + "invite_link_faq": "Неправильная ссылка для приглашения?", + "invite_link_edit": "Изменить ссылку приглашения", + "invite_link_setting_tip": "Срок действия ссылки-приглашения истекает через {{expire}}, максимальное количество использований: {{times}}", + "generate_new_link": "Создать новую ссылку", + + "send_to": "Отправить", + "edited": "отредактировано", + "license_tip": "Ваша лицензия достигла лимита, обновите лицензию или обратитесь к администратору!", + + "delete_msg_title": "Удалить сообщение", + "delete_msg_desc": "Вы уверены, что хотите удалить {{msg}}?", + "delete_msg_this": "это сообщение", + "delete_msg_these": "эти сообщения", + + "new_msg": "{{num}} новое сообщение", + "mark_read": "Отметить как прочитанное", + "pin_chat": "Закрепить чат", + "unpin_chat": "Открепить", + + "reply_msg_del": "Это сообщение было удалено.", + + "file": "Файл", + "image": "Изображение", + "forward": "Вперед", + "voice_message": "Голосовое сообщение", + "voice": "Голосовое чат", + "deafen": "Оглушить", + "undeafen": "Неглушить", + "mute": "Немой", + "unmute": "Включить звук", + "camera_on": "Включить камеру", + "camera_off": "Выключить камеру", + "leave_voice": "Покинуть голосовой чат", + "add_contact": "Добавить в контакты", + "block": "Блокировка", + "unblock": "Разблокировать", + "contact_tip": "Этот пользователь не в вашем контакте", + "contact_block_tip": "Этот пользователь был заблокирован вами", + "file_expired": "Файл просрочен", + "only_owner_can_send": "Только владелец канала может отправлять сообщения!" +} diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json new file mode 100644 index 00000000..0783c367 --- /dev/null +++ b/public/locales/ru/common.json @@ -0,0 +1,95 @@ +{ + "chat": "Чат", + "members": "Участники", + "favs": "Сохраненные элементы", + "files": "Файлы", + "setting": "Настройки", + "more": "Более", + "action": { + "login": "Войти", + "re_login": "Выйти", + "logout": "Выйти", + "change_avatar": "Изменять", + "cancel": "Отмена", + "dismiss": "Увольнять", + "search": "Поиск", + "search_user": "Поиск по имени", + "new_channel": "Новый канал", + "new_private_channel": "Новый частный канал", + "new_msg": "Новое сообщение", + "invite_people": "Пригласить людей", + "search_people": "Поиск людей", + "create": "Создавать", + "open": "Открыть", + "update": "Обновлять", + "upload": "Загрузить", + "done": "Сделанный", + "add": "Добавлять", + "yes": "Да", + "delete_channel": "Удалить канал", + "remove": "Удалять", + "remove_user": "Удалить пользователя", + "edit": "Редактировать", + "edit_msg": "Редактировать сообщение ", + "add_reaction": "Добавить в реакцию", + "add_to_fav": "Добавить в избранное", + "select": "Выбирать", + "forward": "Вперед", + "reply": "Отвечать", + "pin": "Закрепить это", + "unpin": "Открепить", + "send": "Отправлять", + "send_msg": "Сообщение", + "copy": "Копировать", + "copy_email": "Копировать письмо", + "mute": "Включить звук", + "unmute": "Включить звук", + "mark_read": "Отметить как прочитанное", + "hide_session": "Скрыть сессию", + "reload": "перезагрузка", + "install": "Установка", + "download_origin": "Скачать оригинал", + "close": "Закрыть", + "upgrade": "Обновление", + "view_pwd": "Посмотреть пароль", + "change_pwd": "Обновить пароль" + }, + "status": { + "uploading": "Загрузка" + }, + "tip": { + "email_msg_tip": "В вашем регионе заблокированы уведомления. Перейдите на версию Pro, чтобы использовать уведомления по электронной почте.", + "update": "Обновление успешно выполнено!", + "delete": "Удаление успешно выполнено!", + "reg": "Регистрация прошла успешно!", + "login": "Авторизация выполнена успешно!", + "logout": "Выйти успешно!", + "pin": "Закрепить сообщение удалось!", + "pwa_install_title": "Установить веб-приложение на рабочий стол?", + "pwa_install_desc": "Добавьте на рабочий стол для быстрого доступа к этому приложению." + }, + "new_version": "<0>New Version Available", + "mobile_app": "Check out our <0>Mobile APP", + "price": { + "pro": { + "title": "VoceChat Pro", + "desc": "", + "price": "$49" + }, + "supreme": { + "title": "VoceChat SDK Customization and Integration", + "desc": "", + "price": "" + } + }, + "server_update": { + "version_needed": "Для этой функции требуется серверная версия:<0>{{version}} по крайней мере 🚨 ", + "current_version": "Ваша текущая версия:<0>{{version}}", + "update_tip": "Пожалуйста, обновите сервер!", + "howto": "Как обновить сервер VoceChat" + }, + "inactive": { + "title": "Для VoceChat разрешена только одна активная вкладка.", + "desc": "Пожалуйста, перезагрузите эту страницу, чтобы продолжить использование этой вкладки или закройте ее." + } +} diff --git a/public/locales/ru/fav.json b/public/locales/ru/fav.json new file mode 100644 index 00000000..6d68c302 --- /dev/null +++ b/public/locales/ru/fav.json @@ -0,0 +1,6 @@ +{ + "all_items": "Все предметы", + "image": "Картинки", + "video": "Видео", + "audio": "Аудио" +} diff --git a/public/locales/ru/file.json b/public/locales/ru/file.json new file mode 100644 index 00000000..046da767 --- /dev/null +++ b/public/locales/ru/file.json @@ -0,0 +1,6 @@ +{ + "from": "От", + "channel": "Канал", + "type": "Тип", + "date": "Дата" +} diff --git a/public/locales/ru/member.json b/public/locales/ru/member.json new file mode 100644 index 00000000..02f76b72 --- /dev/null +++ b/public/locales/ru/member.json @@ -0,0 +1,39 @@ +{ + "username": "Имя пользователя", + "email": "Электронная почта", + "password": "Пароль", + "delete_account": "Удалить аккаунт", + "change_name": "Изменить имя пользователя", + "change_name_desc": "Введите новое имя пользователя", + "change_email": "Изменить адрес электронной почты", + "change_email_desc": "Введите новый адрес электронной почты.", + "change_pwd": "Изменить пароль", + "change_pwd_desc": "Введите текущий пароль и новый пароль", + "current_pwd": "Текущий пароль", + "new_pwd": "Новый пароль", + "confirm_new_pwd": "Подтвердите новый пароль", + + "manage_members": "Управление контактами", + "manage_tip": "Отключение вашей учетной записи означает, что вы сможете восстановить ее в любое время после выполнения этого действия.", + "admin": "Администратор", + "user": "Пользователь", + "copy_email": "Копировать письмо", + "send_msg": "Отправить сообщение", + "call": "Вызов", + "remove": "Удалить с сервера", + "remove_from_contact": "Удалить из контакта", + "remove_account": "Удалить аккаунт", + "remove_account_desc": "Вы уверены, что хотите удалить эту учетную запись?", + "remove_from_channel": "Удалить из канала", + "roles": "Роли", + "set_admin": "Администратор", + "set_normal": "Пользователь", + + "search_not_found": "Не найдено, или поиск этого пользователя запрещен.", + "search_by_id": "Поиск по идентификатору", + "search_by_id_ph": "Введите идентификатор пользователя", + "search_by_email": "Поиск по электронной почте", + "search_by_email_ph": "Введите адрес электронной почты пользователя", + "search_by_name": "Поиск по имени", + "search_by_name_ph": "Введите имя пользователя" +} diff --git a/public/locales/ru/setting.json b/public/locales/ru/setting.json new file mode 100644 index 00000000..6d2ffa57 --- /dev/null +++ b/public/locales/ru/setting.json @@ -0,0 +1,328 @@ +{ + "title": "Настройки", + "save_change": "Сохранить изменения", + "reset": "Перезагрузить", + "save_tip": "У вас есть несохраненные изменения!", + "nav": { + "general": "Общий", + "overview": "Обзор", + "members": "Участники", + "data_management": "Управление данными", + "auto_delete_msg": "Автоматическое удаление сообщений", + "user": "Пользоватль", + "my_account": "Мой аккаунт", + "config": "Конфигурация", + "bot": "Bot & Webhook", + "firebase": "Firebase", + "agora": "Agora", + "smtp": "SMTP", + "login_method": "Методы входа", + "third_app": "Вход третьей стороны", + "widget": "Виджет", + "license": "Лицензия", + "about": "About", + "api_doc": "API Documentation", + "version": "Версия" + }, + "channel": { + "leave": "Покинуть канал", + "leave_desc": "Вы уверены, что хотите покинуть этот канал?", + "transfer_desc": "Прежде чем покинуть канал, вам необходимо передать право собственности на него кому-то другому.", + "delete": "Удалить канал", + "delete_desc": "Вы уверены, что хотите удалить этот канал?", + "id": "Идентификатор канала", + "name": "Название канала", + "topic": "Тема канала", + "topic_placeholder": "Расскажите всем, как пользоваться этим каналом.", + "visibility": "Видимость канала", + "public": "Публичный", + "private": "Приватный", + "enable": "Давать возможность", + "disable": "Запрещать", + "allow": "Позволять", + "disallow": "Запретить", + "add_friend": "Добавить друга", + "dm_to_member": "DM для участника", + "show_email": "Показать электронную почту", + "only_owner": "Только владелец и администратор могут отправлять сообщения" + }, + "dm": { + "delete": "Удалить пользователя", + "delete_desc": "Вы уверены, что хотите удалить этого пользователя?" + }, + "overview": { + "title_feat": "Функции", + "name": "Имя сервера", + "desc": "Описание сервера", + "upload_desc": "Минимальный размер 128x128, мы рекомендуем для сервера не менее 512x512. Максимальный размер ограничен 5M.", + "sign_up": { + "title": "Регистрация по умолчанию", + "desc": "Кто может зарегистрироваться на этом сервере.", + "everyone": "Каждый", + "invite": "Только ссылка-приглашение" + }, + "user_msg_notify": { + "title": "Уведомление о новом сообщении по электронной почте", + "desc": "Вы можете управлять новыми сообщениями, если они отправлены по электронной почте." + }, + "server_msg_notify": { + "title": "Уведомление о новом сообщении по электронной почте (Server)", + "desc": "пользователи могут управлять новыми сообщениями, если они отправлены по электронной почте, предварительно включив SMTP.", + "delay_5_min": "", + "delay_15_min": "Каждые 5 минут", + "delay_1_hour": "Каждые 1 часа", + "delay_3_hour": "Каждые 3 часа", + "delay_12_hour": "Каждые 12 часов" + }, + "admin_create_group": { + "title": "Только администраторы могут создавать группы", + "desc": "Если эта опция включена, создавать группы смогут только администраторы.", + "enable": "Давать возможность", + "disable": "Запрещать" + }, + "admin_see_group_members": { + "title": "Только администраторы могут видеть участников группы", + "desc": "Если эта функция включена, то видеть участников группы смогут только администраторы.", + "enable": "Давать возможность", + "disable": "Запрещать" + }, + "enable_msg_url_preview": { + "title": "Включить предварительный просмотр URL в сообщении", + "desc": "Если включено, URL-адрес в сообщении будет отображать предварительный просмотр содержимого.", + "enable": "Давать возможность", + "disable": "Запрещать" + }, + "guest_mode": { + "title": "Гостевой режим", + "desc": "Если эта функция включена, посетители будут видеть публичные каналы на этом сервере.", + "enable": "Давать возможность", + "disable": "Запрещать" + }, + "url": { + "title": "Обновить URL-адрес интерфейса", + "desc": "Обновите URL-адрес интерфейса." + }, + "lang": { + "title": "Языки", + "desc": "Установить язык системы" + }, + "theme": { + "title": "Тема", + "desc": "Выберите тему", + "auto": "Auto", + "dark": "Тёмная", + "light": "Светлая" + }, + "message_sound": { + "title": "Звук сообщения", + "desc": "Воспроизводить звук при получении нового сообщения.", + "enable": "Давать возможность", + "disable": "Запрещать" + }, + "online_status": { + "title": "Статус онлайн", + "desc": "Если включено, участники будут видеть статус друг друга «онлайн»/«офлайн».", + "enable": "Давать возможность", + "disable": "Запрещать" + }, + "chat_layout": { + "title": "Макет чата", + "desc": "С какой стороны показывать сообщения, отправленные вами?", + "left": "Левый", + "self_right": "Правый" + }, + "contact_verify": { + "title": "Проверка контакта", + "desc": "По умолчанию все участники сервера могут видеть друг друга. Если вы хотите, чтобы участники сервера могли добавлять и управлять своими контактами, включите функцию контактов (администратор будет в списке контактов по умолчанию).", + "enable": "Давать возможность", + "disable": "Запрещать" + } + }, + "data": { + "clear_files": { + "title": "Файлы и изображения данных", + "desc": "Нажмите кнопку ниже, чтобы удалить все файлы и изображения с этого сервера.", + "btn": "Очистить данные файлов" + }, + "clear_msgs": { + "title": "Все данные сообщений", + "desc": "Нажмите кнопку ниже, чтобы удалить все данные чата, включая тексты и файлы этого сервера.", + "btn": "Очистить данные чатов" + }, + "auto_delete_file": { + "title": "Автоматическое удаление данных файла", + "desc": "Установить срок действия всех файловых данных на этом сервере.", + "confirm_desc": "Все файлы старше установленного времени будут удалены.", + "off": "Выключенный", + "day1": "1 День", + "day7": "7 Дней", + "day30": "30 Дней", + "day90": "90 Дней", + "day180": "180 Дней" + } + }, + "license": { + "signed": "Подписано", + "domain": "Домены", + "user_limit": "Лимит пользователей", + "expire": "Истек срок действия", + "create": "Создано в", + "value": "Стоимость лицензии", + "renew": "Продлить лицензию", + "update": "Обновить вручную", + "update_placeholder": "Введите новое значение лицензии.", + "renew_select": "Пожалуйста, выберите цену", + "tip": { + "title": "Шанс получить бесплатное обновление лицензии!", + "user_test": "Получите бесплатное обновление лицензии, пройдя 25-минутное пользовательское тестирование", + "contact": "Забронируйте время здесь: " + }, + "payment_success": "Платеж прошел успешно!", + "back_home": "Назад домой", + "tip_renewing": "Продлевая лицензию, не закрывайте окно!", + "tip_renewed": "Продление лицензии прошло успешно!", + "tip_renew_error": "Неверный идентификатор сеанса Stripe", + "tip_domain": "Лицензия привязана к домену (без порта), подтвердите или обновите настройки:", + "tip_port": "Укажите доменное имя без порта.", + "tip_confirm": "Начать оплату" + }, + "bot": { + "add_api_key": "Добавить API-ключ", + "no_api_key": "API-ключа пока нет", + "bot_tip_title": "Боты могут отправлять сообщения в каналы.", + "bot_tip_desc": "Обратите внимание, что мы не отображаем API-ключ бота снова после генерации. Вы всегда можете сгенерировать новый API-ключ бота, нажав «Добавить API-ключ», и это не аннулирует предыдущий(ие) API-ключ(и).", + "webhook_tip_title": "Веб-хуки могут получать сообщения в канале, если указан URL-адрес.", + "webhook_tip_desc": "Укажите URL-адрес веб-перехватчика, который вернет 200.", + "manage": "Управлять", + "how_to_use": "Как использовать", + "manage_desc": "Вы можете удалить бота в любое время, пользователь бота будет немедленно удален, а все API будут аннулированы.", + "create_title": "Создать бота", + "create_desc": "Дайте вашему боту имя. Вы также можете добавить URL-адрес конечной точки веб-перехватчика для получения данных.", + "create_key_title": "Создать API-ключ бота", + "create_key_desc": "Создайте API-ключ для аутентификации вашего общения", + "create_key_warning": "Обязательно скопируйте API Key сейчас. Вы больше не сможете его увидеть!", + "key_copy_and_close": "Копировать и закрыть", + "delete_title": "Удалить бота", + "delete_desc": "Вы уверены, что хотите удалить бота?", + "delete_key_title": "Удалить API-ключ бота", + "delete_key_desc": "Вы уверены, что хотите удалить этот ключ API бота?", + "webhook_title": "Обновить URL-адрес веб-перехватчика", + "webhook_desc": "Введите действительный URL-адрес.", + "col_avatar": "Аватар", + "col_name": "Имя бота", + "col_api_key": "API-ключ (входящие сообщения)", + "col_webhook": "URL-адрес конечной точки Webhook (исходящий)", + "col_opt": "Операции", + "col_key_name": "Имя", + "col_key_value": "Ключ", + "col_key_create_time": "Создано в", + "col_key_last_used": "Последнее использование" + }, + "auto_delete_msg": { + "title": "Удалять сообщения, отправленные мной по истечении определенного периода времени.", + "desc": "Это приведет к удалению данных сообщений, хранящихся как на стороне сервера, так и на стороне клиента.", + "off": "Выключенный", + "5_min": "5 Минут", + "10_min": "10 минут", + "1_hour": "1 час", + "1_day": "1 день", + "1_week": "1 неделя", + "clear": "Очистить все сообщения канала", + "clear_title": "Очистить все сообщения в этом канале.", + "clear_desc": "Это приведет к удалению всех данных сообщений, хранящихся как на стороне сервера, так и на стороне клиента." + }, + "firebase": { + "desc": "Для уведомления о сообщениях в качестве метода по умолчанию требуется Google Firebase.", + "sub_desc": "Мы предоставили официальную конфигурацию. Убедитесь, что Google FCM доступен с вашего сервера и устройства.", + "disable": "Запрещать", + "use_official": "Использовать официальную конфигурацию", + "custom": "Custom", + "enable": "Давать возможность", + "token_url": "URL-адрес токена", + "project_id": "Идентификатор проекта", + "private_key": "Закрытый ключ", + "client_email": "Электронная почта клиента" + }, + "smtp": { + "desc": "Для нового сообщения Уведомление по электронной почте (расширенная функция, обновите до <0>VoceChat Pro) и для подтверждения адреса электронной почты при новой регистрации мы используем SMTP. ", + "sub_desc": "Пожалуйста, настройте ваш SMTP ниже.", + "enable": "Давать возможность", + "host": "Хост", + "port": "Порт", + "from": "От", + "username": "Имя пользователя", + "password": "Пароль", + "how_to": "Как настроить SMTP?", + "send_test_email": "Отправить тестовое письмо" + }, + "agora": { + "desc": "Для видео- и аудиозвонков мы используем Agora API. ", + "sub_desc": "Каждый проект Agora получит 10 000 минут бесплатного использования API в месяц. Создайте проект самостоятельно. Следуйте инструкциям ниже, чтобы правильно настроить Agora.", + "enable": "Давать возможность", + "how_to": "Как настроить Agora?" + }, + "third_app": { + "key": "Безопасный ключ API", + "update": "Обновление секрета", + "update_tip": "Вы уверены, что хотите обновить API secret? Предыдущий секрет будет недействителен", + "key_tip": "Для шифрования данных связи используется ключ безопасности, согласованный между сервером и сторонним приложением.", + "how_to": "Как использовать?" + }, + "login": { + "password": "Пароль", + "password_desc": "Позволяет членам входить в систему с паролем.", + "magic_link": "Magic Link", + "magic_link_desc": "Позволяет членам входить в систему с помощью Magic Link.", + "google": "Google", + "google_desc": "Позволяет членам входить в систему с помощью Google.", + "github": "GitHub", + "github_desc": "Позволяет участникам входить в систему через GitHub.", + "metamask": "Metamask", + "metamask_desc": "Позволяет участникам входить в систему с помощью Metamask.", + "oidc": "OIDC", + "oidc_desc": "Позволяет членам входить в систему с помощью OIDC.", + "oidc_custom": "Кастом", + "more_details": "Нужны подробности? Смотрите наш <0>doc." + }, + "widget": { + "tip": "Расширение VoceChat путем встраивания SDK виджета vocechat!", + "code": "Пример кода", + "code_comment": "вставьте этот фрагмент кода в ваш HTML-файл", + "config": "Описание конфигурации", + "param_key": "Параметр Ключ", + "default_value": "Значение по умолчанию", + "remark": "Замечания", + "custom_style_tip": "если вы хотите более точно настроить положение виджета, используйте идентификатор элемента виджета в вашем HTML или CSS-файле, например так", + "css_code_tip": "Вы также можете настроить CSS-код, который будет загружен в виджет как CSS-файл.", + "param_id": "Widget ID (server version>=v0.3.12)", + "param_host": "Назначьте пользователя, общающегося в чате с посетителем (ID пользователя)", + "param_title": "заголовок всплывающего окна чата", + "param_logo": "URL-адрес значка логотипа всплывающего окна чата", + "param_auto_reg": "true: Автоматическая регистрация нового пользователя, если его нет, false: для регистрации посетителю необходимо ввести адрес электронной почты и имя.", + "param_login_token": "Если вы используете существующую информацию о пользователе вашей собственной платформы для создания новой учетной записи VoceChat, это токен входа, сгенерированный вашей платформой. Более подробную информацию см. здесь: https://doc.voce.chat/zh-cn/login-with-other-account. Не заполняйте это поле для сценариев по умолчанию (без сторонней пользовательской системы)!", + "param_theme_color": "Цвет темы виджета", + "param_close_width": "Ширина при закрытом виджете", + "param_close_height": "Высота при закрытом виджете", + "param_open_width": "Ширина при открытом виджете", + "param_open_height": "Высота при открытом виджете", + "param_welcome": "Персонализированное приветственное сообщение", + "param_position": "Положение виджета: слева/справа", + "share_link": "Поделитесь ссылкой на виджет, чтобы люди могли общаться с вами напрямую", + "widget_faq": "Включить функцию «Пусть все присоединятся первыми»" + }, + "version": { + "client_version": "Клиент Version", + "server_version": "Server Version", + "build_time": "Временная метка сборки", + "sync": "Синхронизация с последней версией веб-клиента" + }, + "api_doc": { + "desc": "У нас есть подробная документация по API, на основе которой вы можете создать свой собственный инструмент чата.", + "access": "URL-адрес доступа:", + "use_method": "Метод пользователя:", + "step_1": "Шаг первый: перейдите на свой сервер", + "step_2": "Шаг второй: введите токен входа", + "step_2_desc": "Вы можете получить токен, обратившись к http-заголовку X-API-Key или просто скопировав текст ниже:", + "last": "У каждого API есть кнопка «Попробовать», с помощью которой можно отлаживать API." + } +} diff --git a/public/locales/ru/welcome.json b/public/locales/ru/welcome.json new file mode 100644 index 00000000..73346d66 --- /dev/null +++ b/public/locales/ru/welcome.json @@ -0,0 +1,39 @@ +{ + "title": "Добропожаловать в {{name}} сервер", + "desc": "Вот несколько шагов, которые помогут вам начать работу.", + "invite": "Пригласите своих друзей или товарищей по команде", + "start_by_channel": "Создайте канал, чтобы начать разговор", + "start_by_dm": "Отправить личное сообщение", + "download": "Загрузить мобильные приложения", + "help": "Есть вопросы? Посетите наш справочный центр", + "sign_in_tip": "Пожалуйста, войдите, чтобы отправить сообщение", + "onboarding": { + "title": "Настройка VoceChat", + "welcome": "Добро пожаловать в ваш VoceChat!", + "welcome_desc": "Все в этом пространстве принадлежит вам. Давайте обустроим ваше пространство!", + "start": "Старт", + "new_server": "Назовите свой новый сервер", + "server_desc": "Серверы — это общие среды, где команды могут работать над проектами и общаться.", + "placeholder_server": "Введите имя сервера", + "create_server": "Создать сервер", + "admin_title": "Теперь давайте настроим вашу учетную запись администратора.", + "admin_desc": "Вы первый пользователь и администратор своего пространства!", + "sign": "Зарегистрироваться", + "invite_title": "Последний шаг: пригласите других!", + "invite_desc": "Во-первых, кто может зарегистрироваться на этом сервере?", + "confirm": "Подтверждать", + "done_welcome": "Добропожаловать в {{serverName}}", + "done_title": "С гордостью представлено VoceChat", + "done_desc": "Дополнительные настройки, включая разрешение домена, привилегии, безопасность и приглашения, доступны в <0>Settings", + "enter": "Входить", + "last_tip": "Теперь давайте пригласим других!", + "last_desc": "Отправьте ссылку-приглашение вашим будущим членам сообщества:", + "done": "Сделанный", + "welcome_page": "Приветственная страница", + "set_name": "Установить имя", + "admin_account": "Учетная запись администратора", + "who_sign_up": "Кто может зарегистрироваться", + "invites": "Приглашения", + "update_domain_tip": "Неправильный домен ссылки? Пожалуйста, обновите его здесь:" + } +} diff --git a/public/locales/ru/widget.json b/public/locales/ru/widget.json new file mode 100644 index 00000000..bd034224 --- /dev/null +++ b/public/locales/ru/widget.json @@ -0,0 +1,5 @@ +{ + "welcome": "👋 Привет, приятно познакомиться!", + "placeholder_send": "Введите и нажмите Enter.", + "start_chat": "Старт Чат" +} diff --git a/src/routes/setting/Overview/Language.tsx b/src/routes/setting/Overview/Language.tsx index 2e25400a..bea9dcd1 100644 --- a/src/routes/setting/Overview/Language.tsx +++ b/src/routes/setting/Overview/Language.tsx @@ -5,7 +5,7 @@ import SettingBlock from "@/components/SettingBlock"; import StyledRadio from "@/components/styled/Radio"; // type Props = {} -type LanguageType = "en" | "zh" | "jp" | "tr" | "pt" | "es" | "fr"; +type LanguageType = "en" | "zh" | "jp" | "tr" | "pt" | "es" | "fr" | "ru"; const LangMap: Record = { en: "English", zh: "中文", @@ -13,7 +13,8 @@ const LangMap: Record = { jp: "日本語", pt: "Portuguese", fr: "Français", - es: "Español" + es: "Español", + ru: "Русский" }; const Index = () => { const { t, i18n } = useTranslation("setting"); diff --git a/src/routes/setting/Overview/language.tsx b/src/routes/setting/Overview/language.tsx index 2e25400a..bea9dcd1 100644 --- a/src/routes/setting/Overview/language.tsx +++ b/src/routes/setting/Overview/language.tsx @@ -5,7 +5,7 @@ import SettingBlock from "@/components/SettingBlock"; import StyledRadio from "@/components/styled/Radio"; // type Props = {} -type LanguageType = "en" | "zh" | "jp" | "tr" | "pt" | "es" | "fr"; +type LanguageType = "en" | "zh" | "jp" | "tr" | "pt" | "es" | "fr" | "ru"; const LangMap: Record = { en: "English", zh: "中文", @@ -13,7 +13,8 @@ const LangMap: Record = { jp: "日本語", pt: "Portuguese", fr: "Français", - es: "Español" + es: "Español", + ru: "Русский" }; const Index = () => { const { t, i18n } = useTranslation("setting");