diff --git a/assets/jsons/translations/de.json b/assets/jsons/translations/de.json
index a0a87635..f4347763 100644
--- a/assets/jsons/translations/de.json
+++ b/assets/jsons/translations/de.json
@@ -147,12 +147,14 @@
"fr-FR": "Français",
"es-ES": "Español",
"de-DE": "Deutsch",
+ "ru-RU": "Русский",
"translated": {
"en-EN": "Englisch, Vereinigtes Königreich",
"en-US": "Englisch, USA",
"fr-FR": "Französisch",
"es-ES": "Spanisch",
- "de-DE": "Deutsch"
+ "de-DE": "Deutsch",
+ "ru-RU": "Russisch"
}
}
},
diff --git a/assets/jsons/translations/en.json b/assets/jsons/translations/en.json
index 49481eb4..668249a9 100644
--- a/assets/jsons/translations/en.json
+++ b/assets/jsons/translations/en.json
@@ -147,12 +147,14 @@
"fr-FR": "Français",
"es-ES": "Español",
"de-DE": "Deutsch",
+ "ru-RU": "Русский",
"translated": {
"en-EN": "English, United Kingdom",
"en-US": "English, USA",
"fr-FR": "French",
"es-ES": "Spanish",
- "de-DE": "German"
+ "de-DE": "German",
+ "ru-RU": "Russian"
}
}
},
diff --git a/assets/jsons/translations/es.json b/assets/jsons/translations/es.json
index 2aea8d24..7aadc3c6 100644
--- a/assets/jsons/translations/es.json
+++ b/assets/jsons/translations/es.json
@@ -146,12 +146,14 @@
"fr-FR": "Français",
"es-ES": "Español",
"de-DE": "Deutsch",
+ "ru-RU": "Русский",
"translated": {
"en-EN": "Inglés, Reino Unido",
"en-US": "Inglés, Estados Unidos",
"fr-FR": "Francés",
"es-ES": "Español",
- "de-DE": "Alemán"
+ "de-DE": "Alemán",
+ "ru-RU": "Ruso"
}
}
},
diff --git a/assets/jsons/translations/fr.json b/assets/jsons/translations/fr.json
index 5e8100fd..7f6c8e27 100644
--- a/assets/jsons/translations/fr.json
+++ b/assets/jsons/translations/fr.json
@@ -146,12 +146,14 @@
"fr-FR": "Français",
"es-ES": "Español",
"de-DE": "Deutsch",
+ "ru-RU": "Русский",
"translated": {
"en-EN": "Anglais, Royaume-Uni",
"en-US": "Anglais, États-Unis",
"fr-FR": "Français",
"es-ES": "Espagnol",
- "de-DE": "Allemand"
+ "de-DE": "Allemand",
+ "ru-RU": "Russe"
}
}
},
diff --git a/assets/jsons/translations/ru.json b/assets/jsons/translations/ru.json
new file mode 100644
index 00000000..3ac69574
--- /dev/null
+++ b/assets/jsons/translations/ru.json
@@ -0,0 +1,902 @@
+{
+ "misc": {
+ "download": "Скачать",
+ "add": "Добавить",
+ "verify": "Проверить",
+ "launch": "Запустить",
+ "mods": "Моды",
+ "maps": "Карты",
+ "playlists": "Плейлисты",
+ "models": "Модели",
+ "cancel": "Отмена",
+ "delete": "Удалить",
+ "accept": "Принять",
+ "refuse": "Отказаться",
+ "apply": "Применить",
+ "copy": "Скопировать",
+ "copied": "Скопировано!"
+ },
+ "nav-bar": {
+ "add-version": "Добавить версию игры",
+ "settings": "Настройки",
+ "shared": {
+ "text": "Общий",
+ "tooltip": "Общий контент"
+ }
+ },
+ "pages": {
+ "shared-maps": {
+ "title": "Общие карты"
+ },
+ "version-viewer": {
+ "launch-mods": {
+ "oculus": "Режим Oculus",
+ "oculus-description": "Если вы используете Beat Saber через Steam, это позволит использовать Oculus's VR в обход SteamVR, для потенциального прироста производительности. Это необязательно для шлемов Oculus.",
+ "desktop": "Режим FPFC",
+ "desktop-description": "Режим Летающих контроллеров от первого лица(FPFC) позволит вам использовать меню с помощью WASD и мышки. Это облегчает тестирование модов, потому что вам не нужно подключать шлем!",
+ "debug": "Режим отладки",
+ "debug-description": "Включает окно логов для IPA. В окне будут отображаться логи модов.",
+ "advanced-launch": {
+ "button": "Расширенный запуск",
+ "placeholder": "Параметры запуска, например: --revert; --nowait"
+ }
+ },
+ "maps": {
+ "title": "Общие карты",
+ "search-bar": {
+ "search-placeholder": "Поиск среди карт",
+ "filters-btn": "Фильтр",
+ "dropdown": {
+ "export-maps": "Экспорт карт",
+ "delete-maps": "Удалить карты"
+ }
+ },
+ "tabs": {
+ "maps": {
+ "actions": {
+ "add-maps": {
+ "text": "Добавить"
+ },
+ "link-maps": {
+ "tooltips": {
+ "link": "Привязать карты",
+ "unlink": "Отвязать карты"
+ }
+ }
+ },
+ "empty-maps": {
+ "text": "Нет карт",
+ "button": "Скачать карты"
+ }
+ }
+ }
+ },
+ "mods": {
+ "loading-mods": "Загрузка модов...",
+ "no-internet": "Нет интернета",
+ "mods-not-available": "Не найдены моды для этой версии Beat Saber",
+ "buttons": {
+ "more-infos": "Подробнее",
+ "install-or-update": "Установить или обновить"
+ },
+ "mods-grid": {
+ "header-bar": {
+ "name": "Имя",
+ "installed": "Установлено",
+ "latest": "Latest",
+ "description": "Описание",
+ "dropdown": {
+ "uninstall-all": "Удалить всё"
+ }
+ }
+ }
+ },
+ "dropdown": {
+ "open-folder": "Открыть папку",
+ "verify-files": "Проверить файлы",
+ "clone": "Клонировать",
+ "edit": "Редактировать",
+ "uninstall": "Удалить",
+ "create-shortcut": "Создать ярлык",
+ "shared-folders": "Общие папки"
+ }
+ },
+ "available-versions": {
+ "title": "Выберите версию",
+ "steam-release": "Список изменений",
+ "dropdown": {
+ "refresh": "Обновить список",
+ "import-version": "Импорт версии"
+ }
+ },
+ "settings": {
+ "steam": {
+ "title": "Steam",
+ "description": "Если вы выйдете из Steam, вам придётся снова войти, если вы хотите скачать другие версии Beat Saber.",
+ "logout": "Выйти"
+ },
+ "appearance": {
+ "title": "Персонализация",
+ "description": "Выберите два основных цвета для BSManager.",
+ "reset": "Сброс",
+ "sub-title": "Тема",
+ "themes": {
+ "dark": "Тёмная",
+ "light": "Светлая",
+ "os": "Как на компьютере"
+ }
+ },
+ "installation-folder": {
+ "title": "Папка установок",
+ "description": "Измените стандартную папку, где будут версии Beat Saber и прочее.",
+ "choose-folder": "Изменить папку"
+ },
+ "additional-content": {
+ "title": "Дополнительный контент",
+ "description": "Дополнительный контент для кастомизации Beat Saber!",
+ "deep-links": {
+ "sub-title": "OneClick установка"
+ }
+ },
+ "language": {
+ "title": "Язык",
+ "description": "Выберите язык.",
+ "languages": {
+ "en-EN": "English, UK",
+ "en-US": "English, US",
+ "fr-FR": "Français",
+ "es-ES": "Español",
+ "de-DE": "Deutsch",
+ "ru-RU": "Русский",
+ "translated": {
+ "en-EN": "Английский, Великобритания",
+ "en-US": "Английский, США",
+ "fr-FR": "Французский",
+ "es-ES": "Испанский",
+ "de-DE": "Немецкий",
+ "ru-RU": "Русский"
+ }
+ }
+ },
+ "patreon": {
+ "title": "Поддержи BSManager 💖",
+ "description": "Поддержи проект, чтобы мы могли дальше улучшать BSManager.",
+ "buttons": {
+ "support": "Поддержать BSManager 🥰",
+ "supporters": "Поддержавшие 👀"
+ },
+ "view": {
+ "no-supporters": "Пока нет поддержавших",
+ "sponsors": "Спонсоры",
+ "supporters": "Поддержавшие"
+ }
+ },
+ "discord": {
+ "description": "Присоединяйся к сообществу BSManager в социальных сетях!"
+ },
+ "contribution": {
+ "description": "Предложите улучшения или сообщите о баге!",
+ "buttons": {
+ "request-features": "Предложить улучшение",
+ "report-bug": "Сообщить о баге",
+ "open-logs": "Открыть логи"
+ }
+ }
+ }
+ },
+ "notifications": {
+ "types": {
+ "error": "🚨 Ошибка",
+ "warning": "⚠️ Предупреждение",
+ "success": "🎉 Успех"
+ },
+ "common": {
+ "msg": {
+ "error-occurred": "Возникла ошибка"
+ }
+ },
+ "shared": {
+ "errors": {
+ "titles": {
+ "operation-running": "Операция в процессе",
+ "no-internet": "Нет интернета"
+ },
+ "msg": {
+ "operation-running": "Дождитесь завершения операции, потом попробуйте снова.",
+ "no-internet": "Проверьте своё соединение и попробуйте снова."
+ }
+ }
+ },
+ "bs-download": {
+ "success": {
+ "titles": {
+ "download-success": "Скачивание завершено",
+ "verification-finished": "Проверка завершена"
+ }
+ },
+ "warnings": {
+ "msg": {
+ "ManifestChecksum": "Предыдущий файл манифесте не совпадает с новым 🤔",
+ "ConnectionTimeout": "У вас нестабильное соединение с интернетом 🥶",
+ "ConnectionLost": "Соединение потеряно, попробуйте снова...",
+ "ConnectionError": "Не удалось подключиться к Steam, попробуйте снова...",
+ "Unknown": "Что-то странное произошло 🤔 Возможно ваш интернет барахлит."
+ }
+ },
+ "errors": {
+ "titles": {
+ "dotnet-required": "Требуется .NET 6"
+ },
+ "msg": {
+ "401": "Похоже Steam не хочет, чтобы мы скачали Beat Saber 😢",
+ "404": "Нет связи с серверами Steam.",
+ "Password": "Неверный пароль.",
+ "InvalidCredentials": "Ваша почта или пароль неверны 😴",
+ "InvalidPassword": "Ваш пароль неверен 😕",
+ "NoManifest": "Файл манифеста не найден",
+ "DirectoryCreate": "Не смогли создать нужные папки.",
+ "NotAvailableApp": "Вы пытаетесь скачать Beat Saber, не купив её? 🤣",
+ "DepotNotFound": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕",
+ "NotCompleted": "Скачивание не завершилось ¯\\_(ツ)_/¯",
+ "InvalidManifest": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕",
+ "NoValidKey": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕",
+ "NoManifestCode": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕",
+ "Unknown": "Неизвестная ошибка ¯\\_(ツ)_/¯",
+ "NoServer": "Нет связи с серверами Steam.",
+ "NotAllowed": "Внезапно, вы не можете скачать Beat Saber 🥱",
+ "ConnectionTimeout": "Не удалось подключиться к Steam 😕",
+ "SteamLib": "Если вы это видите, пожалуйста, сообщите о баге на GitHub с файлом логов.",
+ "ConnectionError": "Не удалось подключиться к Steam за 10 попыток 🤯",
+ "LicenceError": "Не удалось проверить наличие лицензии.",
+ "verification-failed": "Верификация провалена, повторите попытку позже.",
+ "RateLimitExceeded": "Слишком много попыток, вернитесь позже и попробуйте снова.",
+ "AlreadyDownloading": "Скачивание уже в процессе",
+ "no-internet": "Нет интернета.",
+ "dotnet-required": "Среда запуска .NET 6 должна быть установлена, чтобы скачать Beat Saber. Скачайте её с помощью кнопки ниже."
+ },
+ "actions": {
+ "download-dotnet": "Скачать .NET 6"
+ }
+ }
+ },
+ "bs-import-version": {
+ "success": {
+ "start-import": {
+ "title": "Импортируем 👌",
+ "desc": "Импорт может занять какое-то время в зависимости от вашего компьютера."
+ },
+ "imported": {
+ "title": "Версия импортирована 🎉"
+ }
+ },
+ "errors": {
+ "import-error": {
+ "desc": "Убедитесь, что выбранная папка - это корневая папка Beat Saber."
+ }
+ }
+ },
+ "settings": {
+ "move-folder": {
+ "success": {
+ "titles": {
+ "transfer-started": "Перемещение в процессе",
+ "transfer-finished": "Перемещение завершено"
+ },
+ "descs": {
+ "transfer-started": "Перемещение может занять какое-то время в зависимости от вашего компьютера."
+ }
+ },
+ "errors": {
+ "titles": {
+ "transfer-failed": "Ошибка перемещения 😕"
+ },
+ "descs": {
+ "COPY_TO_SUBPATH": "The destination folder cannot be a subfolder of the source folder.",
+ "restore-linked-folders": "Произошла ошибка при перемещении общих папок. Вы сами можете переместить файлы, нажмите 'Общие папки' в меню версии."
+ }
+ }
+ },
+ "steam": {
+ "success": {
+ "titles": {
+ "logout": "Вышли из Steam."
+ }
+ }
+ },
+ "additional-content": {
+ "deep-link": {
+ "select-all": "Выбрать всё",
+ "activation": {
+ "success": {
+ "title": "OneClick включена!",
+ "description": "OneClick установка теперь включена."
+ },
+ "error": {
+ "description": "Не удалось включить OneClick установку."
+ }
+ },
+ "deactivation": {
+ "success": {
+ "title": "OneClick выключена!",
+ "description": "OneClick установка теперь отключена."
+ },
+ "error": {
+ "description": "Неизвестная ошика."
+ }
+ },
+ "check-all-enabled": {
+ "title": "OneClick отключен",
+ "description": "Один или более вариантов OneClick установок отключены. Перейдите в настройки, чтобы включить их.",
+ "actions": {
+ "settings": "Настройки",
+ "not-remind": "Больше не напоминать"
+ }
+ }
+ }
+ }
+ },
+ "bs-launch": {
+ "success": {
+ "titles": {
+ "BS_LAUNCHING": "Запуск...🚀",
+ "STEAM_LAUNCHING": "Steam запускается!"
+ },
+ "msg": {
+ "BS_LAUNCHING": "Не забудьте разогреться 😉",
+ "STEAM_LAUNCHING": "Beat Saber запустится сам после Steam."
+ }
+ },
+ "errors": {
+ "titles": {
+ "UNKNOWN_ERROR": "Не удалось запустить",
+ "STEAM_NOT_RUNNING": "Steam не запущен",
+ "OCULUS_NOT_RUNNING": "Oculus не запущен",
+ "BS_ALREADY_RUNNING": "Beat Saber уде запущен",
+ "EXE_NOT_FINDED": "Отсутствуют файлы",
+ "EXIT": "Вылет"
+ },
+ "msg": {
+ "UNKNOWN_ERROR": "Возникла неизвестная ошибка.",
+ "STEAM_NOT_RUNNING": "Steam должен быть запущен, чтобы запустить BeatSaber.",
+ "OCULUS_NOT_RUNNING": "Oculus должен быть запущен, чтобы запустить BeatSaber.",
+ "BS_ALREADY_RUNNING": "Закройте BeatSaber, чтобы запустить его.",
+ "EXE_NOT_FINDED": "Некоторые файлы отсутствуют, пробуем их проверить.",
+ "EXIT": "BeatSaber вылетел, пытаемся проверить файлы."
+ },
+ "actions": {
+ "STEAM_NOT_RUNNING": "Запустить Steam"
+ }
+ }
+ },
+ "steam": {
+ "steam-launching": {
+ "title": "Steam запускается!",
+ "description": "Beat Saber запустится сам после Steam."
+ }
+ },
+ "custom-version": {
+ "errors": {
+ "titles": {
+ "CantEditSteam": "Не удалось изменить",
+ "CantRename": "Переименование невозможно",
+ "VersionAlreadExist": "Эта версия уже добавлена",
+ "CantClone": "Клонирование невозможно"
+ },
+ "msg": {
+ "CantEditSteam": "Вы не можете изменить версию из Steam, но вы можете её клонировать."
+ }
+ },
+ "success": {
+ "titles": {
+ "CloningFinished": "Клонирование завершено 🎉"
+ }
+ }
+ },
+ "mods": {
+ "install-mods": {
+ "titles": {
+ "success": "Моды установлены 🎉",
+ "warning": "Моды установлены 🤔"
+ },
+ "msg": {
+ "success": "Все моды были установлены.",
+ "warning": "Лишь часть модов была установлена.",
+ "errors": {
+ "no-mods": "Нет модов для установки.",
+ "cannot-install-bsipa": "Ошибка установки BSIPA 😨"
+ }
+ }
+ },
+ "uninstall-mod": {
+ "titles": {
+ "success": "Мод удалён 🎉"
+ },
+ "msg": {
+ "errors": {
+ "no-mods": "Этот мод не установлен 😑"
+ }
+ }
+ },
+ "uninstall-all-mods": {
+ "titles": {
+ "success": "Моды удалены 🎉"
+ },
+ "msg": {
+ "success": "Все моды были удалены.",
+ "errors": {
+ "no-mods": "Для этой версии не было установлено модов 😑"
+ }
+ }
+ }
+ },
+ "maps": {
+ "one-click-install": {
+ "success": "Карта установлена",
+ "error": "Ошибка установки карты"
+ }
+ },
+ "playlists": {
+ "one-click-install": {
+ "success": "Плейлист установлен",
+ "error": "Ошибка установки плейлиста"
+ }
+ },
+ "models": {
+ "one-click-install": {
+ "success": "Модель установлена",
+ "error": "Ошибка установки модели"
+ }
+ },
+ "shared-folder": {
+ "info": {
+ "userdata-backup-created": {
+ "title": "Бэкап создан",
+ "msg": "Общая папка 'UserData' может создавать ошибки. В случае проблем отвяжите папку, чтобы восстановить бэкап."
+ }
+ }
+ },
+ "create-launch-shortcut": {
+ "success": {
+ "title": "Ярлык создан",
+ "msg": "Ярлык находится на рабочем столе."
+ },
+ "error": {
+ "msg": "Ошибка создания ярлыка."
+ }
+ }
+ },
+ "modals": {
+ "misc": {
+ "remember-my-choice": "Запомнить выбор"
+ },
+ "guard": {
+ "title": "Steam Guard",
+ "inputs": {
+ "guard-code": {
+ "label": "Код Steam Guard",
+ "placeholder": "Введите код Steam Guard"
+ }
+ },
+ "buttons": {
+ "submit": "Войти"
+ }
+ },
+ "steam-login": {
+ "title": "Вход в Steam",
+ "inputs": {
+ "username": {
+ "label": "Имя пользователя",
+ "placeholder": "Введите имя пользователя"
+ },
+ "password": {
+ "label": "Пароль",
+ "placeholder": "Введите пароль",
+ "max-length-warning": "Пароль больше 64-х символов! Если пароль неверен, введите первые 64 символа."
+ },
+ "stay": {
+ "label": "Оставаться в аккаунте"
+ }
+ },
+ "why-credentials": "Почему нужны мои данные для входа?",
+ "buttons": {
+ "submit": "Войти"
+ }
+ },
+ "steam-credentials": {
+ "title": "Данные входа Steam",
+ "p-1": "Данные входа используются только при скачивании, чтобы проверить наличие у вас Beat Saber, это нужно Steam, чтобы разрешить скачивание. Они не сохраняются и напрямую передаются в DepotDownloader. Если вы не хотите вводить данные для входа, воспользуйтесь руководством(Оно на английском языке) :",
+ "p-2": "Нажмите на шестерню справа вверху и выберите \"Импорт версии\", выберите папку со скачанным Beat Saber (Если вы воспользовались руководством, у вас должен быть корректный путь к папке)"
+ },
+ "bs-import-version": {
+ "title": "Импорт версии",
+ "description": "Импортировать версию Beat Saber, чтобы использоваться BSManager. Beat Saber будет скопирован в папку версий BSManager.",
+ "buttons": {
+ "submit": "Импортировать версию"
+ }
+ },
+ "bs-uninstall": {
+ "title": "Удалить",
+ "description": "Вы действительно хотите удалить Beat Saber {version}? Вам нужно будет снова её скачать, чтобы поиграть.",
+ "buttons": {
+ "submit": "Удалить"
+ }
+ },
+ "install-folder": {
+ "title": "Папка установок",
+ "description": "Все данные будут перемещены в новую папку.",
+ "buttons": {
+ "submit": "Выбрать папку"
+ }
+ },
+ "edit-version": {
+ "title": "Изменить версию",
+ "buttons": {
+ "submit": "Изменить"
+ }
+ },
+ "clone-version": {
+ "title": "Клонировать версию",
+ "description": "Клонирование версий позволит вам установить разный контент для каждой копии Beat Saber.",
+ "inputs": {
+ "name": {
+ "label": "Имя",
+ "placeholder": "Имя версии"
+ },
+ "color": {
+ "label": "Цвет"
+ }
+ },
+ "buttons": {
+ "submit": "Клонировать"
+ }
+ },
+ "uninstall-mod": {
+ "title": "Удаление мода",
+ "description": "Вы точно хотите удалить {mod}? Другие моды могут перестать работать.",
+ "description-bsipa": "AВы точно хотите удалить BSIPA? Все моды перестануть работать."
+ },
+ "uninstall-all-mods": {
+ "title": "Удаление всех модов",
+ "description": "Вы точно хотите удалить все моды для версии {version}? Это необратимое действие."
+ },
+ "maps-actions": {
+ "delete-maps": {
+ "title": {
+ "single": "Удалить карту?",
+ "multiple": "Удалить карты?"
+ },
+ "desc": {
+ "single": "Вы точно хотите удалить карту {name}?",
+ "multiple": "Вы точно хотите удалить {nb} карт(ы)?"
+ },
+ "info": {
+ "desc": {
+ "single": "Это общая карта",
+ "multiple": "Это общие карты"
+ },
+ "title": {
+ "single": "Эта карта будет удалена из всех версий, использующих общие карты",
+ "multiple": "Эти карты будут удалены из всех версий, использующих общие карты"
+ }
+ }
+ },
+ "link-maps": {
+ "title": "Связать карты",
+ "desc": "Общие карты доступны во всех версиях игры с этой функцией. Пока связь есть, эта версия будет иметь общие карты.",
+ "info": "Добавление и удаление карт так же будут общими",
+ "keep-maps": {
+ "label": "Оставить карты",
+ "title": "Все карты из этой версии станут общими. Если не включить, то карты этой версии будут потеряны."
+ },
+ "valid-btn": "Связать карты"
+ },
+ "unlink-maps": {
+ "title": "Отвязать карты",
+ "desc": "Осторожно, отвязка карт сделает недоступными общие карты для этой версии, пока вы не свяжете их снова.",
+ "keep-maps": {
+ "label": "Оставить карты",
+ "title": "Общие карты будут скопированы в папку карт этой версии. Карты не будут потеряны, если это не выбрано."
+ },
+ "valid-btn": "Отвязать карты"
+ }
+ },
+ "download-maps": {
+ "search-btn": "Поиск",
+ "loading-maps": "Загрузка карт...",
+ "no-maps-found": "Карты не найдены",
+ "no-internet": "Нет интернета"
+ },
+ "mods-disclaimer": {
+ "title": "внимание",
+ "p-1": "Играя с модами, вы соглашаетесь, что:",
+ "li-1": "У вам могут быть проблемы, которых нет в оригинальной игре. 99.9% багов, вылетов и лагов из-за модов.",
+ "li-2": "Моды могут быть несовместимы с обновлениями и это норма - будьте терпеливы и уважайте мододелов, они волонтёры со своими личными жизнями.",
+ "li-3": "Beat Games не специально ломают моды. Они лишь обновляют код, что иногда ломает коды. Они не хотят уничтожить моды",
+ "p-2": "Не спамьте разработчикам игры из-за проблем с модами и наоборот - мододелы и разработчики игры - разные группы людей. Не будьте идиотами."
+ },
+ "shared-folders": {
+ "title": "Общие папки",
+ "description": "Свяжите папки Beat Saber, чтобы они стали общими и их содержимое было в других версиях. Заметьте, что удаление файлов так же будет общим.",
+ "buttons": {
+ "add-folder": "Добавить папку",
+ "link-folder": "Связать папку",
+ "unlink-folder": "Отвязать папку",
+ "link-all": "Связать всё"
+ }
+ },
+ "create-launch-shortcut": {
+ "title": "Создать ярлык",
+ "desc": "Ярлык позволит вам запустить Beat Saber без помощи BSManager.",
+ "launch-options": "Параметры запуска",
+ "advanced-launch": "Расширенный запуск",
+ "valid-btn": "Создать ярлык"
+ }
+ },
+ "maps": {
+ "map-filter-panel": {
+ "duration": "Длительность",
+ "tags": "тэги",
+ "specificities": "основное",
+ "requirements": "требуемые моды"
+ },
+ "map-types": {
+ "accuracy": "точность",
+ "balanced": "баланс",
+ "challenge": "испытание",
+ "dancestyle": "танец",
+ "fitness": "фитнес",
+ "speed": "скорость",
+ "tech": "техника"
+ },
+ "map-styles": {
+ "dance": "танец",
+ "swing": "свинг",
+ "nightcore": "найткор",
+ "folk": "народные",
+ "family": "семейные",
+ "ambient": "эмбиент",
+ "funk": "фанк",
+ "jazz": "джаз",
+ "soul": "соул",
+ "speedcore": "спидкор",
+ "punk": "панк",
+ "rb": "ар-н-би",
+ "holiday": "праздник",
+ "vocaloid": "вокалоиды",
+ "jrock": "джей-рок",
+ "trance": "транс",
+ "drumbass": "драм-н-бейс",
+ "comedy": "комедия",
+ "instrumental": "инструментальные",
+ "hardcore": "хардкор",
+ "kpop": "кей-поп",
+ "indie": "инди",
+ "techno": "техно",
+ "house": "хаус",
+ "game": "видеоигры",
+ "film": "фильмы",
+ "alt": "альтернативные",
+ "dubstep": "дапстеп",
+ "metal": "метал",
+ "anime": "аниме",
+ "hiphop": "хипхоп",
+ "jpop": "джей-поп",
+ "rock": "прк",
+ "pop": "поп",
+ "electronic": "электроника",
+ "classical-orchestral": "Классика и Оркестр"
+ },
+ "map-specificities": {
+ "automapper": "ИИ",
+ "ranked": "с рейтингом",
+ "curated": "оценённые куратором",
+ "verified": "проверенные авторы",
+ "fullSpread": "полный набор"
+ },
+ "difficulties": {
+ "Easy": "легко",
+ "Normal": "нормально",
+ "Hard": "сложно",
+ "Expert": "эксперт",
+ "ExpertPlus": "эксперт+"
+ },
+ "map-item": {
+ "by": "От {songAutor}",
+ "mapped-by": "автор карты "
+ }
+ },
+ "models": {
+ "types": {
+ "singular": {
+ "avatar": "аватар",
+ "saber": "мечь",
+ "platform": "платформа",
+ "bloq": "куб"
+ },
+ "plural": {
+ "avatar": "аватары",
+ "saber": "мечи",
+ "platform": "платформы",
+ "bloq": "кубы"
+ }
+ },
+ "sorts": {
+ "name": "Имя",
+ "date": "Дата",
+ "author": "Автор"
+ },
+ "panel": {
+ "actions": {
+ "search": "Поиск скачанных моделей",
+ "drop-down": {
+ "delete": "Удалить модели",
+ "export": "Экспорт моделей"
+ },
+ "link-models": "Связать модели",
+ "unlink-models": "Отвязать модели"
+ },
+ "grid": {
+ "loading": "Загрузка моделей...",
+ "no-models": "Нет моделей",
+ "download-models": "Скачать модели"
+ }
+ },
+ "modals": {
+ "delete-model": {
+ "title": "Удалить модель",
+ "desc": "Вы уверены, что хотите удалить модель {modelName}?",
+ "linked-annotation": "Эта модель будет удалена из всех соединённых версий."
+ },
+ "delete-models": {
+ "title": "Удалить модели",
+ "desc": "Вы уверены, что хотите удалить {nb} модели(ей)?",
+ "linked-annotation": "Эти модели будут удалены из всех соединённых версий."
+ },
+ "download-models": {
+ "search-btn": "Поиск",
+ "search-placeholder": "Поиск моделей",
+ "search-tips": {
+ "header": {
+ "tag": "Тэги",
+ "desc": "Описание"
+ },
+ "author-desc": "Показывать модели только от определённого автора.",
+ "hash-desc": "Показывать модели только с определённым хэшом.",
+ "tag-desc": "Показывать модели только с определённым тэгом.",
+ "name-desc": "Показывать модели только с определённым именем.",
+ "discordid-desc": "Показывать модели только от определённого пользователя Discord.",
+ "status-desc": "Показывать модели только с определённым статусом. (только профиль, и только для авторов)"
+ },
+ "no-models": "Модели не найдены.",
+ "no-internet": "Нет интернета.",
+ "error-occured": "Ошибка, повторите попытку позже."
+ },
+ "link-models": {
+ "avatar": {
+ "title": "Связать аватары",
+ "desc": "Общие аватары доступны во всех версиях игры с этой функцией. Пока связь есть, эта версия будет иметь общие аватары.",
+ "info": "Добавление и удаление аватаров так же будут общими",
+ "keep-models": {
+ "label": "Оставить аватары",
+ "title": "Все аватары из этой версии станут общими. Если не включить, то аватары этой версии будут потеряны."
+ },
+ "valid-btn": "Связать аватары"
+ },
+ "saber": {
+ "title": "Связать мечи",
+ "desc": "Общие мечи доступны во всех версиях игры с этой функцией. Пока связь есть, эта версия будет иметь общие мечи.",
+ "info": "Добавление и удаление мечей так же будут общими",
+ "keep-models": {
+ "label": "Оставить мечи",
+ "title": "Все мечи из этой версии станут общими. Если не включить, то мечи этой версии будут потеряны."
+ },
+ "valid-btn": "Связать мечи"
+ },
+ "platform": {
+ "title": "Связать платформы",
+ "desc": "Общие платформы доступны во всех версиях игры с этой функцией. Пока связь есть, эта версия будет иметь общие платформы.",
+ "info": "Добавление и удаление платформ так же будут общими",
+ "keep-models": {
+ "label": "Оставить платформы",
+ "title": "Все платформы из этой версии станут общими. Если не включить, то платформы этой версии будут потеряны."
+ },
+ "valid-btn": "Связать платформы"
+ },
+ "bloq": {
+ "title": "Связать кубы",
+ "desc": "Общие кубы доступны во всех версиях игры с этой функцией. Пока связь есть, эта версия будет иметь общие кубы.",
+ "info": "Adding and deleting bloqs will also be shared",
+ "keep-models": {
+ "label": "Оставить кубы",
+ "title": "Все кубы из этой версии станут общими. Если не включить, то кубы этой версии будут потеряны."
+ },
+ "valid-btn": "Связать кубы"
+ }
+ },
+ "unlink-models": {
+ "avatar": {
+ "title": "Отвязать аватары",
+ "desc": "Осторожно, отвязка аватаров сделает недоступными общие аватары для этой версии, пока вы не свяжете их снова.",
+ "keep-models": {
+ "label": "Оставить аватары",
+ "title": "Общие аватары будут скопированы в папку аватаров этой версии. Аватары не будут потеряны, если это не выбрано."
+ },
+ "valid-btn": "Отвязать аватары"
+ },
+ "saber": {
+ "title": "Отвязать мечи",
+ "desc": "Осторожно, отвязка мечей сделает недоступными общие мечи для этой версии, пока вы не свяжете их снова.",
+ "keep-models": {
+ "label": "Оставить мечи",
+ "title": "Общие мечи будут скопированы в папку мечей этой версии. Мечи не будут потеряны, если это не выбрано."
+ },
+ "valid-btn": "Отвязать мечи"
+ },
+ "platform": {
+ "title": "Отвязать платформы",
+ "desc": "Осторожно, отвязка платформ сделает недоступными общие платформы для этой версии, пока вы не свяжете их снова.",
+ "keep-models": {
+ "label": "Оставить платформы",
+ "title": "Общие платформы будут скопированы в папку платформ этой версии. Платформы не будут потеряны, если это не выбрано."
+ },
+ "valid-btn": "Отвязать платформы"
+ },
+ "bloq": {
+ "title": "Отвязать кубы",
+ "desc": "Осторожно, отвязка кубов сделает недоступными общие кубы для этой версии, пока вы не свяжете их снова.",
+ "keep-models": {
+ "label": "Оставить кубы",
+ "title": "Общие кубы будут скопированы в папку кубов этой версии. Кубы не будут потеряны, если это не выбрано."
+ },
+ "valid-btn": "Отвязать кубы"
+ }
+ }
+ },
+ "notifications": {
+ "prevent-for-mods": {
+ "title": "Требуемые моды",
+ "desc": "Убедитесь, что вы установили все нужные моды, чтобы использовать модели в Beat Saber",
+ "go-to-mods": "Перейти к модам",
+ "not-remind": "Больше не напоминать"
+ },
+ "prevent-for-models-breaks": {
+ "title": "Сломанные модели",
+ "desc": "После обновления движка Beat Saber, модели не работают с этой версией."
+ },
+ "export-success": {
+ "title": "Экспорт завершен 🎉"
+ }
+ }
+ },
+ "beat-saver": {
+ "maps-sorts": {
+ "Latest": "Недавние",
+ "Relevance": "Релевантные",
+ "Rating": "Рейтинг",
+ "Curated": "Оценённые куратором"
+ }
+ },
+ "auto-update": {
+ "checking": "Проверка на обновления",
+ "downloading": "Скачивание обновления"
+ },
+ "bs-shortcut-launch": {
+ "beat-saber-launching": "Запускается Beat Saber",
+ "launching": "Запуск",
+ "open-bsmanager": "Открыть BSManager",
+ "status-text": {
+ "init": "Инициализация...",
+ "success": {
+ "BS_LAUNCHING": "Запускаем Beat Saber...",
+ "STEAM_LAUNCHING": "Запускаем Steam...",
+ "STEAM_LAUNCHED": "Steam запущен!",
+ "UNABLE_TO_LAUNCH_STEAM": "Не удалось запустить Steam, пытаемся запустить Beat Saber..."
+ }
+ }
+ },
+ "dateformat": {
+ "dayNames": ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Воскресение", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"],
+ "monthNames": ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авн", "Сен", "Окт", "Ноя", "Дек", "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
+ "timeNames": ["д", "п", "дп", "пп", "Д", "П", "ДП", "ПП"]
+ }
+}
diff --git a/src/renderer/components/svgs/bsm-icon.component.tsx b/src/renderer/components/svgs/bsm-icon.component.tsx
index 7ba0ae47..af6a1ec7 100644
--- a/src/renderer/components/svgs/bsm-icon.component.tsx
+++ b/src/renderer/components/svgs/bsm-icon.component.tsx
@@ -52,6 +52,7 @@ import { VolumeUpIcon } from "./icons/volume-up-icon.component";
import { VolumeOffIcon } from "./icons/volume-off-icon.component";
import { VolumeDownIcon } from "./icons/volume-down-icon.component";
import { GermanIcon } from "./flags/german-icon.component";
+import { RussianIcon } from "./flags/russian-icon.component";
import { MSModelType } from "shared/models/models/model-saber.model";
import { ModelTypeAvatarIcon } from "./icons/model-type-avatar-icon.component";
import { ModelTypeSaberIcon } from "./icons/model-type-saber-icon.component";
@@ -61,7 +62,7 @@ import { ChevronTopIcon } from "./icons/chevron-top-icon.component";
import { EyeCrossIcon } from "./icons/eye-cross-icon.component";
import { ShortcutIcon } from "./icons/shortcut-icon.component";
-export type BsmIconType = BsvMapCharacteristic | MSModelType | ("settings" | "trash" | "favorite" | "folder" | "bsNote" | "check" | "three-dots" | "twitch" | "eye" | "play" | "checkCircleIcon" | "discord" | "info" | "eye-cross" | "terminal" | "desktop" | "oculus" | "add" | "cross" | "task" | "github" | "close" | "thumbUpFill" | "timerFill" | "pause" | "twitter" | "sync" | "chevron-top" | "copy" | "steam" | "edit" | "export" | "patreon" | "search" | "bsMapDifficulty" | "link" | "unlink" | "download" | "filter" | "mee6" | "volume-up" | "volume-off" | "volume-down" | "shortcut" | "fr-FR-flag" | "es-ES-flag" | "en-US-flag" | "en-EN-flag" | "de-DE-flag");
+export type BsmIconType = BsvMapCharacteristic | MSModelType | ("settings" | "trash" | "favorite" | "folder" | "bsNote" | "check" | "three-dots" | "twitch" | "eye" | "play" | "checkCircleIcon" | "discord" | "info" | "eye-cross" | "terminal" | "desktop" | "oculus" | "add" | "cross" | "task" | "github" | "close" | "thumbUpFill" | "timerFill" | "pause" | "twitter" | "sync" | "chevron-top" | "copy" | "steam" | "edit" | "export" | "patreon" | "search" | "bsMapDifficulty" | "link" | "unlink" | "download" | "filter" | "mee6" | "volume-up" | "volume-off" | "volume-down" | "shortcut" | "fr-FR-flag" | "es-ES-flag" | "en-US-flag" | "en-EN-flag" | "de-DE-flag" | "ru-RU-flag");
export const BsmIcon = memo(({ className, icon, style }: { className?: string; icon: BsmIconType; style?: CSSProperties }) => {
// TODO : Very ugly very messy, need to find a better way to do this
@@ -112,6 +113,9 @@ export const BsmIcon = memo(({ className, icon, style }: { className?: string; i
if (icon === "de-DE-flag") {
return ;
}
+ if (icon === "ru-RU-flag") {
+ return ;
+ }
if (icon === "task") {
return ;
}
diff --git a/src/renderer/components/svgs/flags/russian-icon.component.tsx b/src/renderer/components/svgs/flags/russian-icon.component.tsx
new file mode 100644
index 00000000..e653dd20
--- /dev/null
+++ b/src/renderer/components/svgs/flags/russian-icon.component.tsx
@@ -0,0 +1,20 @@
+import { CSSProperties } from "react";
+
+export function RussianIcon(props: { className?: string; style?: CSSProperties }) {
+ return (
+
+ );
+}
diff --git a/src/renderer/config/default-configuration.config.ts b/src/renderer/config/default-configuration.config.ts
index 9012fa7e..9bd4eb64 100644
--- a/src/renderer/config/default-configuration.config.ts
+++ b/src/renderer/config/default-configuration.config.ts
@@ -3,7 +3,7 @@ export const defaultConfiguration: { [key in DefaultConfigKey]: any } = {
"second-color": "#ff4444",
theme: "os",
language: window.navigator.language.length <= 2 ? `${window.navigator.language}-${window.navigator.language.toLocaleUpperCase()}` : window.navigator.language,
- supported_languages: ["en-US", "en-EN", "fr-FR", "es-ES", "de-DE"],
+ supported_languages: ["en-US", "en-EN", "fr-FR", "es-ES", "de-DE", "ru-RU"],
default_mods: ["SongCore", "WhyIsThereNoLeaderboard", "BeatSaverDownloader", "BeatSaverVoting", "PlaylistManager"],
"default-shared-folders": [
window.electron.path.join("Beat Saber_Data", "CustomLevels"),