diff --git a/i18n.ts b/i18n.ts index 42c8ed28..7fc187d7 100644 --- a/i18n.ts +++ b/i18n.ts @@ -12,6 +12,7 @@ import nl from "./translations/nl.json"; import pl from "./translations/pl.json"; import ptBR from "./translations/pt-BR.json"; import sv from "./translations/sv.json"; +import ru from "./translations/ru.json"; import tr from "./translations/tr.json"; import ua from "./translations/ua.json"; import zhCN from "./translations/zh-CN.json"; @@ -29,6 +30,7 @@ export const APP_LANGUAGES = [ { label: "Polski", value: "pl" }, { label: "Português (Brasil)", value: "pt-BR" }, { label: "Svenska", value: "sv" }, + { label: "Русский", value: "ru" }, { label: "Українська", value: "ua" }, { label: "简体中文", value: "zh-CN" }, { label: "繁體中文", value: "zh-TW" }, @@ -47,6 +49,7 @@ i18n.use(initReactI18next).init({ pl: { translation: pl }, "pt-BR": { translation: ptBR }, sv: { translation: sv }, + ru: { translation: ru }, tr: { translation: tr }, ua: { translation: ua }, "zh-CN": { translation: zhCN }, diff --git a/translations/ru.json b/translations/ru.json new file mode 100644 index 00000000..c3a33437 --- /dev/null +++ b/translations/ru.json @@ -0,0 +1,478 @@ +{ + "login": { + "username_required": "Имя пользователя обязательно", + "error_title": "Ошибка", + "login_title": "Вход", + "login_to_title": "Вход в", + "username_placeholder": "Имя пользователя", + "password_placeholder": "Пароль", + "login_button": "Войти", + "quick_connect": "Быстрое подключение", + "enter_code_to_login": "Введите код {{code}} чтобы войти", + "failed_to_initiate_quick_connect": "Не удалось инициировать быстрое подключение", + "got_it": "Принято", + "connection_failed": "Соединение не удалось", + "could_not_connect_to_server": "Не удалось подключиться к серверу. Пожалуйста проверьте URL и ваше интернет соединение.", + "an_unexpected_error_occured": "Возникла непредвиденная ошибка", + "change_server": "Поменять сервер", + "invalid_username_or_password": "Неправильное имя пользователя или пароль", + "user_does_not_have_permission_to_log_in": "Пользователь не имеет прав на вход", + "server_is_taking_too_long_to_respond_try_again_later": "Сервер долго не отвечает, попробуйте позже.", + "server_received_too_many_requests_try_again_later": "Сервер получил слишком много запросов, попробуйте позже.", + "there_is_a_server_error": "Возникла ошибка сервера", + "an_unexpected_error_occured_did_you_enter_the_correct_url": "Возникла непредвиденная ошибка. Вы правильно ввели URL?" + }, + "server": { + "enter_url_to_jellyfin_server": "Укажите URL на ваш Jellyfin сервер", + "server_url_placeholder": "http(s)://your-server.com", + "connect_button": "Подключиться", + "previous_servers": "предыдущие серверы", + "clear_button": "Очистить", + "search_for_local_servers": "Поиск локальных серверов", + "searching": "Поиск...", + "servers": "Сервера" + }, + "home": { + "no_internet": "Нет интернета", + "no_items": "Нет элементов", + "no_internet_message": "Не переживайте, Вы всё ещё можете смотреть\nскачанный контент.", + "go_to_downloads": "В загрузки", + "oops": "Упс!", + "error_message": "Что-то пошло не так.\nПожалуйста выйдите и зайдите снова.", + "continue_watching": "Продолжить просмотр", + "next_up": "Следующее", + "recently_added_in": "Недавно добавлено в {{libraryName}}", + "suggested_movies": "Предложенные фильмы", + "suggested_episodes": "Предложенные серии", + "intro": { + "welcome_to_streamyfin": "Добро пожаловать в Streamyfin", + "a_free_and_open_source_client_for_jellyfin": "Бесплатный клиент для Jellyfin с открытым кодом", + "features_title": "Функции", + "features_description": "Streamyfin имеет множество функций и интегрируется с широким спектром программ, которое вы можете найти в меню настроек:", + "jellyseerr_feature_description": "Подключитесь к Jellyseerr и запрашивайте фильмы прямо в приложении.", + "downloads_feature_title": "Загрузки", + "downloads_feature_description": "Скачивайте фильмы и сериалы для просмотра без интернета. Используйте стандартный способ или установите сервер оптимизации для загрузки файлов в фоновом режиме.", + "chromecast_feature_description": "Транслируйте фильмы и сериалы на ваши устройста с поддержкой Chromecast.", + "centralised_settings_plugin_title": "Плагин для централизованной настройки", + "centralised_settings_plugin_description": "Настраивайте параметры из централизованного места на сервере Jellyfin. Все настройки клиента для всех пользователей будут синхронизированы автоматически.", + "done_button": "Готово", + "go_to_settings_button": "Перейти в настройки", + "read_more": "Узнать больше" + }, + "settings": { + "settings_title": "Настройки", + "log_out_button": "Выйти", + "user_info": { + "user_info_title": "Информация о пользователе", + "user": "Пользователь", + "server": "Сервер", + "token": "Токен", + "app_version": "Версия приложения" + }, + "quick_connect": { + "quick_connect_title": "Быстрое подключение", + "authorize_button": "Авторизировать через быстрое подключение", + "enter_the_quick_connect_code": "Введите код для быстрого подключения...", + "success": "Успех", + "quick_connect_autorized": "Быстрое подключение авторизовано", + "error": "Ошибка", + "invalid_code": "Неверный код", + "authorize": "Авторизировать" + }, + "media_controls": { + "media_controls_title": "Медиа-контроль", + "forward_skip_length": "Длина пропуска вперед", + "rewind_length": "Длина перемотки", + "seconds_unit": "c" + }, + "audio": { + "audio_title": "Аудио", + "set_audio_track": "Устанавливать аудио дорожку из предыдущего элемента", + "audio_language": "Язык аудио", + "audio_hint": "Выберите стандартный язык аудио.", + "none": "Отсутствует", + "language": "Язык" + }, + "subtitles": { + "subtitle_title": "Субтитры", + "subtitle_language": "Язык субтитров", + "subtitle_mode": "Режим субтитров", + "set_subtitle_track": "Устанавливать субтитры из предыдущего элемента", + "subtitle_size": "Размер субтитров", + "subtitle_hint": "Настроить субтитры.", + "none": "Отсутствует", + "language": "Язык", + "loading": "Загрузка", + "modes": { + "Default": "Стандартный", + "Smart": "Умный", + "Always": "Всегда", + "None": "Отсутствует", + "OnlyForced": "Только принудительные" + } + }, + "other": { + "other_title": "Другое", + "follow_device_orientation": "Авто-поворот", + "video_orientation": "Ориентация видео", + "orientation": "Ориентация", + "orientations": { + "DEFAULT": "Стандартный", + "ALL": "Все", + "PORTRAIT": "Портретный", + "PORTRAIT_UP": "Портрет вверх", + "PORTRAIT_DOWN": "Портрет вниз", + "LANDSCAPE": "Ландшафтный", + "LANDSCAPE_LEFT": "Ландшафтный слева", + "LANDSCAPE_RIGHT": "Ландшафтный справа", + "OTHER": "Другое", + "UNKNOWN": "Неизвестное" + }, + "safe_area_in_controls": "Безопасная зона в элементах управления", + "video_player": "Видео прейер", + "video_players": { + "VLC_3": "VLC 3", + "VLC_4": "VLC 4 (Экспериментальный + PiP)" + }, + "show_custom_menu_links": "Показать ссылки кастомного меню", + "hide_libraries": "Скрыть библиотеки", + "select_liraries_you_want_to_hide": "Выберите Библиотеки, которое хотите спрятать из вкладки Библиотеки и домашней страницы.", + "disable_haptic_feedback": "Отключить тактильную обратную связь", + "default_quality": "Качество по умолчанию" + }, + "downloads": { + "downloads_title": "Загрузки", + "download_method": "способ загрузки", + "remux_max_download": "Remux max скачать", + "auto_download": "Авто-загрузка", + "optimized_versions_server": "Оптимизированные версии сервера", + "save_button": "Сохранить", + "optimized_server": "Оптимизированный сервер", + "optimized": "Оптимизированный", + "default": "По умолчанию", + "optimized_version_hint": "Укажите URL на оптимизированный сервер. URL должен включать http or https и опционально порт.", + "read_more_about_optimized_server": "Узнать больше про оптимизацию сервера.", + "url": "URL", + "server_url_placeholder": "http(s)://domain.org:port" + }, + "plugins": { + "plugins_title": "Плагины", + "jellyseerr": { + "jellyseerr_warning": "Эта интеграция находится на ранней стадии. Ожидайте изменений.", + "server_url": "URL сервера", + "server_url_hint": "Пример: http(s)://your-host.url\n(Добавьте порт если необходимо)", + "server_url_placeholder": "Jellyseerr URL...", + "password": "Пароль", + "password_placeholder": "Введите пароль для пользователя Jellyfin {{username}}", + "save_button": "Сохранить", + "clear_button": "Очистить", + "login_button": "Войти", + "total_media_requests": "Всего запросов на медиа", + "movie_quota_limit": "Ограничение квоты на фильмы", + "movie_quota_days": "Дни квоты на фильмы", + "tv_quota_limit": "Ограничение квоты на сериалы", + "tv_quota_days": "Дни квоты на сериалы", + "reset_jellyseerr_config_button": "Сбросить конфигурацию Jellyseerr", + "unlimited": "Неограниченно", + "plus_n_more": "+{{n}} больше", + "order_by": { + "DEFAULT": "По умолчанию", + "VOTE_COUNT_AND_AVERAGE": "Количеству голосов и среднему", + "POPULARITY": "Популярности" + } + }, + "marlin_search": { + "enable_marlin_search": "Включить Marlin Search ", + "url": "URL", + "server_url_placeholder": "http(s)://domain.org:port", + "marlin_search_hint": "Введите URL для Marlin сервера. URL должен включать http or https и опционально порт.", + "read_more_about_marlin": "Узнать больше о Marlin.", + "save_button": "Сохранить", + "toasts": { + "saved": "Сохранено" + } + } + }, + "storage": { + "storage_title": "Хранилище", + "app_usage": "Приложение {{usedSpace}}%", + "device_usage": "Устройство {{availableSpace}}%", + "size_used": "{{used}} из {{total}} использовано", + "delete_all_downloaded_files": "Удалить все загруженные файлы", + }, + "intro": { + "show_intro": "Показать вступление", + "reset_intro": "Сбросить вступление" + }, + "logs": { + "logs_title": "Логи", + "no_logs_available": "Логи не доступны", + "delete_all_logs": "Удалить все логи", + }, + "languages": { + "title": "Языки", + "app_language": "Язык приложения", + "app_language_description": "Выберите язык для приложения.", + "system": "Системный" + }, + "toasts": { + "error_deleting_files": "Ошибка при удалении файлов", + "background_downloads_enabled": "Фоновая загрузка включена", + "background_downloads_disabled": "Фоновая загрузка отключена", + "connected": "Подключено", + "could_not_connect": "Не удалось подключиться", + "invalid_url": "Неверный URL" + } + }, + "sessions": { + "title": "Сессии", + "no_active_sessions": "Нет активных сессий", + }, + "downloads": { + "downloads_title": "Загрузки", + "tvseries": "Сериалы", + "movies": "Фильмы", + "queue": "Очередь", + "queue_hint": "Очередь и загрузки будут удалены при перезагрузке приложения", + "no_items_in_queue": "Нет элементов в очереди", + "no_downloaded_items": "Нет загруженых предметов", + "delete_all_movies_button": "Удалить все фильмы", + "delete_all_tvseries_button": "Удалить все сериалы", + "delete_all_button": "Удалить все", + "active_download": "Активно загружается", + "no_active_downloads": "Нет активных загрузок", + "active_downloads": "Активные загрузки", + "new_app_version_requires_re_download": "Новая версия приложения требует повторной загрузки", + "new_app_version_requires_re_download_description": "Новая версия приложения требует повторной загрузки. Пожалуйста удалите всё и попробуйте заново.", + "back": "Назад", + "delete": "Удалить", + "something_went_wrong": "Что-то пошло не так", + "could_not_get_stream_url_from_jellyfin": "Не удалось получить ссылку трансляции из Jellyfin", + "eta": "ETA {{eta}}", + "methods": "Методы", + "toasts": { + "you_are_not_allowed_to_download_files": "Нет разрешения на скачивание файлов.", + "deleted_all_movies_successfully": "Все фильмы были успешно удалены!", + "failed_to_delete_all_movies": "Возникла ошибка при удалении всех фильмов", + "deleted_all_tvseries_successfully": "Все сериалы были успешно удалены!", + "failed_to_delete_all_tvseries": "Возникла ошибка при удалении всех сериалов", + "download_cancelled": "Загрузка отменена", + "could_not_cancel_download": "Не удалось отменить загрузку", + "download_completed": "Загрузка завершена", + "download_started_for": "Загрузка {{item}} началась", + "item_is_ready_to_be_downloaded": "{{item}} готов к загрузке", + "download_stated_for_item": "Загрузка {{item} началась", + "download_failed_for_item": "Загрузка {{item}} провалилась с ошибкой: {{error}}", + "download_completed_for_item": "{{item}} успешно загружен", + "queued_item_for_optimization": "{{item}} поставлен в очередь для оптимизации", + "failed_to_start_download_for_item": "Не удалось начать загрузку {{item}}: {{message}}", + "server_responded_with_status_code": "Сервер ответил со статусом {{statusCode}}", + "no_response_received_from_server": "Нет ответа от сервера", + "error_setting_up_the_request": "Ошибка при создании запроса", + "failed_to_start_download_for_item_unexpected_error": "Не удалось начать загрузку {{item}}: Неожиданная ошибка", + "all_files_folders_and_jobs_deleted_successfully": "Все файлы, папки, и задачи были успешно удалены", + "an_error_occured_while_deleting_files_and_jobs": "Возникла ошибка при удалении файлов и работ", + "go_to_downloads": "В загрузки" + } + } + }, + "search": { + "search_here": "Искать здесь...", + "search": "Поиск...", + "x_items": "{{count}} предметов", + "library": "Библиотека", + "discover": "Найти новое", + "no_results": "Нет результатов", + "no_results_found_for": "Не было результатов при поиске", + "movies": "Фильмы", + "series": "Сериалы", + "episodes": "Серии", + "collections": "Коллекции", + "actors": "Актеры", + "request_movies": "Запросить фильмы", + "request_series": "Запросить сериалы", + "recently_added": "Недавно добавлено", + "recent_requests": "Недавно запрошено", + "plex_watchlist": "Список просмотра с Plex", + "trending": "В тренде", + "popular_movies": "Популярные фильмы", + "movie_genres": "Популярные жанры", + "upcoming_movies": "Предстоящие фильмы", + "studios": "Студии", + "popular_tv": "Популярные сериалы", + "tv_genres": "жанры сериалов", + "upcoming_tv": "Предстоящие сериалы", + "networks": "Сети", + "tmdb_movie_keyword": "TMDB Ключевые слова фильмов", + "tmdb_movie_genre": "TMDB Жанры фильмов", + "tmdb_tv_keyword": "TMDB Ключевые слова сериалов", + "tmdb_tv_genre": "TMDB Жанры сериалов", + "tmdb_search": "TMDB Поиск", + "tmdb_studio": "TMDB Студии", + "tmdb_network": "TMDB Сеть", + "tmdb_movie_streaming_services": "TMDB Потоковые сервисы фильмов", + "tmdb_tv_streaming_services": "TMDB Потоковые сервисы сериалов", + }, + "library": { + "no_items_found": "элементы не найдены", + "no_results": "Нет результатов", + "no_libraries_found": "Библиотеки не найдены", + "item_types": { + "movies": "фильмы", + "series": "Сериалы", + "boxsets": "Коллекции", + "items": "элементы" + }, + "options": { + "display": "Отображать", + "row": "Ряд", + "list": "Список", + "image_style": "Стиль изображения", + "poster": "Постер", + "cover": "Обложка", + "show_titles": "Показывать загаловки", + "show_stats": "Показывать статистику", + }, + "filters": { + "genres": "Жанры", + "years": "Года", + "sort_by": "Сортировать по", + "sort_order": "Порядок сортировки", + "asc": "По Возрастанию", + "desc": "По убыванию", + "tags": "Тэги" + } + }, + "favorites": { + "series": "Сериалы", + "movies": "Фильмы", + "episodes": "Серии", + "videos": "Видео", + "boxsets": "Коллекции", + "playlists": "Плейлисты", + "noDataTitle": "Пока нет избранных", + "noData": "Отметьте элементы как избранные, чтобы они отображались здесь для быстрого доступа." + }, + "custom_links": { + "no_links": "Нет ссылок" + }, + "player": { + "error": "Ошибка", + "failed_to_get_stream_url": "Не удалось получить URL потока", + "an_error_occured_while_playing_the_video": "Возникла Неожиданная ошибка во время воспроизведения. Проверьте логи в настройках.", + "client_error": "Ошибка клиента", + "could_not_create_stream_for_chromecast": "Не удалось создать поток для Chromecast", + "message_from_server": "Сообщение от сервера: {{message}}", + "video_has_finished_playing": "Видео закончило воспроизводиться!", + "no_video_source": "Нет источника видео...", + "next_episode": "Следующая серия", + "refresh_tracks": "Обновить дорожки", + "subtitle_tracks": "Субтитры:", + "audio_tracks": "Аудио дорожки:", + "playback_state": "Состояние воспроизведения:", + "no_data_available": "Данные не доступны", + "index": "Индекс:" + }, + "item_card": { + "next_up": "Следующее", + "no_items_to_display": "Нет элементов для отображения", + "cast_and_crew": "Актеры и съемочная группа", + "series": "Серии", + "seasons": "Сезоны", + "season": "Сезон", + "no_episodes_for_this_season": "В этом сезоне нет серий", + "overview": "Обзор", + "more_with": "Больше с {{name}}", + "similar_items": "Похожие элементы", + "no_similar_items_found": "Похожие элементы не найдены", + "video": "Видео", + "more_details": "Больше деталей", + "quality": "Качество", + "audio": "Звук", + "subtitles": "Субтитры", + "show_more": "Показать больше", + "show_less": "Показать меньше", + "appeared_in": "Появлялся в", + "could_not_load_item": "Не удалось загрузить элемент", + "none": "Отсутствует", + "download": { + "download_season": "Загрузить сезон", + "download_series": "Загрузить сериал", + "download_episode": "Загрузить серию", + "download_movie": "Скачать фильм", + "download_x_item": "Загрузить {{item_count}} элементов", + "download_button": "Загрузить", + "using_optimized_server": "Использовать оптимизированный сервер", + "using_default_method": "Использовать стандартный метод", + } + }, + "live_tv": { + "next": "Следующая", + "previous": "Предыдущая", + "live_tv": "Прямой эфир ТВ", + "coming_soon": "Скоро", + "on_now": "Сейчас в эфире", + "shows": "Сериалы", + "movies": "Фильмы", + "sports": "Спорт", + "for_kids": "Для детей", + "news": "Новости" + }, + "jellyseerr": { + "confirm": "Подтвердить", + "cancel": "Отменить", + "yes": "Да", + "whats_wrong": "В чем дело?", + "issue_type": "Вид проблемы", + "select_an_issue": "Выберите проблему", + "types": "Типы", + "describe_the_issue": "(опционально) Опишите проблему...", + "submit_button": "Подать", + "report_issue_button": "Сообщить о проблеме", + "request_button": "Запросить", + "are_you_sure_you_want_to_request_all_seasons": "Вы уверены, что хотите запросить все сезоны?", + "failed_to_login": "Не удалось войти", + "cast": "Транслировать", + "details": "Детали", + "status": "Статус", + "original_title": "Оригинальное название", + "series_type": "Тип сериала", + "release_dates": "Дата релиза", + "first_air_date": "Первая дата выхода в эфир", + "next_air_date": "Следующая дата выхода в эфир", + "revenue": "Прибыль", + "budget": "Бюджет", + "original_language": "Оригинальный язык", + "production_country": "Страна производства", + "studios": "Студия", + "network": "Сеть", + "currently_streaming_on": "Сейчас доступно на", + "advanced": "Продвинутое", + "request_as": "Запросить как", + "tags": "Тэги", + "quality_profile": "Профиль качества", + "root_folder": "Корневая папка", + "season_all": "Сезон (все)", + "season_number": "Сезон {{season_number}}", + "number_episodes": "{{episode_number}} серий", + "born": "Рожден", + "appearances": "Появления", + "toasts": { + "jellyseer_does_not_meet_requirements": "Сервер Jellyseerr не соответствует минимальным требованиям версии! Пожалуйста, обновите до версии не ниже 2.0.0", + "jellyseerr_test_failed": "Тест Jellyseerr не пройден. Попробуйте еще раз.", + "failed_to_test_jellyseerr_server_url": "Не удалось проверить URL-адрес сервера jellyseerr", + "issue_submitted": "Проблема отправлена!", + "requested_item": "Запрошено {{item}}!", + "you_dont_have_permission_to_request": "У вас нет разрешения на запрос!", + "something_went_wrong_requesting_media": "Что-то пошло не так при запросе медиафайлов!" + } + }, + "tabs": { + "home": "Дом", + "search": "Поиск", + "library": "Библиотека", + "custom_links": "Кастомные ссылки", + "favorites": "Избранное" + } + } + \ No newline at end of file