541 lines
39 KiB
JSON
541 lines
39 KiB
JSON
{
|
||
"management": "Управление Git",
|
||
"branch": "Ветка",
|
||
"branch_label": "Ветка:",
|
||
"changes_count": "{count} изменений",
|
||
"tab_workspace": "Фиксация изменений",
|
||
"tab_release": "Релиз",
|
||
"tab_operations": "Серверные операции",
|
||
"error_files_overwritten": "Файлы, которые будут перезаписаны ({count})",
|
||
"error_recommendations": "Рекомендации:",
|
||
"git_server_mismatch_title": "Привязка репозитория требует исправления",
|
||
"git_server_mismatch_desc": "Выбранный сервер: {configured}; репозиторий: {origin}.",
|
||
"git_server_mismatch_hint": "Push заблокирован, пока дашборд не будет перепривязан к репозиторию выбранного Git-сервера.",
|
||
"git_server_mismatch_fix": "Настроить",
|
||
"actions": "Действия",
|
||
"sync": "Синхронизировать из Superset",
|
||
"commit": "Зафиксировать изменения",
|
||
"pull": "Pull (Получить)",
|
||
"push": "Push (Отправить)",
|
||
"deployment": "Развертывание",
|
||
"deploy": "Развернуть в окружение",
|
||
"history": "История коммитов",
|
||
"no_commits": "Коммитов пока нет",
|
||
"refresh": "Обновить",
|
||
"new_branch": "Новая ветка",
|
||
"create": "Создать",
|
||
"init_repo": "Инициализировать репозиторий",
|
||
"remote_url": "URL удаленного репозитория",
|
||
"server": "Git-сервер",
|
||
"not_linked": "Этот дашборд еще не привязан к Git-репозиторию.",
|
||
"manage": "Управление Git",
|
||
"manage_selected": "Управлять выбранным",
|
||
"select_single_for_manage": "Выберите ровно один дашборд для управления",
|
||
"selected_count": "{count} выбрано",
|
||
"bulk_sync": "Массовый sync",
|
||
"bulk_commit": "Массовый commit",
|
||
"bulk_pull": "Массовый pull",
|
||
"bulk_push": "Массовый push",
|
||
"bulk_action_sync": "Sync",
|
||
"bulk_action_commit": "Commit",
|
||
"bulk_action_pull": "Pull",
|
||
"bulk_action_push": "Push",
|
||
"bulk_result": "{action}: успешно {success}, ошибок {failed}",
|
||
"no_repositories_selected": "Для выбранных дашбордов нет доступных репозиториев",
|
||
"generate_message": "Сгенерировать",
|
||
"select_dashboard": "Выберите дашборд для управления",
|
||
"commit_message_generated": "Сообщение коммита сгенерировано",
|
||
"commit_message_failed": "Не удалось сгенерировать сообщение коммита",
|
||
"load_changes_failed": "Не удалось загрузить изменения",
|
||
"commit_success": "Изменения успешно закоммичены",
|
||
"commit_and_push_success": "Изменения успешно закоммичены и отправлены в remote",
|
||
"commit_message": "Сообщение коммита",
|
||
"commit_button": "Сохранить версию (Commit)",
|
||
"commit_templates": "Шаблоны",
|
||
"commit_template_layout": "Макет",
|
||
"commit_template_layout_message": "Обновление макета и визуального расположения дашборда",
|
||
"commit_template_charts": "Графики",
|
||
"commit_template_charts_message": "Обновление графиков и метрик дашборда",
|
||
"commit_template_filters": "Фильтры",
|
||
"commit_template_filters_message": "Обновление фильтров и метаданных дашборда",
|
||
"files_with_changes": "Файлов с изменениями:",
|
||
"diff_title": "Diff (изменения)",
|
||
"files_count": "{count} файлов",
|
||
"diff_loading_hint": "Загрузка diff... (нажмите «Синхронизировать»)",
|
||
"no_changes_to_commit": "Нет изменений для коммита",
|
||
"sync_to_see_changes": "Синхронизируйте дашборд, чтобы увидеть изменения",
|
||
"diff_render_failed": "Не удалось отобразить diff",
|
||
"commit_success_banner": "✅ Изменения закоммичены.",
|
||
"commit_next_step": "Следующий шаг: вкладка «Релиз» для продвижения между ветками или «Серверные операции» для Pull/Push/Deploy.",
|
||
"auto_push_after_commit": "Автоматически отправить (Push) после фиксации в",
|
||
"generate_with_ai": "Сгенерировать с AI",
|
||
"generate_description": "Сгенерировать описание",
|
||
"describe_changes": "Опишите ваши изменения...",
|
||
"changed_files": "Измененные файлы",
|
||
"staged": "Подготовлено",
|
||
"modified_unstaged": "Изменено (не подготовлено)",
|
||
"untracked": "Новый файл",
|
||
"changes_preview": "Предпросмотр изменений",
|
||
"semantic_summary": "Сводка изменений",
|
||
"semantic_summary_more": "+{count} ещё",
|
||
"raw_diff_title": "Raw YAML diff",
|
||
"raw_diff_search": "Поиск по raw diff...",
|
||
"raw_diff_limited": "Показаны первые 600 подходящих строк.",
|
||
"change_categories": {
|
||
"charts": "Графики",
|
||
"datasets": "Датасеты",
|
||
"databases": "Базы данных",
|
||
"filters": "Фильтры",
|
||
"dashboard": "Метаданные дашборда",
|
||
"other": "Другие файлы"
|
||
},
|
||
"loading_diff": "Загрузка diff...",
|
||
"no_changes": "Изменения не обнаружены",
|
||
"committing": "Коммит...",
|
||
"deploy_success": "Деплой успешно запущен",
|
||
"deploy_confirm_intro": "Подтвердите деплой. Введите slug дашборда:",
|
||
"deploy_confirm_dashboard": "Дашборд",
|
||
"deploy_confirm_branch": "Исходная ветка",
|
||
"deploy_confirm_stage": "Lifecycle stage",
|
||
"deploy_confirm_target": "Цель",
|
||
"deploy_confirm_changes": "Изменённых файлов",
|
||
"deploy_confirm_last_commit": "Последний коммит",
|
||
"deploy_confirm_author": "Автор",
|
||
"deploy_confirm_message": "Сообщение коммита",
|
||
"rollback": "Rollback",
|
||
"rollback_reason_prompt": "Причина rollback для {hash}:",
|
||
"rollback_success": "Rollback-коммит создан",
|
||
"rollback_failed": "Rollback не выполнен",
|
||
"rollback_confirm_warning": "Будет создан новый коммит, отменяющий все изменения из выбранного коммита. Текущие рабочие изменения не будут затронуты.",
|
||
"prod_rollback_hint": "Rollback PROD доступен из истории коммитов.",
|
||
"open_history_for_rollback": "Открыть историю",
|
||
"no_deploy_envs": "Окружения для деплоя не настроены.",
|
||
"deploying": "Деплой...",
|
||
"init_validation_error": "Выберите Git-сервер и укажите URL удаленного репозитория",
|
||
"init_success": "Репозиторий успешно инициализирован",
|
||
"sync_success": "Состояние дашборда синхронизировано с Git",
|
||
"push_success": "Изменения отправлены в remote",
|
||
"pull_success": "Изменения получены из remote",
|
||
"no_servers_configured": "Git-серверы не настроены. Перейдите в Настройки -> Git для добавления.",
|
||
"remote_url_placeholder": "https://github.com/org/repo.git",
|
||
"load_branches_failed": "Не удалось загрузить ветки",
|
||
"switched_to": "Переключено на {branch}",
|
||
"created_branch": "Создана ветка {branch}",
|
||
"branch_name_placeholder": "имя-ветки",
|
||
"branch_group_local": "Локальные",
|
||
"branch_group_remote": "Удалённые",
|
||
"branch_group_environment": "Окружения",
|
||
"branch_group_feature": "Feature-ветки",
|
||
"branch_group_hotfix": "Hotfix-ветки",
|
||
"branch_group_legacy": "Legacy",
|
||
"branch_group_other": "Другие",
|
||
"branch_group_remote_ref": "remote ref",
|
||
"branch_type_badges": "Типы веток",
|
||
"branch_badge_environment": "ENV",
|
||
"branch_badge_environment_title": "Ветки жизненного цикла dev/preprod/prod",
|
||
"branch_badge_feature": "FEATURE",
|
||
"branch_badge_feature_title": "Рабочие ветки задач от dev",
|
||
"branch_badge_hotfix": "HOTFIX",
|
||
"branch_badge_hotfix_title": "Срочные исправления",
|
||
"branch_badge_legacy": "LEGACY",
|
||
"branch_badge_legacy_title": "main/master сохранены для совместимости",
|
||
"repo_status": {
|
||
"loading": "Загрузка",
|
||
"no_repo": "Нет репозитория",
|
||
"synced": "Синхронизирован",
|
||
"changes": "Есть изменения",
|
||
"behind_remote": "Отстает от remote",
|
||
"ahead_remote": "Опережает remote",
|
||
"diverged": "Расхождение",
|
||
"error": "Ошибка"
|
||
},
|
||
"repo_changes_detected": "Обнаружены изменения конфигурации в Superset.",
|
||
"repo_synced_with_branch": "Конфигурация Superset совпадает с веткой {branch}.",
|
||
"charts_label": "чарты: {count}",
|
||
"datasets_label": "датасеты: {count}",
|
||
"files_label": "файлы: {count}",
|
||
"sync_and_commit": "Синхронизировать и зафиксировать",
|
||
"show_diff": "Показать diff",
|
||
"hint_workspace": "Сначала синхронизируй дашборд с Git (Sync), затем напиши сообщение коммита и нажми Commit. Если нужно — включи автоотправку (Push) после коммита.",
|
||
"hint_release": "Перенос изменений между ветками: выбери откуда → куда, укажи причину (при direct-режиме) и нажми Promote. Либо создай Merge Request.",
|
||
"hint_operations": "Pull — забрать изменения из удалённого репозитория. Push — отправить локальные коммиты. Deploy — выкатить дашборд в целевое окружение.",
|
||
"hint_branch_selector": "Переключение между ветками. Если есть незакоммиченные изменения — сначала зафиксируй их или отложи через stash.",
|
||
"help_title": "Как это работает",
|
||
"help_summary": "Краткое руководство по пайплайну Git-управления дашбордами",
|
||
"help_step1_title": "Настройте Git-сервер",
|
||
"help_step1_desc": "Перейдите в Настройки → Git и добавьте подключение к Gitea/GitLab/GitHub.",
|
||
"help_step2_title": "Выберите дашборд",
|
||
"help_step2_desc": "Во вкладке «Управление Git» отметьте дашборд и нажмите «Управление Git».",
|
||
"help_step3_title": "Создайте или инициализируйте репозиторий",
|
||
"help_step3_desc": "«Create repo» создаёт удалённый репозиторий на сервере. «Инициализировать» привязывает существующий remote-URL к дашборду.",
|
||
"help_step4_title": "Синхронизируйте и зафиксируйте",
|
||
"help_step4_desc": "Во вкладке «Фиксация изменений»: Sync забирает конфигурацию из Superset, затем напишите сообщение и нажмите Commit.",
|
||
"help_step5_title": "Продвигайте и деплойте",
|
||
"help_step5_desc": "Во вкладке «Релиз» — перенос между ветками (MR или прямой). Во вкладке «Серверные операции» — Pull, Push и Deploy в окружение.",
|
||
"legend_title": "Статусы репозиториев",
|
||
"legend_synced": "Локальная ветка совпадает с remote — изменений нет.",
|
||
"legend_changes": "Есть незакоммиченные изменения в рабочей области.",
|
||
"legend_behind_remote": "Локальная ветка отстаёт от remote — выполните Pull.",
|
||
"legend_ahead_remote": "Локальная ветка опережает remote — выполните Push.",
|
||
"legend_diverged": "Локальная и remote ветки разошлись — требуется merge или rebase.",
|
||
"legend_no_repo": "Дашборд не привязан к Git-репозиторию.",
|
||
"legend_error": "Ошибка получения статуса — проверьте подключение и настройки.",
|
||
"create_repo": "Создать репозиторий",
|
||
"create_repo_desc": "Создать новый удалённый репозиторий на Git-сервере и привязать его к дашборду.",
|
||
"init_repo_desc": "Привязать существующий удалённый репозиторий по URL к дашборду (локальный init).",
|
||
"init_mode_create": "Создать новый",
|
||
"init_mode_connect": "Подключить существующий",
|
||
"init_mode_create_hint": "Сначала создайте remote-репозиторий; clone URL заполнится автоматически.",
|
||
"remote_url_invalid": "Remote URL должен начинаться с https://, ssh:// или git@.",
|
||
"init_sync_next": "После инициализации нажмите Sync, чтобы сохранить текущее состояние дашборда Superset.",
|
||
"init_summary_title": "Настройка GitFlow",
|
||
"init_summary_default_branch": "Ветка по умолчанию: prod",
|
||
"init_summary_branches": "Ветки окружений: dev → preprod → prod",
|
||
"repo_already_exists": "Репозиторий уже существует. Введите его URL ниже и нажмите «Инициализировать».",
|
||
"lifecycle": {
|
||
"title": "Жизненный цикл дашборда",
|
||
"subtitle": "Сохраняйте версии и продвигайте изменения Superset безопасно.",
|
||
"current_branch": "Текущая ветка",
|
||
"changes": "Изменения",
|
||
"no_changes": "Нет изменений",
|
||
"next_action": "Следующее действие",
|
||
"action_sync": "Синхронизировать",
|
||
"action_commit": "Сохранить версию",
|
||
"action_promote": "Продвинуть в {stage}",
|
||
"action_deploy": "Деплой",
|
||
"action_review": "Проверить состояние",
|
||
"promotion_path": "Маршрут продвижения: {from} -> {to}"
|
||
},
|
||
"conflict": {
|
||
"title": "Обнаружены конфликты слияния",
|
||
"description": "В следующих файлах есть конфликты. Выберите способ разрешения для каждого.",
|
||
"your_changes": "Ваши изменения (Mine)",
|
||
"remote_changes": "Удалённые изменения (Theirs)",
|
||
"keep_mine": "Оставить мои",
|
||
"keep_theirs": "Оставить их",
|
||
"resolved": "Разрешён: {strategy}",
|
||
"cancel": "Отмена",
|
||
"resolve_continue": "Разрешить и продолжить",
|
||
"unresolved_count": "Сначала разрешите все конфликты. (Осталось: {count})"
|
||
},
|
||
"release": {
|
||
"pipeline_status": "Текущий статус пайплайна",
|
||
"next_step": "Следующий шаг по GitFlow:",
|
||
"no_next_promotion": "Нет следующего продвижения",
|
||
"prod_no_next_step": "PROD — финальная ветка GitFlow. Следующее продвижение недоступно.",
|
||
"promote_direct": "Прямой перенос {from} ➔ {to} (unsafe)",
|
||
"promote_mr": "Создать Merge Request ({from} ➔ {to})",
|
||
"advanced_show": "▾ Расширенные настройки",
|
||
"advanced_hide": "▴ Скрыть расширенные настройки",
|
||
"from_branch": "Из ветки",
|
||
"to_branch": "В ветку",
|
||
"promotion_mode": "Режим переноса",
|
||
"mode_mr": "Создать MR/PR (безопасно)",
|
||
"mode_direct": "Прямой merge без MR (небезопасно)",
|
||
"direct_warning_title": "Внимание: прямой перенос без MR",
|
||
"direct_warning_desc": "Это обходит процесс аппрува и записывается в audit лог.",
|
||
"reason_label": "Причина (обязательно)",
|
||
"reason_placeholder": "Почему bypass MR?",
|
||
"reason_required": "Для direct merge нужна причина для audit trail."
|
||
},
|
||
"diff_loading": "Загрузка изменений...",
|
||
"diff_show_more": "Показать ещё ({count} файлов)",
|
||
"diff_all_shown": "Показаны все изменения ({count} файлов)",
|
||
"advanced_raw_diff_title": "Расширенно: raw YAML diff",
|
||
"advanced_status_title": "Расширенно: диагностика репозитория",
|
||
"repo_status_label": "Статус",
|
||
"upstream_branch": "Upstream",
|
||
"remote_delta": "Remote",
|
||
"unfinished_merge": {
|
||
"title": "Незавершённое слияние в репозитории",
|
||
"default_message": "В репозитории найдено незавершённое слияние. Завершите или отмените его вручную и повторите Pull.",
|
||
"repository_path": "Путь к репозиторию",
|
||
"branch": "Текущая ветка",
|
||
"next_steps": "Рекомендуемые шаги",
|
||
"manual_commands": "Команды для ручного восстановления",
|
||
"copy_commands": "Скопировать команды",
|
||
"copy_success": "Команды скопированы в буфер обмена",
|
||
"copy_failed": "Не удалось скопировать команды",
|
||
"copy_empty": "Команды для копирования отсутствуют",
|
||
"open_resolver": "Открыть разрешение конфликтов",
|
||
"abort_merge": "Отменить слияние",
|
||
"continue_merge": "Продолжить слияние",
|
||
"no_conflicts": "Неразрешённых конфликтов не найдено",
|
||
"resolve_empty": "Не выбрано разрешение конфликтов",
|
||
"resolve_success": "Конфликты разрешены и добавлены в индекс",
|
||
"abort_success": "Слияние отменено",
|
||
"continue_success": "Merge-коммит успешно создан"
|
||
},
|
||
"merge": {
|
||
"button": "Слить ветку",
|
||
"title": "Слияние {source} в {target}",
|
||
"source_branch": "Исходная ветка",
|
||
"target_branch": "Целевая ветка",
|
||
"message_placeholder": "Сообщение merge-коммита (необязательно)",
|
||
"auto_delete": "Удалить исходную ветку после слияния",
|
||
"auto_delete_hint": "Исходная ветка {branch} будет безвозвратно удалена.",
|
||
"preview": "Предпросмотр изменений",
|
||
"conflicts_detected": "Обнаружены конфликты слияния",
|
||
"conflicts_hint": "Разрешите конфликты вручную или отмените слияние.",
|
||
"conflict_files": "Конфликтующие файлы:",
|
||
"success": "{source} слита в {target}",
|
||
"already_merged": "Ветка уже актуальна",
|
||
"deleting_source": "Удаление исходной ветки...",
|
||
"source_deleted": "Исходная ветка {branch} удалена"
|
||
},
|
||
"delete_branch": {
|
||
"button": "Удалить ветку",
|
||
"title": "Удаление ветки {branch}",
|
||
"confirm_message": "Вы уверены, что хотите удалить ветку \"{branch}\"? Это действие нельзя отменить.",
|
||
"confirm_remote": "Ветка также будет удалена из удалённого репозитория.",
|
||
"protected": "Ветка окружения \"{branch}\" не может быть удалена.",
|
||
"success": "Ветка \"{branch}\" удалена",
|
||
"cancel": "Отмена",
|
||
"delete": "Удалить"
|
||
},
|
||
"create_branch_dialog": {
|
||
"title": "Создать новую ветку",
|
||
"name_label": "Имя ветки",
|
||
"name_placeholder": "feature/мой-фича",
|
||
"type_label": "Тип ветки",
|
||
"type_feature": "Feature",
|
||
"type_hotfix": "Hotfix",
|
||
"type_bugfix": "Bugfix",
|
||
"type_custom": "Произвольная",
|
||
"source_label": "Исходная ветка",
|
||
"validation_required": "Имя ветки обязательно",
|
||
"validation_pattern": "Используйте латиницу, цифры, точки, подчёркивания, дефисы и слеши",
|
||
"validation_no_dots": "Имя ветки не должно содержать \"..\"",
|
||
"validation_no_leading_slash": "Имя ветки не должно начинаться с \"/\"",
|
||
"name_preview": "Будет создана как: {name}",
|
||
"create": "Создать ветку"
|
||
},
|
||
"branch_type": {
|
||
"environment": "Окружение",
|
||
"feature": "Feature",
|
||
"hotfix": "Hotfix",
|
||
"bugfix": "Bugfix",
|
||
"legacy": "Legacy",
|
||
"other": "Другое"
|
||
},
|
||
"diff_view_mode": "Режим diff",
|
||
"diff_view_side_by_side": "Две колонки",
|
||
"diff_view_line_by_line": "Одна колонка",
|
||
"diff_region_label": "Просмотр изменений",
|
||
"skip_to_raw_diff": "Перейти к текстовому diff",
|
||
"diff_rendered_hidden_hint": "Визуальный diff скрыт от скринридера — используйте текстовый diff ниже.",
|
||
"bulk_commit_dialog": {
|
||
"title": "Массовый commit",
|
||
"message": "Введите сообщение коммита для выбранных дашбордов:",
|
||
"placeholder": "Сообщение коммита...",
|
||
"confirm": "Зафиксировать"
|
||
},
|
||
"create_repo_dialog": {
|
||
"title": "Создать репозиторий",
|
||
"name_label": "Имя репозитория",
|
||
"name_prompt": "Имя репозитория для {provider}:",
|
||
"confirm": "Создать"
|
||
},
|
||
"bulk_confirm": {
|
||
"sync_title": "Массовая синхронизация",
|
||
"sync_message": "Синхронизировать {count} дашбордов из Superset в Git?",
|
||
"pull_title": "Массовый pull",
|
||
"pull_message": "Получить изменения из remote для {count} дашбордов?",
|
||
"push_title": "Массовый push",
|
||
"push_message": "Отправить локальные коммиты в remote для {count} дашбордов?",
|
||
"confirm": "Подтвердить"
|
||
},
|
||
"numeric_id_forbidden": "GitManager требует slug дашборда. Числовой ID запрещён.",
|
||
"promote_branches_must_differ": "Выберите разные исходную и целевую ветки",
|
||
"direct_reason_required": "Для небезопасного прямого переноса укажите причину",
|
||
"direct_promote_done": "Прямой перенос выполнен. Нарушение политики записано в логи.",
|
||
"mr_created": "Merge Request создан на Git сервере",
|
||
"deploy_confirm_failed": "Подтверждение PROD не пройдено. Деплой отменён.",
|
||
"repo_url_empty": "Удалённый репозиторий создан, но URL пуст",
|
||
"env_required_for_init": "Для инициализации Git выберите окружение.",
|
||
"init_fields_required": "Заполните все поля",
|
||
"close_aria": "Закрыть",
|
||
"help_aria": "Справка",
|
||
"viz_title": "Аудит версий дашборда",
|
||
"viz_hint": "Последние версии и среды, в которых они были доступны. Основной статус миграции показан выше.",
|
||
"viz_working_branch": "Активная версия в разработке (ваша текущая работа)",
|
||
"viz_stage_dev": "Разработка",
|
||
"viz_stage_preprod": "Предпрод / Валидация",
|
||
"viz_stage_prod": "Продакшн (для пользователей)",
|
||
"viz_clear": "Очистить выбор",
|
||
"viz_no_versions": "Нет истории версий",
|
||
"viz_unreleased": "Нереализованные изменения (не продвинуты)",
|
||
"viz_unreleased_hint": "Черновики; появятся после мерджа в dev.",
|
||
"viz_selected": "Выбрано",
|
||
"viz_current": "текущая",
|
||
"viz_compare": "Сравнение двух версий",
|
||
"viz_compare_action": "Выбрать для сравнения (A/B)",
|
||
"viz_version_selected": "Выбрана версия",
|
||
"viz_details": "Информация о версии",
|
||
"viz_select_version": "Кликните по точке на таймлайне, чтобы посмотреть",
|
||
"viz_live_in": "Активна в",
|
||
"viz_impact": "Влияние на конфиг дашборда",
|
||
"viz_author": "Автор",
|
||
"viz_date": "Дата",
|
||
"viz_legend_current": "Текущая версия в стадии",
|
||
"viz_legend_promoted": "Бейдж PRE = продвинута (линия только для выбранной)",
|
||
"viz_choose_comparison": "Выберите версию для сравнения изменений",
|
||
"viz_status_dev": "Последние изменения (в разработке)",
|
||
"viz_status_up_to_date": "Актуальна относительно Разработки",
|
||
"viz_status_lag": "Отстаёт от Разработки на {count} обновлений",
|
||
"viz_status_stable_old": "Стабильная старая версия (в Разработке есть обновления)",
|
||
"viz_status_unknown": "Статус неизвестен",
|
||
"viz_live_downstream": "Эта версия уже активна в: {stages}",
|
||
"viz_status_current_stage": "Текущая в стадии",
|
||
"viz_status_historical": "Историческая версия в этой стадии",
|
||
"viz_prod_health": "Статус стадий:",
|
||
"viz_summary_no_prod": "Пока нет данных по продакшну",
|
||
"viz_summary_no_dev": "Нет данных разработки",
|
||
"viz_summary_prod_current": "Продакшн использует самую свежую версию из разработки.",
|
||
"viz_summary_lag": "Продакшн отстаёт на {count} обновлений дашборда от Разработки.",
|
||
"viz_summary_old_prod": "Продакшн на стабильной старой версии.",
|
||
"viz_quick_dev_vs_prod": "Сравнить с текущей в Разработке",
|
||
"viz_technical_id": "Технический ID",
|
||
"viz_comparison_hint": "Diff покажет, что изменилось в конфиге дашборда между выбранными версиями.",
|
||
"viz_no_versions_hint": "Инициализируйте репозиторий или синхронизируйте из Superset.",
|
||
"viz_bi_purpose": "Помогает аналитикам понять состояние развёртывания перед валидацией или промоушеном.",
|
||
"viz_lag_tooltip": "Количество более новых обновлений дашборда в Разработке, которых ещё нет в Продакшне",
|
||
"viz_lag": "отставание",
|
||
"viz_rec_up_to_date": "Продакшн актуален. Можно безопасно проводить валидацию и тестовые сценарии.",
|
||
"viz_rec_lag": "Продакшн отстаёт на {count} обновлений. Изучите изменения и промоутните после валидации.",
|
||
"viz_rec_no_prod": "Нет данных по продакшну. Инициализируйте/синхронизируйте репозиторий.",
|
||
"viz_rec_default": "Просмотрите таймлайн и сравните версии перед промоушеном.",
|
||
"viz_recommendation": "Рекомендация:",
|
||
"viz_how_to_read": "Точки = версии дашборда. Бейдж PRE = продвинута (без дублирования). Вертикаль только для выбранной. Preprod — только события промоушена.",
|
||
"viz_older": "Самая старая показанная",
|
||
"viz_newer": "Самая новая",
|
||
"viz_change_description": "Описание изменения",
|
||
"viz_comparing_with": "Сравнение с версией {hash}",
|
||
"viz_diff_ready": "Изменения дашборда загружены для сравнения",
|
||
"viz_view_changes": "Посмотреть точные изменения",
|
||
"viz_compare_to_dev": "Сравнить с последней в Разработке",
|
||
"viz_files": "Файлов изменено",
|
||
"viz_files_sample": "Примеры обновлённых файлов",
|
||
"viz_status_window": "За пределами окна истории (старше)",
|
||
"viz_primary_selected": "Выберите точку B на графике",
|
||
"viz_unique_versions": "уникальных версий",
|
||
"viz_recent_window": "окно недавних (более старые могут быть)",
|
||
"working_branch": "Рабочая ветка (текущие изменения):",
|
||
"viz_expand_timeline": "Показать аудит версий",
|
||
"viz_show_timeline": "Показать аудит",
|
||
"sync_compact": "Sync",
|
||
"viz_axis_older": "← Более старые версии дашборда",
|
||
"viz_axis_newer": "Новые версии (последние изменения) →",
|
||
"viz_no_version": "Нет версии в",
|
||
"viz_init": "Инициализировать",
|
||
"viz_arm_comparison": "Выбрать как A / B для сравнения",
|
||
"viz_compare_preprod": "Сравнить с текущей PREPROD",
|
||
"viz_compare_dev": "Сравнить с текущей DEV",
|
||
"viz_collapse_timeline": "Свернуть таймлайн",
|
||
"pipeline_title": "Путь публикации дашборда",
|
||
"pipeline_hint": "Версия проходит разработку, проверку и публикацию по содержимому дашборда.",
|
||
"pipeline_stage_dev": "DEV · Разработка",
|
||
"pipeline_stage_preprod": "PREPROD · Проверка",
|
||
"pipeline_stage_prod": "PROD · Пользователи",
|
||
"pipeline_compare": "Сравнить с PROD",
|
||
"pipeline_no_version": "Версия не синхронизирована",
|
||
"pipeline_dev_ready": "Версия готова к тестированию",
|
||
"pipeline_not_deployed": "Версия не развёрнута",
|
||
"pipeline_outdated": "Пользователи видят другую версию",
|
||
"pipeline_content_drift": "Содержимое PROD отличается",
|
||
"pipeline_same_revision_different_content": "Git-версия та же, но содержимое окружения отличается",
|
||
"pipeline_sync_required": "Требуется синхронизация версии",
|
||
"pipeline_message_resolve_drift": "Публикация перезапишет отличающееся содержимое PROD и устранит drift.",
|
||
"pipeline_validation_needed": "Ожидает проверки",
|
||
"pipeline_validated": "Проверка пройдена",
|
||
"pipeline_live": "Пользователи видят эту версию",
|
||
"pipeline_action_sync": "Синхронизировать дашборд",
|
||
"pipeline_action_deploy_preprod": "Отправить в PREPROD",
|
||
"pipeline_action_validate_preprod": "Подтвердить проверку PREPROD",
|
||
"pipeline_action_deploy_prod": "Опубликовать проверенную версию",
|
||
"pipeline_action_current": "Версия опубликована",
|
||
"pipeline_message_sync": "Сначала синхронизируйте текущее содержимое дашборда с Git.",
|
||
"pipeline_message_deploy_preprod": "В PREPROD нет текущей версии DEV. Отправьте её на проверку.",
|
||
"pipeline_message_validate_preprod": "Текущий кандидат развёрнут в PREPROD и ожидает подтверждения проверки.",
|
||
"pipeline_message_deploy_prod": "В PROD будет опубликована проверенная версия {version}.",
|
||
"pipeline_workspace_excluded": "Текущие несохранённые изменения в публикацию не войдут (затронуто файлов: {count}).",
|
||
"pipeline_candidate_replaced": "Новый кандидат заменит текущий кандидат PREPROD и потребует повторной проверки.",
|
||
"pipeline_message_current": "DEV, PREPROD и PROD используют одну проверенную версию.",
|
||
"pipeline_preprod_missing": "Сначала разверните версию в PREPROD",
|
||
"pipeline_preprod_validated": "Проверка PREPROD подтверждена",
|
||
"pipeline_prod_blocked": "PROD доступен только после проверки той же версии в PREPROD",
|
||
"pipeline_version": "Версия",
|
||
"pipeline_version_current": "текущая версия",
|
||
"pipeline_version_missing": "нет версии",
|
||
"pipeline_changed": "Обновлена",
|
||
"pipeline_deployed": "Развёрнута",
|
||
"pipeline_date_unknown": "неизвестно",
|
||
"pipeline_date_missing": "—",
|
||
"technical_details": "Технические детали",
|
||
"audit_when": "Когда",
|
||
"audit_version": "Версия",
|
||
"audit_stages": "Среды",
|
||
"audit_change": "Изменение",
|
||
"audit_events": "событий в истории",
|
||
"audit_action": "Действие",
|
||
"audit_deploy_preprod": "В PREPROD",
|
||
"deploy_selected_version": "Выбранная версия",
|
||
"candidate_source": "Источник кандидата",
|
||
"candidate_created": "создан",
|
||
"feature_flow_title": "Отдельные доработки",
|
||
"feature_flow_hint": "Здесь ведутся независимые изменения. Передайте готовую доработку в общую разработку, чтобы затем проверить и опубликовать её.",
|
||
"feature_flow_empty": "Нет отдельных доработок. Новую можно создать в технических деталях.",
|
||
"feature_flow_editing": "Открыт для доработки",
|
||
"feature_flow_ready": "Готов к передаче",
|
||
"feature_flow_open": "Открыть",
|
||
"feature_flow_opened": "Черновик открыт для доработки",
|
||
"feature_flow_transfer": "Передать в DEV",
|
||
"feature_flow_transfer_title": "Передать доработку в общую разработку DEV",
|
||
"feature_flow_draft": "Черновик",
|
||
"feature_flow_dev": "Общая разработка",
|
||
"feature_flow_create": "Новая доработка",
|
||
"feature_flow_current": "Открыта сейчас",
|
||
"feature_flow_continue": "Продолжить",
|
||
"feature_flow_commits": "коммитов сверх DEV",
|
||
"feature_flow_updated": "обновлена",
|
||
"feature_flow_date_unknown": "дата неизвестна",
|
||
"feature_flow_context": "Текущая работа",
|
||
"feature_flow_context_dev": "Вы работаете в общей разработке. Откройте черновик, чтобы продолжить отдельную доработку.",
|
||
"feature_flow_in_dev": "Уже в DEV",
|
||
"feature_flow_no_changes": "Нет изменений для передачи",
|
||
"feature_flow_archived": "Доработки уже включены в DEV",
|
||
"feature_flow_no_active": "Нет отдельных доработок, ожидающих передачи в DEV.",
|
||
"feature_flow_transfer_confirm": "Изменения из черновика станут доступны в DEV. В PREPROD и PROD они не попадут, пока вы не запустите публикацию.",
|
||
"feature_flow_transferred": "передана в DEV",
|
||
"feature_flow_transfer_failed": "Не удалось передать доработку в DEV",
|
||
"pipeline_preprod_candidate": "Кандидат на публикацию",
|
||
"pipeline_candidate_validated": "проверен",
|
||
"pipeline_candidate_pending": "ожидает проверки",
|
||
"pipeline_candidate_author": "Автор",
|
||
"pipeline_candidate_created": "Создан",
|
||
"pipeline_dev_ahead": "В DEV есть более новые изменения",
|
||
"pipeline_next_action": "Следующее действие",
|
||
"workspace_pending_title": "Есть несохранённые изменения",
|
||
"workspace_pending_hint": "{count} файлов изменены. Они не войдут в текущую публикацию, пока вы не сохраните новую версию.",
|
||
"workspace_pending_action": "Перейти к сохранению",
|
||
"workspace_save_title": "Сохранить версию",
|
||
"workspace_save_hint": "Опишите смысл изменений — это описание увидят при проверке и публикации.",
|
||
"workspace_version_description": "Описание версии",
|
||
"workspace_save_button": "Сохранить версию",
|
||
"workspace_save_options": "Параметры сохранения",
|
||
"workspace_refresh_changes": "Обновить изменения",
|
||
"workspace_description_required": "Добавьте описание версии, чтобы сохранить её.",
|
||
"workspace_changes_title": "Изменения версии",
|
||
"semantic_key_changes": "Ключевые изменения",
|
||
"workspace_summary_loading": "Агент анализирует изменения…",
|
||
"workspace_summary_loading_hint": "Это может занять несколько минут. Можно продолжать работу с версией.",
|
||
"workspace_summary_ai_notice": "Описание сформировано AI по текущему diff.",
|
||
"workspace_summary_regenerate": "Сформулировать иначе",
|
||
"workspace_summary_failed": "Не удалось описать изменения",
|
||
"workspace_summary_failed_hint": "Проверьте настройку LLM и повторите запрос.",
|
||
"workspace_summary_retry": "Повторить",
|
||
"workspace_summary_generate": "Описать изменения с помощью AI",
|
||
"technical_yaml_preview": "Технический YAML diff",
|
||
"open_raw_diff": "Открыть текстовый diff"
|
||
}
|