a3aa5912d9
Design system with CSS custom properties (light/dark themes). 38 Lucide SVG icon components. Dark mode with system preference. EN/RU localization with i18n store. Skeleton loaders, empty states, toggle switches, micro-interactions. Responsive sidebar with mobile hamburger menu. All pages polished with consistent styling.
352 lines
19 KiB
JSON
352 lines
19 KiB
JSON
{
|
|
"app": {
|
|
"name": "Docker Watcher",
|
|
"version": "v0.1"
|
|
},
|
|
"nav": {
|
|
"dashboard": "Панель",
|
|
"projects": "Проекты",
|
|
"deploy": "Деплой",
|
|
"settings": "Настройки"
|
|
},
|
|
"dashboard": {
|
|
"title": "Панель управления",
|
|
"quickDeploy": "Быстрый деплой",
|
|
"totalProjects": "Всего проектов",
|
|
"runningInstances": "Запущенных экземпляров",
|
|
"failedInstances": "Сбойных экземпляров",
|
|
"projects": "Проекты",
|
|
"retry": "Повторить",
|
|
"noProjects": "Проектов пока нет.",
|
|
"addFirst": "Добавьте первый проект",
|
|
"loadFailed": "Не удалось загрузить панель"
|
|
},
|
|
"projects": {
|
|
"title": "Проекты",
|
|
"addProject": "Добавить проект",
|
|
"cancel": "Отмена",
|
|
"newProject": "Новый проект",
|
|
"name": "Название",
|
|
"image": "Образ",
|
|
"port": "Порт",
|
|
"registry": "Реестр",
|
|
"created": "Создан",
|
|
"view": "Открыть",
|
|
"noProjects": "Проекты ещё не настроены.",
|
|
"getStarted": "Нажмите «Добавить проект» для начала.",
|
|
"createProject": "Создать проект",
|
|
"creating": "Создание...",
|
|
"healthcheck": "Путь проверки здоровья",
|
|
"nameRequired": "Название и образ обязательны.",
|
|
"loadFailed": "Не удалось загрузить проекты",
|
|
"createFailed": "Не удалось создать проект"
|
|
},
|
|
"projectDetail": {
|
|
"deleteProject": "Удалить проект",
|
|
"envVars": "Переменные окружения",
|
|
"volumes": "Тома",
|
|
"stages": "Стадии",
|
|
"noStages": "Для этого проекта не настроены стадии.",
|
|
"pattern": "Шаблон",
|
|
"autoDeploy": "авто-деплой",
|
|
"requiresConfirm": "нужно подтверждение",
|
|
"instances": "экземпляров",
|
|
"deployNewVersion": "Развернуть новую версию",
|
|
"selectTag": "Выберите тег для деплоя",
|
|
"loadingTags": "Загрузка тегов...",
|
|
"chooseTag": "Выберите тег...",
|
|
"enterTag": "Введите тег образа (напр., dev-abc123)",
|
|
"deploy": "Развернуть",
|
|
"deploying": "Развёртывание...",
|
|
"recentDeploys": "Последние деплои",
|
|
"noDeployHistory": "Нет истории деплоев для этого проекта.",
|
|
"tag": "Тег",
|
|
"status": "Статус",
|
|
"started": "Начат",
|
|
"finished": "Завершён",
|
|
"error": "Ошибка",
|
|
"noInstancesRunning": "Нет запущенных экземпляров",
|
|
"deleteConfirmTitle": "Удалить проект",
|
|
"deleteConfirmMessage": "Это безвозвратно удалит проект '{name}' и все его стадии, экземпляры и историю деплоев.",
|
|
"loadFailed": "Не удалось загрузить проект",
|
|
"deleteFailed": "Не удалось удалить проект",
|
|
"deployFailed": "Деплой не удался"
|
|
},
|
|
"envEditor": {
|
|
"title": "Переменные окружения",
|
|
"description": "Управление переопределениями переменных окружения на уровне стадий. Значения стадий переопределяют значения проекта.",
|
|
"stage": "Стадия",
|
|
"projectDefaults": "Значения проекта по умолчанию",
|
|
"stageOverrides": "Переопределения стадии",
|
|
"key": "Ключ",
|
|
"value": "Значение",
|
|
"secret": "Секрет",
|
|
"source": "Источник",
|
|
"actions": "Действия",
|
|
"overridden": "переопределено",
|
|
"inherited": "наследуется",
|
|
"overridesProject": "переопределяет проект",
|
|
"stageOnly": "только стадия",
|
|
"edit": "Изменить",
|
|
"change": "Изменить",
|
|
"delete": "Удалить",
|
|
"save": "Сохранить",
|
|
"add": "Добавить",
|
|
"adding": "Добавление...",
|
|
"noStages": "Стадии не настроены. Сначала добавьте стадии к проекту.",
|
|
"loadFailed": "Не удалось загрузить проект",
|
|
"envAdded": "Переменная окружения добавлена",
|
|
"envUpdated": "Переменная окружения обновлена",
|
|
"envDeleted": "Переменная окружения удалена",
|
|
"addFailed": "Не удалось добавить переменную",
|
|
"updateFailed": "Не удалось обновить переменную",
|
|
"deleteFailed": "Не удалось удалить переменную",
|
|
"loadEnvFailed": "Не удалось загрузить переменные"
|
|
},
|
|
"volumeEditor": {
|
|
"title": "Тома",
|
|
"description": "Настройка монтирования томов для контейнеров.",
|
|
"sharedDesc": "Режим «Общий» использует путь источника как есть для всех экземпляров.",
|
|
"isolatedDesc": "Режим «Изолированный» добавляет /{stage}-{tag}/ к источнику, создавая свою директорию для каждого экземпляра.",
|
|
"sourceHost": "Источник (хост)",
|
|
"targetContainer": "Цель (контейнер)",
|
|
"mode": "Режим",
|
|
"actions": "Действия",
|
|
"shared": "Общий",
|
|
"isolated": "Изолированный",
|
|
"edit": "Изменить",
|
|
"delete": "Удалить",
|
|
"save": "Сохранить",
|
|
"add": "Добавить",
|
|
"adding": "Добавление...",
|
|
"noVolumes": "Тома ещё не настроены. Добавьте один выше.",
|
|
"volumeAdded": "Том добавлен",
|
|
"volumeUpdated": "Том обновлён",
|
|
"volumeDeleted": "Том удалён",
|
|
"loadFailed": "Не удалось загрузить тома",
|
|
"addFailed": "Не удалось добавить том",
|
|
"updateFailed": "Не удалось обновить том",
|
|
"deleteFailed": "Не удалось удалить том"
|
|
},
|
|
"quickDeploy": {
|
|
"title": "Быстрый деплой",
|
|
"description": "Разверните образ контейнера без настройки. Вставьте URL образа, проверьте параметры и разверните.",
|
|
"step1": "1. Введите URL образа",
|
|
"imageUrl": "URL образа",
|
|
"imageUrlHelp": "Полный URL образа с тегом (напр., git.example.com/user/app:dev-abc123)",
|
|
"inspect": "Проверить",
|
|
"inspecting": "Проверка...",
|
|
"step2": "2. Проверка конфигурации",
|
|
"reviewDesc": "Эти параметры были обнаружены из образа. Измените при необходимости перед деплоем.",
|
|
"projectName": "Имя проекта",
|
|
"port": "Порт",
|
|
"portHelp": "Порт контейнера (1-65535)",
|
|
"healthCheckPath": "Путь проверки здоровья",
|
|
"healthCheckHelp": "Необязательный HTTP-путь для проверки работоспособности",
|
|
"stage": "Стадия",
|
|
"development": "Разработка",
|
|
"release": "Релиз",
|
|
"production": "Продакшн",
|
|
"stageHelp": "Стадия развёртывания для этого образа",
|
|
"subdomainOverride": "Переопределение поддомена",
|
|
"subdomainHelp": "Оставьте пустым для использования шаблона по умолчанию",
|
|
"envVars": "Переменные окружения",
|
|
"envVarsHelp": "По одной на строку, формат KEY=VALUE",
|
|
"step3": "3. Развёртывание",
|
|
"deployDesc": "Будет создан новый проект и контейнер будет развёрнут немедленно.",
|
|
"deployBtn": "Развернуть",
|
|
"inspectedSuccess": "Образ успешно проверен",
|
|
"deployedSuccess": "{name} успешно развёрнут!",
|
|
"inspectFailed": "Не удалось проверить образ",
|
|
"deployFailed": "Развёртывание не удалось"
|
|
},
|
|
"settings": {
|
|
"title": "Настройки",
|
|
"general": "Общие",
|
|
"registries": "Реестры",
|
|
"credentials": "Учётные данные",
|
|
"authentication": "Аутентификация",
|
|
"appearance": "Внешний вид"
|
|
},
|
|
"settingsGeneral": {
|
|
"title": "Общие настройки",
|
|
"globalConfig": "Глобальная конфигурация",
|
|
"domain": "Домен",
|
|
"domainHelp": "Базовый домен для маршрутизации поддоменов",
|
|
"serverIp": "IP сервера",
|
|
"serverIpHelp": "Публичный IP-адрес сервера",
|
|
"dockerNetwork": "Docker-сеть",
|
|
"dockerNetworkHelp": "Docker-сеть для развёрнутых контейнеров",
|
|
"subdomainPattern": "Шаблон поддомена",
|
|
"subdomainPatternHelp": "Шаблон для автоматически генерируемых поддоменов",
|
|
"pollingInterval": "Интервал опроса (секунды)",
|
|
"pollingIntervalHelp": "Как часто проверять реестры на новые теги (10-86400)",
|
|
"notificationUrl": "URL уведомлений",
|
|
"notificationUrlHelp": "URL вебхука для уведомлений о деплоях",
|
|
"saveSettings": "Сохранить настройки",
|
|
"saving": "Сохранение...",
|
|
"saved": "Настройки успешно сохранены",
|
|
"saveFailed": "Не удалось сохранить настройки",
|
|
"loadFailed": "Не удалось загрузить настройки",
|
|
"webhookUrl": "URL вебхука",
|
|
"webhookDesc": "Этот секретный URL получает уведомления о push-событиях из вашего CI-пайплайна.",
|
|
"noWebhookUrl": "URL вебхука не настроен",
|
|
"copy": "Копировать",
|
|
"copied": "URL вебхука скопирован в буфер обмена",
|
|
"regenerateUrl": "Перегенерировать URL",
|
|
"regenerating": "Перегенерация...",
|
|
"regenerated": "URL вебхука перегенерирован",
|
|
"regenerateFailed": "Не удалось перегенерировать URL вебхука",
|
|
"regenerateWarning": "Внимание: перегенерация сделает текущий URL недействительным. Обновите ваши CI-пайплайны."
|
|
},
|
|
"settingsRegistries": {
|
|
"title": "Реестры контейнеров",
|
|
"description": "Управление реестрами контейнеров для обнаружения образов.",
|
|
"addRegistry": "Добавить реестр",
|
|
"editRegistry": "Редактировать реестр",
|
|
"addNewRegistry": "Добавить новый реестр",
|
|
"name": "Название",
|
|
"nameHelp": "Понятное название для этого реестра",
|
|
"url": "URL",
|
|
"urlHelp": "Базовый URL реестра",
|
|
"type": "Тип",
|
|
"typeHelp": "Тип реестра для совместимости API",
|
|
"token": "Токен",
|
|
"tokenHelpNew": "API-токен для аутентификации",
|
|
"tokenHelpEdit": "Оставьте пустым, чтобы сохранить текущий токен",
|
|
"save": "Сохранить",
|
|
"saving": "Сохранение...",
|
|
"update": "Обновить",
|
|
"test": "Тест",
|
|
"testing": "Тестирование...",
|
|
"edit": "Изменить",
|
|
"delete": "Удалить",
|
|
"noRegistries": "Реестры ещё не настроены.",
|
|
"addFirst": "Добавьте первый реестр",
|
|
"registryUpdated": "Реестр обновлён",
|
|
"registryAdded": "Реестр добавлен",
|
|
"registryDeleted": "Реестр «{name}» удалён",
|
|
"testSuccess": "Подключение к «{name}» успешно",
|
|
"saveFailed": "Не удалось сохранить реестр",
|
|
"deleteFailed": "Не удалось удалить реестр",
|
|
"testFailed": "Тест подключения не удался",
|
|
"loadFailed": "Не удалось загрузить реестры",
|
|
"deleteConfirm": "Удалить реестр «{name}»? Это действие необратимо."
|
|
},
|
|
"settingsCredentials": {
|
|
"title": "Учётные данные",
|
|
"description": "Управление учётными данными для Nginx Proxy Manager и токенами реестров. Все значения зашифрованы.",
|
|
"npm": "Nginx Proxy Manager",
|
|
"npmDesc": "Учётные данные для управления прокси-хостами через NPM API",
|
|
"configured": "Настроено",
|
|
"npmUrl": "URL NPM",
|
|
"npmUrlHelp": "URL API Nginx Proxy Manager",
|
|
"email": "Email",
|
|
"emailHelp": "Email администратора NPM",
|
|
"password": "Пароль",
|
|
"passwordHelpNew": "Пароль администратора NPM (будет зашифрован)",
|
|
"passwordHelpEdit": "Введите новый пароль для замены текущего",
|
|
"changeCredentials": "Изменить учётные данные",
|
|
"save": "Сохранить",
|
|
"saving": "Сохранение...",
|
|
"saved": "Учётные данные NPM сохранены",
|
|
"saveFailed": "Не удалось сохранить учётные данные NPM",
|
|
"loadFailed": "Не удалось загрузить учётные данные",
|
|
"registryTokens": "Токены реестров",
|
|
"registryTokensDesc": "Токены аутентификации реестров управляются для каждого реестра в разделе",
|
|
"registriesLink": "Реестры",
|
|
"registryTokensSuffix": ". Каждый реестр хранит свой токен в зашифрованном виде."
|
|
},
|
|
"settingsAuth": {
|
|
"title": "Настройки аутентификации",
|
|
"description": "Настройка режима аутентификации и управление пользователями.",
|
|
"authMode": "Режим аутентификации",
|
|
"local": "Локальный (логин/пароль)",
|
|
"oidc": "OIDC (SSO)",
|
|
"oidcConfig": "Конфигурация OIDC-провайдера",
|
|
"issuerUrl": "URL издателя",
|
|
"clientId": "ID клиента",
|
|
"clientSecret": "Секрет клиента",
|
|
"redirectUrl": "URL перенаправления",
|
|
"saveSettings": "Сохранить настройки",
|
|
"saving": "Сохранение...",
|
|
"saved": "Настройки сохранены",
|
|
"saveFailed": "Не удалось сохранить",
|
|
"loadFailed": "Не удалось загрузить настройки",
|
|
"localUsers": "Локальные пользователи",
|
|
"username": "Имя пользователя",
|
|
"email": "Email",
|
|
"role": "Роль",
|
|
"created": "Создан",
|
|
"noUsers": "Пользователи не найдены.",
|
|
"addUser": "Добавить пользователя",
|
|
"viewer": "Наблюдатель",
|
|
"admin": "Администратор",
|
|
"userCreated": "Пользователь создан",
|
|
"userDeleted": "Пользователь удалён",
|
|
"createFailed": "Не удалось создать пользователя",
|
|
"deleteFailed": "Не удалось удалить пользователя",
|
|
"deleteConfirm": "Вы уверены, что хотите удалить этого пользователя?",
|
|
"usernameRequired": "Имя пользователя и пароль обязательны"
|
|
},
|
|
"login": {
|
|
"title": "Docker Watcher",
|
|
"subtitle": "Войдите в свой аккаунт",
|
|
"username": "Имя пользователя",
|
|
"password": "Пароль",
|
|
"signIn": "Войти",
|
|
"signingIn": "Вход...",
|
|
"or": "или",
|
|
"ssoButton": "Войти через SSO (OIDC)",
|
|
"loginFailed": "Ошибка входа",
|
|
"networkError": "Ошибка сети"
|
|
},
|
|
"common": {
|
|
"cancel": "Отмена",
|
|
"confirm": "Подтвердить",
|
|
"delete": "Удалить",
|
|
"edit": "Изменить",
|
|
"save": "Сохранить",
|
|
"retry": "Повторить",
|
|
"loading": "Загрузка...",
|
|
"noData": "Нет данных",
|
|
"project": "Проект",
|
|
"back": "Назад",
|
|
"actions": "Действия",
|
|
"stop": "Остановить",
|
|
"start": "Запустить",
|
|
"restart": "Перезапустить",
|
|
"remove": "Удалить"
|
|
},
|
|
"instance": {
|
|
"stopConfirm": "Контейнер будет остановлен. Экземпляр можно будет запустить снова позже.",
|
|
"restartConfirm": "Контейнер будет перезапущен с кратковременным простоем.",
|
|
"removeConfirm": "Контейнер и его прокси-конфигурация будут безвозвратно удалены.",
|
|
"actionFailed": "Действие не удалось"
|
|
},
|
|
"empty": {
|
|
"noProjects": "Проектов пока нет",
|
|
"noProjectsDesc": "Начните с создания первого проекта или используйте быстрый деплой.",
|
|
"createProject": "Создать проект",
|
|
"noInstances": "Нет экземпляров",
|
|
"noInstancesDesc": "Разверните новую версию, чтобы увидеть экземпляры здесь.",
|
|
"noDeploys": "Нет истории деплоев",
|
|
"noDeploysDesc": "История деплоев появится здесь после первого развёртывания.",
|
|
"noRegistries": "Нет реестров",
|
|
"noRegistriesDesc": "Добавьте реестр контейнеров для обнаружения образов.",
|
|
"noVolumes": "Нет томов",
|
|
"noVolumesDesc": "Настройте монтирование томов для постоянных данных.",
|
|
"noUsers": "Нет пользователей",
|
|
"noUsersDesc": "Добавьте локальных пользователей для управления доступом."
|
|
},
|
|
"theme": {
|
|
"light": "Светлая",
|
|
"dark": "Тёмная",
|
|
"system": "Системная"
|
|
},
|
|
"language": {
|
|
"en": "Английский",
|
|
"ru": "Русский"
|
|
}
|
|
}
|