From 5a57bd588b046aff1de714c9fa0a06d92adbd435 Mon Sep 17 00:00:00 2001 From: SabatonShip Date: Tue, 2 Jul 2024 05:28:13 +0600 Subject: [PATCH] RU locale update (#1782) Added and translated new strings from en.ts Improved old translates --- client/src/locales/ru.ts | 160 ++++++++++++++++++++++++++++----------- 1 file changed, 117 insertions(+), 43 deletions(-) diff --git a/client/src/locales/ru.ts b/client/src/locales/ru.ts index f142f3868..2e0878aec 100644 --- a/client/src/locales/ru.ts +++ b/client/src/locales/ru.ts @@ -1,23 +1,49 @@ -import { OttWebsocketError, Role } from "ott-common/models/types"; +import { OttWebsocketError, BehaviorOption, Role } from "ott-common/models/types"; export default { "common": { - "cancel": "Отмена", + "yes": "Да", + "no": "Нет", + "ok": "Ок", + "cancel": "Отменить", "close": "Закрыть", "close-all": "Закрыть всё", "add": "Добавить", - "play": "играть", + "remove": "Убрать", + "delete": "Удалить", + "play": "Воспроизвести", "pause": "Пауза", "save": "Сохранить", "search": "Поиск", "undo": "Отменить действие", - "vote": "Голосование", + "copy": "Копировать", + "show": "Показать", + "hide": "Скрыть", + "discard": "Отменить изменения", + "loading": "Загрузка...", + "view": "Просмотр", + "restore": "Восстановить", + "success": "Успех", + "vote": "Голосовать", + "unvote": "Отменить голос", + "on": "Вкл", + "off": "Выкл", + "dismiss": "Закрыть", + "errors": { + "rate-limit": + "Превышен лимит запросов. Пожалуйста, попробуйте снова через {duration} секунд.", + }, + }, + "behavior": { + [BehaviorOption.Always]: "Всегда", + [BehaviorOption.Prompt]: "Запрашивать", + [BehaviorOption.Never]: "Никогда", }, "landing": { hero: { - title: "Насладитесь совместным просмотром.", + title: "Наслаждайтесь вместе.", description: - "Синхронизированный просмотр в реальном времени. Выборочная система голосования.\nТёмная тема. Регистрация не требуется. Открытый исходный код.\nНикогда ещё не было так легко смотреть видео вместе.", + "Синхронизированный просмотр в реальном времени. Опциональная система голосования.\nТёмная тема. Регистрация не требуется. Открытый исходный код.\nНикогда ещё не было так легко смотреть видео вместе!", btns: { create: "@:nav.create.title", browse: "Просмотр комнат", @@ -25,12 +51,12 @@ export default { }, }, intro: { - title: "Удалённый просмотр с друзьями теперь стал намного проще", + title: "Смотреть фильмы вместе стало гораздо проще", name: "OpenTogetherTube", - text1: " - платформа для синхронизированного просмотра видео в реальном времени.\nОна проста в использовании и не требует регистрации. Просто создайте комнату, добавьте видео и\nпригласите Ваших друзей. БУМ! Вы готовы смотреть видео со своими друзьями до 3 часов ночи.", + text1: " - платформа для синхронизированного просмотра видео в реальном времени.\nОна проста в использовании и не требует регистрации. Просто создайте комнату, добавьте видео и\nпригласите Ваших друзей. И вуаля! Вы готовы смотреть видео с друзьями до 3 часов ночи!", text2: "Оригинальный TogetherTube был любим за его простой интерфейс,\nи за то, как легко было сразу начать просмотр.\nOpenTogetherTube стремится быть таким же простым, продолжая совершенствоваться.", - text3: "На данный момент Вы можете смотреть онлайн видео со своими друзьями с Youtube, Vimeo, с прямых ссылок на видео в формате .mp4, и в ближайшее время их будет", - link: "ещё больше.", + text3: "В настоящее время Вы можете смотреть онлайн-видео с друзьями с Youtube, Vimeo, прямыми ссылками на видео в формате .mp4, и в ближайшее время источников будет", + link: "ещё больше", }, features: { "title": "Основные функции", @@ -40,15 +66,15 @@ export default { }, "permanent-rooms": { title: "Постоянные комнаты", - text: "Ваша компания друзей часто возвращается сюда? Избегите хлопот\nс отправкой новой ссылки каждый раз. Постоянные\nкомнаты получают персональный URL-адрес.", + text: "Ваша компания друзей часто возвращается сюда? Забудьте о необходимости\nотправлять новую ссылку каждый раз. Постоянные\nкомнаты получают персональный URL-адрес.", }, "dark-theme": { title: "Тёмная тема", - text: "Смотрите нарезки из Vine поздно ночью?\nOpenTogetherTube имеет тёмную тему,\nтак что Ваши глаза не будут испытывать дискомфорт.", + text: "Смотрите нарезки из Vine поздно ночью?\nOpenTogetherTube имеет тёмную тему,\nчтобы Ваши глаза не уставали.", }, "room-permissions": { title: "Настройка прав", - text: "Устали от случайных придурков, заходящих в Вашу комнату и\nдобавляющих кучу громких видео к Вашему сеансу\n прослушивания Lofi Hip-Hop? Просто запретите им добавлять видео.", + text: "Устали от случайных шутников, заходящих в Вашу комнату и\nдобавляющих кучу громких видео к Вашему сеансу\n прослушивания Lofi Hip-Hop? Просто запретите им добавлять видео!", }, "voting-system": { title: "Система голосования", @@ -56,7 +82,7 @@ export default { }, "playlist-copying": { title: "Копирование плейлиста", - text: "Добавляйте целые плейлисты или каналы\nв очередь, чтобы вам не пришлось\nдобавлять каждый файл по отдельности. Это лучший\nспособ просмотра группы видео с Вашими друзьями!", + text: "Добавляйте целые плейлисты или каналы\nв очередь, чтобы Вам не пришлось\nдобавлять каждый файл по отдельности. Это лучший\nспособ просмотра группы видео с Вашими друзьями!", }, }, support: { @@ -71,11 +97,12 @@ export default { }, }, "footer": { - "disclaimer": "Дисклеймер: OpenTogetherTube никак не связан с TogetherTube и Watch2Gether.", + "disclaimer": + "Отказ от ответственности: Проект OpenTogetherTube никак не связан ни с TogetherTube, ни с Watch2Gether.", "made-in": "Сделано в Америке", "thanks-to": "Особая благодарность", "privacy-policy": "Политика конфиденциальности", - "attribution": "Авторство", + "attribution": "Атрибуция", }, "not-found": { title: "Страница не найдена", @@ -86,16 +113,16 @@ export default { text: "Создаём временную комнату для Вас...", }, "attribution": { - "sponsorblock-text": "Используются данные SponsorBlock:", + "sponsorblock-text": "Используются данные SponsorBlock от", }, "nav": { "home": "Главная", "browse": "Комнаты", "faq": "FAQ", "bug": "Сообщить о баге", - "support": "Поддержать", + "support": "Поддержать!", "login": "Вход", - "link-discord": "Ссылка на Discord", + "link-discord": "Привязать Discord", "logout": "Выход", "create": { "title": "Создать комнату", @@ -113,11 +140,12 @@ export default { }, "room": { "title-temp": "Временная комната", - "kick-me": "Кикнуть", + "kick-me": "Исключить меня", "rewind": "Назад на 10с", "skip": "Вперёд на 10с", "play-pause": "Воспроизведение/Пауза", "next-video": "Следующее видео", + "next-video-vote": "Голосовать за пропуск видео", "toggle-fullscreen": "Полноэкранный режим", "con-status": { connecting: "Подключение...", @@ -134,27 +162,11 @@ export default { you: "Вы", demote: "Понизить", promote: "Повысить", + kick: "Исключить", }, }, "privacy": { title: "@:footer.privacy-policy", - text1: "Этот сайт использует Cookies. Также сайт использует Google Analytics, но отслеживается лишь малая часть информации. Единственный вид собираемой демографической информации - страна проживания, используете ли Вы настольное или мобильное устройство. Собираемая информация никогда не будет связана с Вашим OTT аккаунтом или сессией. Если Вы не хотите чтобы информация собиралась, используйте AdBlock.", - text2: "Ваш IP не зарегистрирован в логах OpenTogetherTube. IP записывается на короткий промежуток времени.\nЧаты не записываются. Любые видео, которые вы ищете, никогда не будут связаны с Вашим аккаунтом или сессией.", - text3: "Обычное использование сайта, как создание комнаты, добавление видео, и т.д., регистрируется для мониторинга и логов. Логи не оставляются больше чем на неделю.\nСобытия в логах никак не связаны с Вашим аккаунтом или сессией.", - text4: "Если у вас есть зарегистрированный аккаунт, Ваш E-mail используется только для восстановления доступа к аккаунту, или для связи с Вами, если это необходимо. E-mail не требуется, если вы авторизуетесь через Discord. Ваш E-mail, Ваши комнаты, и другая Ваша информация - приватна, и никогда не будет предоставлена третьим лицам.", - text5: { - "text": "OpenTogetherTube использует GDPR. Если по какой-то причине вам нужна информация о Вашем аккаунте, свяжитесь со мной в", - "link-text": "Twitter.", - }, - text6: { - "text1": "Сайт использует Youtube Data API, и его использование соответствует", - "link-text1": "Условиям обслуживания YouTube API", - "text2": - "Никакая персональная информация не отправляется в YouTube. Просмотр видео с YouTube требует от Вас согласия с", - "link-text2": "Условиями обслуживания Youtube", - "text3": "и", - "link-text3": "политикой конфиденциальности Google", - }, }, "chat": { "title": "Чат", @@ -174,6 +186,7 @@ export default { "no-video-text": "Добавьте Ваше видео.", }, "add-preview": { + "label": "Ссылка или Поиск", "add-all": "Добавить всё", "placeholder": "Воспользуйтесь поиском на YouTube здесь, или вставьте URL видео, чтобы добавить его в очередь", @@ -205,6 +218,14 @@ export default { "video-queue": { "no-videos": "Очередь пуста.", "add-video": "Добавить видео", + "export": "Экспорт", + "export-diag-title": "Экспорт очереди", + "export-hint": + 'Скопируйте и вставьте этот текст во вкладку "Добавить", чтобы восстановить эту очередь.', + "restore": "Хотите восстановить видео из предыдущей очереди?", + "restore-queue": "Восстановить очередь?", + "restore-queue-hint": + "Это содержимое было в очереди в последний раз, когда эта комната была активной. Хотите восстановить его?", }, "video-queue-item": { "experimental": "Эта функция в стадии тестирования... Может сломаться!", @@ -234,7 +255,14 @@ export default { "dj-hint": "Когда видео закончится, начать его просмотр с самого начала. Подходит для зацикливания фоновой музыки.", "auto-skip-text": - "Автоматический пропуск спонсируемых сегментов, заставок, саморекламы с использованием данных SponsorBlock.", + "Автоматически пропускать нежелательные сегменты видео с использованием данных SponsorBlock.", + "auto-skip-text-sponsor": "спонсор", + "auto-skip-text-intro": "интро", + "auto-skip-text-outro": "аутро", + "auto-skip-text-interaction": "взаимодействия", + "auto-skip-text-selfpromo": "самореклама", + "auto-skip-text-music_offtopic": "оффтоп-музыка", + "auto-skip-text-preview": "превью", "permissions-not-available": "Настройки разрешений недоступны во временных комнатах.", "room-needs-owner": "Этой комнате нужен владелец, прежде чем можно будет изменить разрешения.", @@ -242,6 +270,9 @@ export default { "arent-able-to-modify-permissions": "Вы не можете изменять разрешения в этой комнате.", "settings-applied": "Настройки применены", "now-own-the-room": "Теперь комната {room} принадлежит Вам.", + "load-failed": "Не удалось загрузить настройки комнаты.", + "restore-queue": "Восстанавливать очередь при загрузке комнаты", + "enable-vote-skip": "Включить пропуск голосованием", }, "create-room-form": { "card-title": "Создать постоянную комнату", @@ -256,6 +287,9 @@ export default { "visibility-hint": "Определяет, отображается ли комната в списке комнат или нет.", "queue-mode": "Режим очереди", "manual": "Вручную", + "vote": "@:common.vote", + "loop": "@:room-settings.loop", + "dj": "@:room-settings.dj", "public": "Публичная", "unlisted": "Скрытая", "rules": { @@ -277,14 +311,17 @@ export default { "register": "Регистрация", "login-discord": "Войти через Discord", "email": "E-mail", - "username": "Имя пользователя", + "email-or-username": "E-mail или Логин", + "username": "Логин", "password": "Пароль", "retype-password": "Повторите пароль", + "email-optional": + "Необязательно. Указание электронной почты позволит восстановить доступ к Вашему аккаунту в случае утери пароля.", "rules": { "email-required": "Обязательное поле", "valid-email": "E-mail должен быть настоящим!", "username-required": "Обязательное поле", - "username-length": "Имя пользователя должно содержать от 1 до {length} символов", + "username-length": "Логин должен содержать от 1 до {length} символов", "password-required": "Обязательное поле", "password-length": "Длина пароля должна составлять не менее 10 символов", "retype-password": "Повторно введите свой пароль", @@ -303,6 +340,15 @@ export default { "Не удалось зарегистрироваться по неизвестной причине. Проверьте консоль и сообщите об этой ошибке на GitHub.", "in-use": "Уже используется.", }, + "change-password": { + title: "Изменить пароль", + success: "Пароль успешно изменен.", + forgot: "Забыли пароль?", + prompt: "Введите адрес электронной почты или логин, связанный с Вашим аккаунтом.", + reset: "Сбросить", + sent: "Отправлено письмо для сброса пароля.", + failed: "Не удалось сбросить пароль.", + }, }, "permissions-editor": { "title": "Настройка разрешений", @@ -314,19 +360,47 @@ export default { "permission": "Разрешение", }, "client-settings": { - title: "Персональные настройки", - description: "Эти настройки сохраняются в Вашем браузере и влияют только на Вас.", - activator: "@:client-settings.title", + "title": "Персональные настройки", + "description": "Эти настройки сохраняются в Вашем браузере и влияют только на Вас.", + "activator": "@:client-settings.title", + "room-layout": "Макет комнаты", + "theme": "Тема", + "sfx-enable": "Включить звуковые эффекты", + "sfx-volume": "Громкость звуковых эффектов", }, "connect-overlay": { "title": "Отключено", "find-another": "Найдите другую комнату", "dc-reasons": { + [OttWebsocketError.UNKNOWN]: "@:connect-overlay.dc-reasons.unknown", [OttWebsocketError.ROOM_NOT_FOUND]: "Комната не найдена.", [OttWebsocketError.ROOM_UNLOADED]: "Комната выгружена.", [OttWebsocketError.MISSING_TOKEN]: "Токен не был предоставлен. Обновите страницу и попробуйте ещё раз. В противном случае, пожалуйста, сообщите об этой ошибке на GitHub.", + [OttWebsocketError.KICKED]: "Вы были исключены из комнаты другим пользователем.", unknown: "Неизвестная ошибка. Пожалуйста, сообщите об этой ошибке на GitHub.", }, }, + "vote-skip": { + remaining: "Ещё {count} голосов для пропуска", + }, + "roles": { + [Role.Administrator]: "Администратор", + [Role.Moderator]: "Модератор", + [Role.TrustedUser]: "Доверенный пользователь", + [Role.RegisteredUser]: "Зарегистрированный пользователь", + [Role.UnregisteredUser]: "Незарегистрированный пользователь", + [Role.Owner]: "Владелец", + }, + "errors": { + BadPasswordError: + "Пароль не соответствует минимальным требованиям. Должен быть не менее 8 символов длиной и содержать как минимум 2 из следующих категорий символов: строчные буквы, прописные буквы, цифры, специальные символы.", + BadApiArgumentException: + "Неверный аргумент API. Вероятно, это ошибка, пожалуйста, сообщите об этом.", + }, + "player": { + "buffer-warn": { + spans: "Вы еще не достаточно буферизовали видео. Текущие временные диапазоны буферизации: {ranges}", + }, + }, };