diff --git a/packages/ui/public/locales/ru.json b/packages/ui/public/locales/ru.json
new file mode 100644
index 0000000000..230635c9f2
--- /dev/null
+++ b/packages/ui/public/locales/ru.json
@@ -0,0 +1,571 @@
+{
+ "2fa": "2FA",
+ "2fa-description": "Дополнительный уровень безопасности для входа в Umbrel и приложения",
+ "2fa.disable.success": "Двухфакторная аутентификация отключена",
+ "2fa.disable.title": "Отключить двухфакторную аутентификацию",
+ "2fa.enable.or-paste": "Или вставьте следующий код в приложение-аутентификатор",
+ "2fa.enable.scan-this": "Отсканируйте этот QR-код с помощью приложения-аутентификатора, такого как Google Authenticator или Authy",
+ "2fa.enable.success": "Двухфакторная аутентификация включена",
+ "2fa.enable.title": "Включить двухфакторную аутентификацию",
+ "2fa.enter-code": "Введите код, отображаемый в вашем приложении для аутентификации",
+ "account": "Аккаунт",
+ "account-description": "Ваше имя и пароль",
+ "advanced-settings": "Расширенные настройки",
+ "advanced-settings-description": "Терминал, программа umbrelOS Beta, Cloudflare DNS и другое",
+ "app-not-found": "Приложение не найдено: {{app}}",
+ "app-only-over-tor": "{{app}} можно использовать только через Tor. Пожалуйста, откройте ваш Umbrel в браузере Tor по URL-адресу удаленного доступа (Настройки > цУдаленный доступ через Tor), чтобы открыть это приложение.",
+ "app-page.section.about": "О приложении",
+ "app-page.section.credentials.title": "Учетные данные по умолчанию",
+ "app-page.section.dependencies.n-alternatives": "Смотрите {{count}} альтернатив",
+ "app-page.section.info.compatibility": "Совместимость",
+ "app-page.section.info.compatibility-compatible": "Совместимо",
+ "app-page.section.info.compatibility-not-compatible": "Не совместимо",
+ "app-page.section.info.developer": "Разработчик",
+ "app-page.section.info.source-code": "Исходный код",
+ "app-page.section.info.source-code.public": "Публичный",
+ "app-page.section.info.submitted-by": "Предоставлено",
+ "app-page.section.info.support": "Получить поддержку",
+ "app-page.section.info.title": "Информация",
+ "app-page.section.info.version": "Версия",
+ "app-page.section.recommendations.title": "Вам также может понравиться",
+ "app-page.section.release-notes.title": "Что нового",
+ "app-page.section.release-notes.version": "Версия {{version}}",
+ "app-page.section.requires": "Требуется",
+ "app-picker.search": "Поиск...",
+ "app-picker.select-app": "Выберите приложение...",
+ "app-settings.connected-to": "{{appName}} подключен к этим приложениям",
+ "app-settings.save-changes": "Сохранить изменения",
+ "app-settings.title": "Настройки",
+ "app-store.browse-category-apps": "Просмотр приложений в категории {{category}}",
+ "app-store.category.ai": "ИИ",
+ "app-store.category.all": "Все приложения",
+ "app-store.category.automation": "Дом и автоматизация",
+ "app-store.category.bitcoin": "Биткоин",
+ "app-store.category.developer": "Инструменты разработки",
+ "app-store.category.discover": "Открытия",
+ "app-store.category.files": "Файлы и продуктивность",
+ "app-store.category.finance": "Финансы",
+ "app-store.category.media": "Медиа",
+ "app-store.category.networking": "Сеть",
+ "app-store.category.social": "Социальные сети",
+ "app-store.description": "Настройки обновления приложений",
+ "app-store.menu.community-app-stores": "App Stores сообщества",
+ "app-store.search-apps": "Поиск приложений",
+ "app-store.search.no-results": "Нет результатов",
+ "app-store.search.results-for": "Результаты для",
+ "app-store.title": "App Store",
+ "app-updates.less": "меньше",
+ "app-updates.more": "больше",
+ "app-updates.no-updates": "Все приложения обновлены!",
+ "app-updates.update": "Обновить",
+ "app-updates.update-all": "Обновить все",
+ "app-updates.updates-available-count_one": "Доступно {{count}} обновление",
+ "app-updates.updates-available-count_other": "Доступно {{count}} обновления (-й)",
+ "app-updates.updating": "Обновление...",
+ "app.install": "Установить",
+ "app.installed": "Установлено",
+ "app.installing": "Установка",
+ "app.offline": "Не запущено",
+ "app.open": "Открыть",
+ "app.optimized-for-umbrel-home": "Оптимизировано для Umbrel Home",
+ "app.os-update-required.confirm": "Проверить обновления umbrelOS",
+ "app.os-update-required.description": "{{appName}} требует umbrelOS {{version}} или новее",
+ "app.os-update-required.title": "Обновить umbrelOS",
+ "app.restarting": "Перезапуск",
+ "app.starting": "Запуск",
+ "app.stopped": "Остановлено",
+ "app.stopping": "Остановка",
+ "app.uninstall.confirm.description": "Все данные, связанные с {{app}}, будут удалены безвозвратно. Это действие нельзя отменить.",
+ "app.uninstall.confirm.submit": "Удалить",
+ "app.uninstall.confirm.title": "Удалить {{app}}?",
+ "app.uninstall.deps.used-by.description_one": "Сначала удалите {{firstAppToUninstall}}, чтобы удалить {{app}}.",
+ "app.uninstall.deps.used-by.description_other": "Сначала удалите эти приложения, чтобы удалить {{app}}.",
+ "app.uninstall.deps.used-by.title": "{{app}} используется",
+ "app.uninstalling": "Удаление",
+ "app.updating": "Обновление",
+ "app.view": "Просмотр",
+ "app_one": "приложение",
+ "app_other": "приложения",
+ "apps.uninstall.failed-to-get-required-apps": "Не удалось получить необходимые приложения",
+ "apps.uninstalled-all.success": "Все приложения удалены",
+ "auth.checking-backend-for-user": "Загрузка...",
+ "auth.failed-checking-if-user-logged-in": "Ошибка: Не удалось проверить вход",
+ "auth.failed-to-check-if-user-exists": "Ошибка: Не удалось проверить существование пользователя",
+ "beta-program": "Программа umbrelOS Beta",
+ "beta-program-description": "Подключитесь, чтобы получать бета-обновления umbrelOS, получить ранний доступ к новым функциям и помочь нам улучшить их, предоставляя обратную связь. Бета-обновления могут быть нестабильными, и для устранения неполадок могут потребоваться знания терминала.",
+ "cancel": "Отмена",
+ "change": "Изменить",
+ "change-name": "Изменить имя",
+ "change-name.failed.name-required": "Имя обязательно",
+ "change-name.input-placeholder": "Ваше имя",
+ "change-password": "Изменить пароль",
+ "change-password.callout": "Если вы потеряете пароль, вы не сможете войти в свой Umbrel. Убедитесь, что вы его надежно сохранили.",
+ "change-password.current-password": "Текущий пароль",
+ "change-password.failed.current-required": "Текущий пароль обязателен",
+ "change-password.failed.min-length": "Пароль должен быть не менее {{characters}} символов",
+ "change-password.failed.must-be-unique": "Новый пароль должен отличаться от текущего",
+ "change-password.failed.new-required": "Новый пароль обязателен",
+ "change-password.failed.no-match": "Пароли не совпадают",
+ "change-password.failed.repeat-required": "Повтор пароля обязателен",
+ "change-password.new-password": "Новый пароль",
+ "change-password.repeat-password": "Повторите пароль",
+ "check-for-latest-version": "Проверить последнюю версию umbrelOS",
+ "clipboard.copied": "Скопировано",
+ "close": "Закрыть",
+ "cmdk.change-wallpaper": "Изменить обои",
+ "cmdk.frequent-apps": "Часто используемые",
+ "cmdk.input-placeholder": "Поиск приложений, настроек или действий",
+ "cmdk.install-from-app-store": "из магазина приложений",
+ "cmdk.live-usage": "Текущее использование",
+ "cmdk.restart-umbrel": "Перезапустить Umbrel",
+ "cmdk.shutdown-umbrel": "Выключить Umbrel",
+ "cmdk.update-all-apps": "Обновить все приложения",
+ "cmdk.widgets": "Виджеты",
+ "community-app-store": "Сообщество App Store",
+ "community-app-store.back-to-umbrel-app-store": "Вернуться в Umbrel App Store",
+ "community-app-store.open-button": "Открыть",
+ "community-app-store.remove-button": "Удалить",
+ "community-app-stores.add-button": "Добавить",
+ "community-app-stores.description": "App Stores сообщества позволяют устанавливать приложения на ваш Umbrel, которые могут быть недоступны в официальном магазине Umbrel App Store. Они также позволяют тестировать бета-версии приложений Umbrel до их выпуска разработчиками в официальном магазине.",
+ "community-app-stores.learn-more": "Узнать больше",
+ "community-app-stores.warning": "App Stores сообщества могут быть созданы кем угодно. Приложения, опубликованные в них, не проверяются и не одобряются командой официального магазина Umbrel App Store и могут быть небезопасными или вредоносными. Будьте осторожны и добавляйте только те магазины приложений, которым вы доверяете.",
+ "confirm": "Подтвердить",
+ "connecting": "Подключение...",
+ "continue": "Продолжить",
+ "continue-to-log-in": "Продолжить вход",
+ "cpu": "ЦП",
+ "cpu-core-count": "{{cores}} потоков",
+ "create-user": "Создать пользователя",
+ "default-credentials.close": "Понятно",
+ "default-credentials.description": "Учетные данные по умолчанию, которые вам понадобятся для входа в приложение.",
+ "default-credentials.dont-show-again": "Не показывать снова",
+ "default-credentials.dont-show-again-notice": "Вы можете получить доступ к этим учетным данным в любое время, нажав правой кнопкой мыши на значок приложения.",
+ "default-credentials.open": "Открыть {{app}}",
+ "default-credentials.password": "Пароль по умолчанию",
+ "default-credentials.title": "Учетные данные для {{app}}",
+ "default-credentials.username": "Имя пользователя по умолчанию",
+ "desktop.app.context.go-to-store-page": "Просмотреть в магазине приложений",
+ "desktop.app.context.settings": "Настройки",
+ "desktop.app.context.show-default-credentials": "Показать учетные данные по умолчанию",
+ "desktop.app.context.uninstall": "Удалить",
+ "desktop.context-menu.change-wallpaper": "Изменить обои",
+ "desktop.context-menu.edit-widgets": "Редактировать виджеты",
+ "desktop.context-menu.logout": "Выйти",
+ "desktop.greeting.afternoon": "Добрый день, {{name}}",
+ "desktop.greeting.evening": "Добрый вечер, {{name}}",
+ "desktop.greeting.morning": "Доброе утро, {{name}}",
+ "desktop.install-first.for-the-bitcoiner": "Для криптовалютчиков",
+ "desktop.install-first.for-the-self-hoster": "Для селфхостеров",
+ "desktop.install-first.for-the-streamer": "Для стримеров",
+ "desktop.install-first.link-to-app-store": "Исследуйте больше в магазине приложений",
+ "desktop.not-enough-room": "Используйте экран большего размера для просмотра ваших приложений.",
+ "device": "Устройство",
+ "device-info": "Информация об устройстве",
+ "device-info-description": "Информация о вашем устройстве",
+ "device-info.device": "Устройство",
+ "device-info.model-number": "Номер модели",
+ "device-info.serial-number": "Серийный номер",
+ "device-info.view-info": "Просмотреть информацию",
+ "disable": "Отключить",
+ "done": "Готово",
+ "download-logs": "Скачать логи",
+ "external-dns": "Cloudflare DNS",
+ "external-dns-description": "Cloudflare DNS обеспечивает лучшую надежность сети. Отключите, чтобы использовать настройки DNS вашего роутера.",
+ "factory-reset": "Сброс к заводским настройкам",
+ "factory-reset-description": "Удалите все ваши данные и приложения, восстановив umbrelOS до заводских настроек",
+ "factory-reset.confirm.body": "Подтвердите пароль для сброса",
+ "factory-reset.confirm.ethernet-required-warning": "Убедитесь, что ваше устройство подключено к роутеру через Ethernet (не Wi-Fi) и вы получаете доступ к нему из локальной сети (например, http://umbrel.local или локальный IP-адрес вашего устройства).",
+ "factory-reset.confirm.submit": "Удалить все и сбросить",
+ "factory-reset.confirm.submit-callout": "Это действие нельзя отменить.",
+ "factory-reset.failed.message": "Произошла ошибка при сбросе",
+ "factory-reset.failed.retry": "Повторить сброс",
+ "factory-reset.failed.title": "Сброс не удался",
+ "factory-reset.resetting.dont-turn-off-device": "Не выключайте устройство до завершения сброса",
+ "factory-reset.review.account-info": "Информация об аккаунте и пароль",
+ "factory-reset.review.apps": "Приложения",
+ "factory-reset.review.following-will-be-removed": "Следующее будет удалено с вашего устройства",
+ "factory-reset.review.installed-apps_one": "{{count}} установленное приложение",
+ "factory-reset.review.installed-apps_other": "{{count}} установленных приложений",
+ "factory-reset.review.submit": "Продолжить",
+ "factory-reset.review.total-data": "Всего данных",
+ "factory-reset.success.description": "Все ваши приложения, данные и информация об аккаунте были удалены, и umbrelOS был сброшен до заводских настроек.",
+ "factory-reset.success.title": "Сброс завершен",
+ "files-action.add-favorite": "Добавить в избранное",
+ "files-action.cancel-upload": "Отменить загрузку",
+ "files-action.compress": "Сжать",
+ "files-action.copy": "Копировать",
+ "files-action.cut": "Вырезать",
+ "files-action.delete": "Удалить навсегда",
+ "files-action.download": "Скачать",
+ "files-action.download-items": "Скачать {{count}} элементов",
+ "files-action.drop-to-upload": "Перетащите для загрузки",
+ "files-action.empty-trash": "Очистить корзину",
+ "files-action.go-to-path": "Перейти к...",
+ "files-action.new-folder": "Новая папка",
+ "files-action.open": "Открыть",
+ "files-action.paste": "Вставить",
+ "files-action.remove-favorite": "Удалить из избранного",
+ "files-action.rename": "Переименовать",
+ "files-action.restore": "Восстановить",
+ "files-action.select": "Выбрать",
+ "files-action.share": "Поделиться по сети...",
+ "files-action.sharing": "Обмен...",
+ "files-action.show-in-folder": "Показать в родительской папке",
+ "files-action.trash": "Корзина",
+ "files-action.uncompress": "Распаковать",
+ "files-action.upload": "Загрузить",
+ "files-audio-island.now-playing": "Сейчас играет",
+ "files-audio-island.pause": "Пауза",
+ "files-audio-island.play": "Играть",
+ "files-download.confirm": "Скачать",
+ "files-download.description": "Files не могут открыть этот тип файла. Хотите скачать его?",
+ "files-download.title": "Скачать {{name}}?",
+ "files-empty-trash.confirm": "Очистить",
+ "files-empty-trash.description": "Вы уверены, что хотите навсегда удалить все элементы в корзине? Это действие нельзя отменить.",
+ "files-empty-trash.title": "Очистить корзину?",
+ "files-empty.directory": "Нет элементов в этой папке",
+ "files-error.add-favorite": "Ошибка добавления в избранное: {{message}}",
+ "files-error.add-share": "Ошибка добавления общей папки: {{message}}",
+ "files-error.compress": "Ошибка сжатия: {{message}}",
+ "files-error.copy": "Ошибка копирования: {{message}}",
+ "files-error.create-folder": "Ошибка создания папки: {{message}}",
+ "files-error.delete": "Ошибка удаления: {{message}}",
+ "files-error.empty-trash": "Ошибка очистки корзины: {{message}}",
+ "files-error.extract": "Ошибка извлечения: {{message}}",
+ "files-error.move": "Ошибка перемещения: {{message}}",
+ "files-error.remove-favorite": "Ошибка удаления из избранного: {{message}}",
+ "files-error.remove-share": "Ошибка удаления общей папки: {{message}}",
+ "files-error.rename": "Ошибка переименования: {{message}}",
+ "files-error.restore": "Ошибка восстановления: {{message}}",
+ "files-error.trash": "Ошибка перемещения в корзину: {{message}}",
+ "files-extension-change.confirm": "Продолжить",
+ "files-extension-change.description-add": "Вы уверены, что хотите изменить расширение файла '{{fileName}}' на '{{extension}}'? Это может сделать файл нечитаемым.",
+ "files-extension-change.description-remove": "Вы уверены, что хотите удалить расширение файла '{{fileName}}'?",
+ "files-extension-change.title-add": "Изменить расширение на '{{extension}}'?",
+ "files-extension-change.title-remove": "Удалить расширение?",
+ "files-folder": "Папка",
+ "files-listing.empty": "Нет элементов",
+ "files-listing.error": "Произошла ошибка",
+ "files-listing.loading": "Загрузка...",
+ "files-listing.no-such-file": "Нет такого файла или папки",
+ "files-pagination.next": "Следующая страница",
+ "files-pagination.page": "Страница {{page}}",
+ "files-pagination.previous": "Предыдущая страница",
+ "files-path.input-group": "Ввод пути",
+ "files-path.input-label": "Текущий путь",
+ "files-permanently-delete.confirm": "Удалить навсегда",
+ "files-permanently-delete.description-multiple": "Вы уверены, что хотите навсегда удалить эти {{count}} элементов? Это действие нельзя отменить.",
+ "files-permanently-delete.description-single": "Вы уверены, что хотите навсегда удалить \"{{fileName}}\"? Это действие нельзя отменить.",
+ "files-permanently-delete.title-multiple": "Удалить {{count}} элементов навсегда?",
+ "files-permanently-delete.title-single": "Удалить навсегда?",
+ "files-share.first-prompt-description": "Вы можете поделиться только \"{{folderName}}\" или выбрать общий доступ ко всей домашней папке. Вы всегда можете переключиться на общий доступ к домашней папке позже, нажав правой кнопкой мыши на \"{{homeDirectoryName}}\" в боковой панели.",
+ "files-share.first-prompt-share-folder": "Поделиться только \"{{folderName}}\"",
+ "files-share.first-prompt-share-home": "Поделиться \"{{homeDirectoryName}}\"",
+ "files-share.first-prompt-title": "Поделиться только этой папкой или всей домашней папкой?",
+ "files-share.home-description": "Доступ ко всем файлам в \"{{homeDirectoryName}}\" с других устройств в вашей сети",
+ "files-share.home-title": "Поделиться \"{{homeDirectoryName}}\" по сети",
+ "files-share.instructions.how-to-access": "Как получить доступ",
+ "files-share.instructions.ios.enter-password": "Введите {{password}} как пароль.",
+ "files-share.instructions.ios.enter-server": "Введите {{smbUrl}} как адрес сервера.",
+ "files-share.instructions.ios.enter-username": "Введите {{username}} как имя пользователя.",
+ "files-share.instructions.ios.install-files": "Установите приложение \"Files\" из App Store, если оно не установлено.",
+ "files-share.instructions.ios.tap-connect": "Нажмите \"Подключиться\", чтобы получить доступ.",
+ "files-share.instructions.ios.tap-dots": "Нажмите на три точки (...) в верхнем правом углу и выберите \"Подключиться к серверу\".",
+ "files-share.instructions.macos.click-connect": "Нажмите \"Подключиться\", чтобы получить доступ.",
+ "files-share.instructions.macos.enter-password": "Введите {{password}} как пароль.",
+ "files-share.instructions.macos.enter-url": "Введите {{smbUrl}} и нажмите Подключиться.",
+ "files-share.instructions.macos.enter-username": "Введите {{username}} как имя пользователя.",
+ "files-share.instructions.macos.open-finder": "Откройте \"Finder\" и нажмите ⌘ + K.",
+ "files-share.instructions.macos.select-registered": "Выберите \"Зарегистрированный пользователь\" при запросе.",
+ "files-share.instructions.macos.time-machine": "Используйте эту папку как место для хранения резервных копий Time Machine",
+ "files-share.instructions.macos.time-machine.choose-encryption": "Выберите между зашифрованными или незашифрованными резервными копиями.",
+ "files-share.instructions.macos.time-machine.disk-limit": "Для 'Лимит использования диска' укажите максимальный объем пространства, который вы хотите выделить на вашем Umbrel для резервных копий Time Machine, затем нажмите \"Готово\".",
+ "files-share.instructions.macos.time-machine.follow-steps": "Следуйте вышеуказанным шагам и откройте Системные настройки на вашем Mac.",
+ "files-share.instructions.macos.time-machine.go-settings": "Перейдите в Time Machine, нажмите \"Добавить диск для резервного копирования...\".",
+ "files-share.instructions.macos.time-machine.select-disk": "Выберите \"{{name}}\" и нажмите \"Настроить диск...\".",
+ "files-share.instructions.windows.enter-password": "Введите {{password}} как пароль.",
+ "files-share.instructions.windows.enter-url": "Введите {{smbUrl}} и нажмите Enter.",
+ "files-share.instructions.windows.enter-username": "Введите {{username}} как имя пользователя.",
+ "files-share.instructions.windows.open-run": "Нажмите Windows + R, чтобы открыть диалоговое окно \"Выполнить\".",
+ "files-share.instructions.windows.remember-credentials": "Поставьте галочку \"Запомнить мои учетные данные\" и нажмите OK.",
+ "files-share.regular-description": "Поделитесь этой папкой, чтобы получить доступ к ней с других устройств в вашей сети",
+ "files-share.regular-title": "Поделиться папкой по сети",
+ "files-share.toggle": "Поделиться \"{{name}}\" по вашей сети",
+ "files-sidebar.apps": "Приложения",
+ "files-sidebar.favorites": "Избранное",
+ "files-sidebar.home": "Домашняя папка",
+ "files-sidebar.navigation": "Навигация по файлам",
+ "files-sidebar.recents": "Недавние",
+ "files-sidebar.shared-folders": "Общие папки",
+ "files-sidebar.trash": "Корзина",
+ "files-sidebar.trash.open": "Открыть",
+ "files-sort.created": "Добавлено",
+ "files-sort.modified": "Изменено",
+ "files-sort.name": "Имя",
+ "files-sort.size": "Размер",
+ "files-sort.type": "Тип",
+ "files-state.uploading": "Загрузка...",
+ "files-state.waiting": "Ожидание...",
+ "files-type.3gp": "Видео 3GP",
+ "files-type.3gp2": "Видео 3GP2",
+ "files-type.7z": "Архив 7Z",
+ "files-type.aac": "Аудио AAC",
+ "files-type.ai": "Файл Illustrator",
+ "files-type.aiff": "Аудио AIFF",
+ "files-type.au": "Аудио AU",
+ "files-type.avi": "Видео AVI",
+ "files-type.avif": "Изображение AVIF",
+ "files-type.bmp": "Изображение BMP",
+ "files-type.bzip2": "Архив BZIP2",
+ "files-type.caf": "Аудио CAF",
+ "files-type.compressed": "Сжатый архив",
+ "files-type.csv": "Файл CSV",
+ "files-type.directory": "Папка",
+ "files-type.dmg": "Образ диска",
+ "files-type.dv": "Видео DV",
+ "files-type.epub": "Электронная книга EPUB",
+ "files-type.excel": "Таблица Excel",
+ "files-type.exe": "Исполняемый файл Windows",
+ "files-type.executable": "Исполняемый файл",
+ "files-type.flac": "Аудио FLAC",
+ "files-type.flv": "Видео FLV",
+ "files-type.gif": "Изображение GIF",
+ "files-type.gzip": "Архив GZIP",
+ "files-type.heic": "Изображение HEIC",
+ "files-type.ico": "Изображение ICO",
+ "files-type.iso": "Образ ISO",
+ "files-type.jpeg": "Изображение JPEG",
+ "files-type.keynote": "Презентация Keynote",
+ "files-type.lzip": "Архив LZIP",
+ "files-type.lzma": "Архив LZMA",
+ "files-type.lzop": "Архив LZOP",
+ "files-type.m3u": "Плейлист M3U",
+ "files-type.m4a": "Аудио M4A",
+ "files-type.m4v": "Видео M4V",
+ "files-type.midi": "Аудио MIDI",
+ "files-type.mka": "Аудио MKA",
+ "files-type.mkv": "Видео MKV",
+ "files-type.mng": "Видео MNG",
+ "files-type.mobi": "Электронная книга MOBI",
+ "files-type.mp3": "Аудио MP3",
+ "files-type.mp4": "Видео MP4",
+ "files-type.mp4-audio": "Аудио MP4",
+ "files-type.mpeg": "Видео MPEG",
+ "files-type.mpeg-ts": "Транспортный поток MPEG",
+ "files-type.numbers": "Таблица Numbers",
+ "files-type.ogg": "Аудио OGG",
+ "files-type.ogv": "Видео OGV",
+ "files-type.pages": "Документ Pages",
+ "files-type.pdf": "Документ PDF",
+ "files-type.png": "Изображение PNG",
+ "files-type.powerpoint": "Презентация PowerPoint",
+ "files-type.psd": "Документ Photoshop",
+ "files-type.quicktime": "Видео QuickTime",
+ "files-type.rar": "Архив RAR",
+ "files-type.sgi": "Фильм SGI",
+ "files-type.svg": "Изображение SVG",
+ "files-type.tar": "Архив TAR",
+ "files-type.tiff": "Изображение TIFF",
+ "files-type.ts": "Видео TS",
+ "files-type.txt": "Текстовый файл",
+ "files-type.wav": "Аудио WAV",
+ "files-type.webm": "Видео WebM",
+ "files-type.webm-audio": "Аудио WebM",
+ "files-type.webp": "Изображение WebP",
+ "files-type.wma": "Аудио WMA",
+ "files-type.wmv": "Видео WMV",
+ "files-type.word": "Документ Word",
+ "files-type.xz": "Архив XZ",
+ "files-type.zip": "Архив ZIP",
+ "files-upload-island.uploading-count": "Загрузка {{count}} элементов",
+ "files-view.icons": "Значки",
+ "files-view.list": "Список",
+ "files-view.sort-by": "Сортировать по",
+ "files-view.view-as": "Вид",
+ "hello": "Привет",
+ "install-first.install-app": "Установить {{app}}",
+ "install-first.title": "{{app}} требует эти приложения",
+ "install-your-first-app": "Установите ваше первое приложение",
+ "language": "Язык",
+ "language-description": "Предпочитаемый язык umbrelOS",
+ "language.select-description": "Выберите предпочитаемый язык umbrelOS",
+ "live-usage": "Текущее использование",
+ "loading": "Загрузка",
+ "local-ip": "Локальный IP",
+ "login-2fa.subtitle": "Введите код 2FA, отображаемый в вашем приложении для аутентификации",
+ "login-2fa.title": "Аутентификация",
+ "login-with-umbrel.description": "Введите пароль от Umbrel, чтобы открыть {{app}}",
+ "login-with-umbrel.title": "Войти с помощью Umbrel",
+ "login.password-label": "Пароль",
+ "login.password.submit": "Войти",
+ "login.subtitle": "Введите пароль от Umbrel, чтобы войти",
+ "login.title": "С возвращением",
+ "logout": "Выйти",
+ "logout-error-generic": "Ошибка: Выход не удался",
+ "logout.confirm.submit": "Выйти",
+ "logout.confirm.title": "Вы уверены, что хотите выйти?",
+ "memory": "Память",
+ "memory.low": "Мало памяти",
+ "migrate": "Миграция",
+ "migrate.callout": "Не выключайте ваш Umbrel до завершения миграции",
+ "migrate.failed.retry": "Повторить",
+ "migrate.failed.title": "Миграция не удалась",
+ "migrate.success.description": "Все ваши приложения, данные и информация об аккаунте были перенесены на ваш Umbrel Home.",
+ "migrate.success.title": "Миграция завершена",
+ "migration-assistant": "Помощник по миграции",
+ "migration-assistant-description": "Перенесите все ваши приложения и данные с Raspberry Pi на Umbrel Home",
+ "migration-assistant-unsupported-device-description": "Помощник по миграции в настоящее время поддерживает перенос всех данных и приложений с Raspberry Pi с umbrelOS на Umbrel Home. Откройте Помощник по миграции на вашем Umbrel Home, чтобы начать.",
+ "migration-assistant.continue-migration.ready.submit": "Начать миграцию",
+ "migration-assistant.failed": "Что-то пошло не так...",
+ "migration-assistant.failed.retrying-message": "Повторная попытка...",
+ "migration-assistant.mobile.start-button": "Начать миграцию",
+ "migration-assistant.prep.body": "Подготовка к миграции",
+ "migration-assistant.prep.button-continue": "Продолжить",
+ "migration-assistant.prep.callout": "Данные на вашем Umbrel Home, если они есть, будут удалены безвозвратно.",
+ "migration-assistant.prep.connect-disk-to-home": "Подключите его внешний диск к любому USB-порту на вашем Umbrel Home.",
+ "migration-assistant.prep.prep-done-continue-message": "После завершения нажмите '{{button}}' ниже.",
+ "migration-assistant.prep.shut-down-rpi": "Выключите ваш Raspberry Pi Umbrel.",
+ "migration-assistant.ready.description": "Все ваши данные и приложения готовы к переносу на ваш Umbrel Home",
+ "migration-assistant.ready.hint-header": "Что нужно учитывать",
+ "migration-assistant.ready.hint-keep-pi-off.description": "Это помогает избежать проблем с приложениями, такими как Lightning Node",
+ "migration-assistant.ready.hint-keep-pi-off.title": "Держите ваш Raspberry Pi выключенным после обновления",
+ "migration-assistant.ready.hint-use-same-password.description": "Не забудьте использовать пароль от вашего Raspberry Pi Umbrel для входа в ваш Umbrel Home",
+ "migration-assistant.ready.hint-use-same-password.title": "Используйте тот же пароль",
+ "migration-assistant.ready.title": "Вы готовы к миграции!",
+ "name": "Имя",
+ "no-forgot-password-message": "Если вы потеряете пароль, вы не сможете войти в ваш Umbrel. Убедитесь, что вы его надежно сохранили.",
+ "no-results-found": "Ничего не найдено",
+ "not-found-404": "Ошибка: 404",
+ "not-found-404.back": "Назад",
+ "not-found-404.home": "Перейти на главную",
+ "notifications.cpu.too-hot": "Высокая температура процессора",
+ "notifications.memory.low": "На вашем устройстве мало памяти",
+ "notifications.new-version-available": "{{update}} теперь доступно для установки",
+ "notifications.storage.full": "На вашем устройстве закончилось место",
+ "notifications.view": "Просмотр",
+ "ok": "ОК",
+ "onboarding.account-created.by-clicking-button-you-agree": "Нажимая 'Далее', вы соглашаетесь с Условиями использования umbrelOS",
+ "onboarding.account-created.next": "Далее",
+ "onboarding.account-created.subtitle": "Ваш Umbrel теперь готов.",
+ "onboarding.account-created.youre-all-set-name": "Все готово, {{name}}.",
+ "onboarding.contact-support": "Поддержка",
+ "onboarding.create-account": "Создать аккаунт",
+ "onboarding.create-account.confirm-password.input-label": "Подтвердите пароль",
+ "onboarding.create-account.failed.name-required": "Имя обязательно",
+ "onboarding.create-account.failed.passwords-dont-match": "Пароли не совпадают",
+ "onboarding.create-account.name.input-placeholder": "Ваше имя",
+ "onboarding.create-account.password.input-label": "Пароль",
+ "onboarding.create-account.submit": "Создать",
+ "onboarding.create-account.submitting": "Создание",
+ "onboarding.create-account.subtitle": "Информация о вашем аккаунте хранится только на вашем Umbrel. Убедитесь, что вы надежно сохранили пароль, так как его нельзя сбросить.",
+ "onboarding.start.continue": "Начать",
+ "onboarding.start.subtitle": "Ваш домашний облачный сервер готов к настройке.",
+ "onboarding.start.title": "Добро пожаловать в umbrelOS",
+ "open": "Открыть",
+ "open-live-usage": "Открыть текущее использование",
+ "password": "Пароль",
+ "preferences": "Настройки",
+ "read-less": "Свернуть",
+ "read-more": "Развернуть",
+ "redirect.to-home": "Загрузка...",
+ "redirect.to-login": "Загрузка...",
+ "redirect.to-onboarding": "Загрузка...",
+ "remote-tor-access": "Удаленный доступ через Tor",
+ "reset": "Сбросить",
+ "restart": "Перезапустить",
+ "restart.confirm.submit": "Перезапустить",
+ "restart.confirm.title": "Вы уверены, что хотите перезапустить Umbrel?",
+ "restart.restarting": "Перезапуск",
+ "restart.restarting-message": "Пожалуйста, не обновляйте эту страницу и не выключайте Umbrel во время перезапуска.",
+ "retry": "Повторить",
+ "search": "Поиск",
+ "settings": "Настройки",
+ "settings.app-store-preferences.title": "Настройки магазина приложений",
+ "settings.contact-support": "Нужна помощь? Свяжитесь с поддержкой.",
+ "shut-down": "Выключить",
+ "shut-down.complete": "Выключение завершено",
+ "shut-down.complete-text": "Теперь вы можете отключить устройство от питания.",
+ "shut-down.confirm.submit": "Выключить",
+ "shut-down.confirm.title": "Вы уверены, что хотите выключить ваш Umbrel?",
+ "shut-down.shutting-down": "Выключение",
+ "shut-down.shutting-down-message": "Пожалуйста, не обновляйте эту страницу и не выключайте ваш Umbrel во время выключения.",
+ "software-update.callout": "Пожалуйста, не обновляйте эту страницу и не выключайте ваш Umbrel во время обновления.",
+ "software-update.check": "Проверить обновление",
+ "software-update.checking": "Проверка обновления...",
+ "software-update.current-running": "Вы используете",
+ "software-update.failed": "Не удалось обновить",
+ "software-update.failed-to-check": "Не удалось проверить обновления",
+ "software-update.failed.retry": "Повторить",
+ "software-update.install-now": "Установить сейчас",
+ "software-update.new-version": "Доступна новая версия {{name}}",
+ "software-update.on-latest": "У вас установлена последняя версия umbrelOS",
+ "software-update.title": "Обновление ПО",
+ "software-update.updating-to": "Обновление до {{name}}",
+ "software-update.view": "Просмотр",
+ "something-left": "{{left}} осталось",
+ "something-went-wrong": "⚠ Что-то пошло не так",
+ "start": "Начать",
+ "stop": "Остановить",
+ "storage": "Хранилище",
+ "storage.full": "Хранилище заполнено",
+ "storage.low": "Мало места",
+ "temperature": "Температура",
+ "temperature.dangerously-hot": "Очень горячо",
+ "temperature.nice": "Хорошо",
+ "temperature.normal": "Нормально",
+ "temperature.too-hot-suggestion": "Рекомендуется изменить окружение вашего устройства.",
+ "temperature.warm": "Тепло",
+ "terminal": "Терминал",
+ "terminal-description": "Запуск пользовательских команд в umbrelOS или в приложении",
+ "terminal.app": "Приложение",
+ "terminal.app-description": "Запуск пользовательских команд в конкретном приложении",
+ "terminal.umbrelos-description": "Запуск пользовательских команд в umbrelOS",
+ "tor-description": "Доступ к вашему Umbrel из любого места через браузер Tor",
+ "tor.disable.description": "Это может занять несколько минут",
+ "tor.disable.progress": "Отключение удаленного доступа через Tor",
+ "tor.disable.success": "Удаленный доступ через Tor отключен",
+ "tor.enable.description": "Это может занять несколько минут",
+ "tor.enable.mobile.switch-label": "Включить удаленный доступ через Tor",
+ "tor.enable.submit": "Включить",
+ "tor.enable.success": "Удаленный доступ через Tor включен",
+ "tor.enable.title": "Включить удаленный доступ через Tor",
+ "tor.hidden-service": "URL скрытого сервиса Tor",
+ "troubleshoot": "Диагностика",
+ "troubleshoot-description": "Диагностика umbrelOS или приложения",
+ "troubleshoot-no-logs-yet": "Логов пока нет",
+ "troubleshoot-pick-title": "Диагностика",
+ "troubleshoot.app": "Приложение",
+ "troubleshoot.app-description": "Просмотр логов приложения, установленного на вашем Umbrel",
+ "troubleshoot.app-download": "Скачать логи {{app}}",
+ "troubleshoot.share-with-umbrel-support": "Поделиться с поддержкой Umbrel",
+ "troubleshoot.system-download": "Скачать {{label}}",
+ "troubleshoot.umbrelos-description": "Просмотр логов umbrelOS",
+ "troubleshoot.umbrelos-logs": "Логи umbrelOS",
+ "trpc.backend-unavailable": "Ошибка: Не удалось подключиться к системному API",
+ "trpc.checking-backend": "Загрузка...",
+ "try-again": "Попробовать снова",
+ "umbrel": "Umbrel",
+ "umbrelos": "umbrelOS",
+ "unknown": "Неизвестно",
+ "unknown-app": "Неизвестное приложение",
+ "unknown-error": "Неизвестная ошибка",
+ "uptime": "Время работы",
+ "wallpaper": "Обои",
+ "wallpaper-description": "Обои и тема вашего Umbrel",
+ "widget.progress.in-progress": "В процессе",
+ "widgets.edit.select-up-to-3-widgets": "Выберите до 3 виджетов",
+ "widgets.install-an-app-before-using-widgets": "Установите приложение, чтобы начать настраивать домашний экран с виджетами.",
+ "wifi": "Wi-Fi",
+ "wifi-connect-insecure-message": "Открытые сети могут быть небезопасны",
+ "wifi-connection-failed": "Не удалось подключиться",
+ "wifi-dangerous-change-confirmation-description": "Изменение сети Wi-Fi может отключить вас от вашего Umbrel. Чтобы восстановить соединение, убедитесь, что ваш Umbrel и устройство, с которого вы получаете доступ, находятся в одной сети.",
+ "wifi-dangerous-change-confirmation-title": "Вы уверены, что хотите изменить сеть Wi-Fi?",
+ "wifi-dangerous-disable-confirmation-description": "Отключение Wi-Fi может отключить вас от вашего Umbrel. Чтобы восстановить соединение, подключите Ethernet-кабель к вашему Umbrel и убедитесь, что ваш Umbrel и устройство, с которого вы получаете доступ, находятся в одной сети.",
+ "wifi-dangerous-disable-confirmation-title": "Вы уверены, что хотите отключить Wi-Fi?",
+ "wifi-description": "Подключите ваше устройство к сети Wi-Fi",
+ "wifi-description-long": "Ваше устройство остается подключенным к выбранной сети Wi-Fi, даже если Ethernet-кабель отключен, и автоматически подключается к Wi-Fi при запуске.",
+ "wifi-no-networks-message": "Сети Wi-Fi не найдены",
+ "wifi-searching": "Поиск сетей Wi-Fi...",
+ "wifi-unsupported-device-description": "Wi-Fi не поддерживается на этом устройстве. Это может быть связано с отсутствием или несовместимостью беспроводного адаптера.",
+ "wifi-view-networks": "Просмотр сетей"
+}
\ No newline at end of file
diff --git a/packages/ui/src/utils/language.ts b/packages/ui/src/utils/language.ts
index 6a83f32538..ba3f12cc7d 100644
--- a/packages/ui/src/utils/language.ts
+++ b/packages/ui/src/utils/language.ts
@@ -13,6 +13,7 @@ export const languages = [
{name: 'Українська', code: 'uk'},
{name: 'Türkçe', code: 'tr'},
{name: '日本語', code: 'ja'},
+ {name: 'Русский', code: 'ru'},
] as const
export const supportedLanguageCodes = map(languages, (entry) => entry.code)
diff --git a/packages/ui/update-translations.js b/packages/ui/update-translations.js
index 35761eb4cb..794bc526c4 100644
--- a/packages/ui/update-translations.js
+++ b/packages/ui/update-translations.js
@@ -36,6 +36,7 @@ const languageMapping = {
uk: 'Ukrainian',
hu: 'Hungarian',
ko: 'Korean',
+ ru: 'Русский',
}
// Generates translations