You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "puzzle-rpa-team (via GitHub)" <gi...@apache.org> on 2026/03/12 14:34:39 UTC

[PR] Adding Russian translation for UI [airflow]

puzzle-rpa-team opened a new pull request, #63450:
URL: https://github.com/apache/airflow/pull/63450

   Russian UI translation was added in this PR. Unfortunately, I am not an Airflow contributor, so I cannot add a code owner to CODEOWNERS; maybe someone would be willing to step in?
   Thank you to all reviewers for their time in advance!
   
    <!-- SPDX-License-Identifier: Apache-2.0
         https://www.apache.org/licenses/LICENSE-2.0 -->
   
   <!--
   Thank you for contributing!
   
   Please provide above a brief description of the changes made in this pull request.
   Write a good git commit message following this guide: http://chris.beams.io/posts/git-commit/
   
   Please make sure that your code changes are covered with tests.
   And in case of new features or big changes remember to adjust the documentation.
   
   Feel free to ping (in general) for the review if you do not see reaction for a few days
   (72 Hours is the minimum reaction time you can expect from volunteers) - we sometimes miss notifications.
   
   In case of an existing issue, reference it using one of the following:
   
   * closes: #ISSUE
   * related: #ISSUE
   -->
   
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   <!--
   If generative AI tooling has been used in the process of authoring this PR, please
   change below checkbox to `[X]` followed by the name of the tool, uncomment the "Generated-by".
   -->
   
   - [ ] Yes (please specify the tool below)
   
   <!--
   Generated-by: [Tool Name] following [the guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
   -->
   
   ---
   
   * Read the **[Pull Request Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)** for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
   * For fundamental code changes, an Airflow Improvement Proposal ([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals)) is needed.
   * When adding dependency, check compliance with the [ASF 3rd Party License Policy](https://www.apache.org/legal/resolved.html#category-x).
   * For significant user-facing changes create newsfragment: `{pr_number}.significant.rst`, in [airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments). You can add this file in a follow-up commit after the PR is created so you know the PR number.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "choo121600 (via GitHub)" <gi...@apache.org>.
choo121600 commented on PR #63450:
URL: https://github.com/apache/airflow/pull/63450#issuecomment-4047319744

   nit: It looks like there might still be some untranslated or unused strings.
   
   <img width="1497" height="1301" alt="image" src="https://github.com/user-attachments/assets/daef7bda-3705-49d0-9139-2082306a4425" />
   
   The following command might help identify and fix them:
   ```
   breeze ui check-translation-completeness --language ru --add-missing --remove-unused
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2927582167


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,358 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "Даг",
+  "dag_other": "Даги",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска Дага",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация Дага",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",
+    "latestDagVersion": "Последняя версия Дага",
+    "latestRun": "Последний запуск",
+    "maxActiveRuns": "Максимум активных запусков",
+    "maxActiveTasks": "Максимум активных задач",
+    "maxConsecutiveFailedDagRuns": "Максимум последовательных неудачных запусков Дага",
+    "nextRun": "Следующий запуск",
+    "owner": "Владелец",
+    "params": "Параметры",
+    "schedule": "Расписание",
+    "tags": "Теги"
+  },
+  "dagId": "ID Дага",
+  "dagRun": {
+    "conf": "Конфигурация",
+    "dagVersions": "Версии Дага",
+    "dataIntervalEnd": "Конец временного интервала",
+    "dataIntervalStart": "Начало временного интервала",
+    "lastSchedulingDecision": "Последнее решение о расписании",
+    "mappedPartitionKey": "Ключ распределенной части",
+    "partitionKey": "Ключ части",
+    "queuedAt": "В очереди в",
+    "runAfter": "Запустить после",
+    "runType": "Тип запуска",
+    "sourceAssetEvent": "Источник события актива",
+    "triggeredBy": "Запущено",
+    "triggeringUser": "Запускающий пользователь"
+  },
+  "dagRun_one": "Запуск Дага",
+  "dagRun_other": "Запусков Дага",
+  "dagRunId": "ID запуска Дага",
+  "dagWarnings": "Предупреждения/ошибки Дага",
+  "defaultToGraphView": "По умолчанию отображать график",
+  "defaultToGridView": "По умолчанию отображать в сетке",
+  "delete": "Удалить",
+  "diff": "Разница",
+  "diffCompareWith": "Сравнить с",
+  "diffExit": "Выйти из разницы",

Review Comment:
   ```suggestion
     "diffExit": "Выйти из просмотра различий",
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "puzzle-rpa-team (via GitHub)" <gi...@apache.org>.
puzzle-rpa-team commented on PR #63450:
URL: https://github.com/apache/airflow/pull/63450#issuecomment-4053294450

   I updated CODEOWNERS to include jscheffl as a code owner, myself as a translation owner and renat-sagut as an engaged translator since they made quite a few helpful contributions and corrections


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928008597


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/browse.json:
##########
@@ -0,0 +1,46 @@
+{
+  "auditLog": {
+    "columns": {
+      "event": "Событие",
+      "extra": "Дополнительно",
+      "user": "Пользователь",
+      "when": "Когда"
+    },
+    "filters": {
+      "eventType": "Тип события"
+    },
+    "title": "Журнал аудита"
+  },
+  "xcom": {
+    "add": {
+      "error": "Не удалось добавить XCom",
+      "errorTitle": "Ошибка",
+      "success": "XCom успешно добавлен",
+      "successTitle": "XCom добавлен",
+      "title": "Добавить XCom"
+    },
+    "columns": {
+      "dag": "Даг",
+      "key": "Ключ",
+      "value": "Значение"
+    },
+    "delete": {
+      "error": "Не удалось удалить XCom",
+      "errorTitle": "Ошибка",
+      "success": "XCom успешно удалён",
+      "successTitle": "XCom удалён",
+      "title": "Удалить XCom",
+      "warning": "Вы уверены, что хотите удалить этот XCom? Это действие нельзя будет отменить."

Review Comment:
   ```suggestion
         "warning": "Вы уверены, что хотите удалить этот XCom? Это действие нельзя отменить."
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "jscheffl (via GitHub)" <gi...@apache.org>.
jscheffl commented on PR #63450:
URL: https://github.com/apache/airflow/pull/63450#issuecomment-4061561202

   @puzzle-rpa-team the static checks failed, as I was on it anyway I pushed some fixes. Next time please check with contribution guides and install pre-commit checks with `prek`. 
   Fixes were made by `prek run -a ts-compile-lint-ui` and `prek run -a update-breeze-cmd-output`.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on PR #63450:
URL: https://github.com/apache/airflow/pull/63450#issuecomment-4061558910

   In general, I have some doubts that "Даг" is a good translation for DAG in Russian. I skimmed a few articles about Airflow in Russian, and most of them seem to keep the term "DAG" in English rather than transliterating it.
   
   @puzzle-rpa-team should we follow the same approach here and keep "DAG" as is? What do you think?
   
   https://practicum.yandex.ru/blog/apache-airflow/
   https://habr.com/ru/articles/811807/
   https://bigdataschool.ru/blog/news/apache-airflow-architecture-docker-setup/
   https://gitverse.ru/blog/articles/architecture/64-apache-airflow-chto-eto-takoe-i-principy-raboty-arhitektury


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2942992891


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dag.json:
##########
@@ -0,0 +1,191 @@
+{
+  "allRuns": "Все Запуски",
+  "blockingDeps": {
+    "dependency": "Зависимость",
+    "reason": "Причина",
+    "title": "Зависимости, которые блокируют Запуск задачи"
+  },
+  "calendar": {
+    "daily": "Ежедневно",
+    "hourly": "Каждый час",
+    "legend": {
+      "less": "Меньше",
+      "mixed": "Смешанные",
+      "more": "Больше"
+    },
+    "navigation": {
+      "nextMonth": "Следующий месяц",
+      "nextYear": "Следующий год",
+      "previousMonth": "Предыдущий месяц",
+      "previousYear": "Предыдущий год"
+    },
+    "noData": "Нет доступных данных",
+    "noFailedRuns": "Нет неудачных запусков",
+    "noRuns": "Нет запусков",
+    "totalRuns": "Всего запусков",
+    "week": "Неделя {{weekNumber}}",
+    "weekdays": {
+      "friday": "Пт",
+      "monday": "Пн",
+      "saturday": "Сб",
+      "sunday": "Вс",
+      "thursday": "Чт",
+      "tuesday": "Вт",
+      "wednesday": "Ср"
+    }
+  },
+  "code": {
+    "bundleUrl": "URL пакета",
+    "noCode": "Код не найден",
+    "parseDuration": "Длительность разбора:",
+    "parsedAt": "Разобрано в:"
+  },
+  "extraLinks": "Дополнительные ссылки",
+  "grid": {
+    "buttons": {
+      "resetToLatest": "Сбросить до последнего",
+      "toggleGroup": "Переключить группу"
+    },
+    "runTypeLegend": "Легенда типа запуска"
+  },
+  "header": {
+    "buttons": {
+      "advanced": "Расширенные настройки",
+      "dagDocs": "Документация ДАГа"
+    }
+  },
+  "logs": {
+    "allLevels": "Все уровни логов",
+    "allSources": "Все источники",
+    "critical": "КРИТИЧЕСКИЙ",
+    "debug": "ОТЛАДКА",
+    "error": "ОШИБКА",
+    "fullscreen": {
+      "button": "На весь экран",
+      "tooltip": "Нажмите {{hotkey}} для полного экрана"
+    },
+    "info": "ИНФОРМАЦИЯ",
+    "noTryNumber": "Нет номера попытки",
+    "settings": "Настройки логов",
+    "viewInExternal": "Просмотреть логи в {{name}} (попытка {{attempt}})",
+    "warning": "ПРЕДУПРЕЖДЕНИЕ"
+  },
+  "navigation": {
+    "navigation": "Навигация: Shift+{{arrow}}",
+    "toggleGroup": "Переключить группу: Пробел"
+  },
+  "notFound": {
+    "back": "Назад",
+    "backToDags": "Назад к ДАГам",
+    "message": "ДАГ \"{{dagId}}\" не существует.",
+    "title": "ДАГ не найден"
+  },
+  "overview": {
+    "buttons": {
+      "failedRun_one": "Неудачный запуск",
+      "failedRun_other": "Неудачные запуски",
+      "failedTask_one": "Неудачная задача",
+      "failedTask_other": "Неудачные задачи",
+      "failedTaskInstance_one": "Неудачный экземпляр задачи",
+      "failedTaskInstance_other": "Неудачные экземпляры задач"
+    },
+    "charts": {
+      "assetEvent_one": "Созданное событие актива",
+      "assetEvent_other": "Созданные события актива"
+    },
+    "failedLogs": {
+      "hideLogs": "Скрыть логи",
+      "showLogs": "Показать логи",
+      "title": "Недавние логи неудачных задач",
+      "viewFullLogs": "Просмотреть полные логи"
+    }
+  },
+  "panel": {
+    "buttons": {
+      "options": "Опции",
+      "showGantt": "Показать Гантт",
+      "showGraphShortcut": "Показать граф (нажмите g)",
+      "showGridShortcut": "Показать сетку (нажмите g)"
+    },
+    "dagRuns": {
+      "label": "Количество запусков ДАГа"
+    },
+    "dependencies": {
+      "label": "Зависимости",
+      "options": {
+        "allDagDependencies": "Все зависимости ДАГа",
+        "externalConditions": "Внешние условия",
+        "onlyTasks": "Только задачи"
+      },
+      "placeholder": "Зависимости"
+    },
+    "graphDirection": {
+      "label": "Направление графа"
+    },
+    "showVersionIndicator": {
+      "label": "Показать индикатор версии",
+      "options": {
+        "hideAll": "Скрыть все",
+        "showAll": "Показать все",
+        "showBundleVersion": "Показать версию пакета",
+        "showDagVersion": "Показать версию ДАГа"
+      }
+    },
+    "taskStreamFilter": {
+      "activeFilter": "Активный фильтр",
+      "clearFilter": "Очистить фильтр",
+      "clickTask": "Нажмите на задачу, чтобы выбрать ее в качестве корня фильтра",
+      "depth": "Глубина",
+      "direction": "Направление",
+      "label": "Фильтр",
+      "mode": "Режим",
+      "modeTooltip": "Статический режим сохраняет текущее представление при навигации к другим задачам, в то время как режим Траверса автоматически обновляет активный фильтр до нажатой задачи для более легкой навигации по ДАГу.",
+      "modes": {
+        "static": "Статический",
+        "traverse": "Траверс"
+      },
+      "options": {
+        "both": "Как вверх, так и вниз по потоку",
+        "downstream": "Вниз по потоку",
+        "upstream": "Вверх по потоку"
+      },
+      "selectedTask": "Выбранная задача"
+    }
+  },
+  "paramsFailed": "Не удалось загрузить параметры",
+  "parse": {
+    "toaster": {
+      "error": {
+        "description": "Не удалось разобрать запрос ДАГа. Возможно, остаются незавершенные запросы на разбор.",
+        "title": "Не удалось повторно разобрать ДАГ"

Review Comment:
   ```suggestion
           "title": "Не удалось выполнить повторный парсинг ДАГа"
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/admin.json:
##########
@@ -0,0 +1,189 @@
+{
+  "columns": {
+    "description": "Описание",
+    "key": "Ключ",
+    "name": "Имя",
+    "team": "Команда",
+    "value": "Значение"
+  },
+  "config": {
+    "columns": {
+      "section": "Раздел"
+    },
+    "title": "Конфигурация Airflow"
+  },
+  "connections": {
+    "add": "Добавить соединение",
+    "columns": {
+      "connectionId": "ID соединения",
+      "connectionType": "Тип соединения",
+      "host": "Хост",
+      "port": "Порт"
+    },
+    "connection_one": "Соединение",
+    "connection_other": "Соединений",
+    "delete": {
+      "deleteConnection_few": "Удалить {{count}} соединения",
+      "deleteConnection_one": "Удалить 1 соединение",
+      "deleteConnection_other": "Удалить {{count}} соединений",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующее соединение:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие соединения:",
+      "title": "Удалить соединение"
+    },
+    "edit": "Редактировать соединение",
+    "form": {
+      "connectionIdRequired": "ID соединения обязателен",
+      "connectionIdRequirement": "ID соединения не может состоять только из пробелов",
+      "connectionTypeRequired": "Тип соединения обязателен",
+      "extraFields": "Дополнительные поля",
+      "extraFieldsJson": "Дополнительные поля JSON",
+      "helperText": "Отсутствует тип соединения? Убедитесь, что вы установили соответствующий пакет Airflow Providers.",
+      "helperTextForRedactedFields": "Скрытые поля ('***') останутся неизменными, если не будут изменены.",
+      "selectConnectionType": "Выбрать тип соединения",
+      "standardFields": "Стандартные поля"
+    },
+    "nothingFound": {
+      "description": "Соединения, определенные через переменные окружения или менеджеры секретов, здесь не перечислены.",
+      "documentationLink": "Узнайте больше в документации Airflow.",
+      "learnMore": "Эти соединения обрабатываются во время выполнения и не видны в интерфейсе.",
+      "title": "Соединение не найдено!"
+    },
+    "searchPlaceholder": "Поиск соединений",
+    "test": "Тестировать соединение",
+    "testDisabled": "Функция тестирования соединения отключена. Пожалуйста, свяжитесь с администратором, чтобы включить ее.",
+    "testError": {
+      "title": "Ошибка тестирования соединения"
+    },
+    "testSuccess": {
+      "title": "Тестирование соединения успешно"
+    },
+    "typeMeta": {
+      "error": "Не удалось получить метаданные типа соединения",
+      "standardFields": {
+        "description": "Описание",
+        "host": "Хост",
+        "login": "Логин",
+        "password": "Пароль",
+        "port": "Порт",
+        "url_schema": "Схема"
+      }
+    }
+  },
+  "deleteActions": {
+    "button": "Удалить",
+    "modal": {
+      "confirmButton": "Да, удалить",
+      "secondConfirmMessage": "Это действие является постоянным и не может быть отменено.",

Review Comment:
   ```suggestion
         "secondConfirmMessage": "Это действие необратимо и не может быть отменено.",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/components.json:
##########
@@ -0,0 +1,176 @@
+{
+  "backfill": {
+    "affected_few": "Будет запущено {{count}} процесса.",
+    "affected_one": "Будет запущен 1 процесс.",
+    "affected_other": "Будет запущено {{count}} процессов.",
+    "affectedNone": "Нет процессов, соответствующих выбранным критериям.",
+    "allRuns": "Все процессы",
+    "backwards": "Запуск назад",
+    "dateRange": "Диапазон дат",
+    "errorStartDateBeforeEndDate": "Дата начала должна быть раньше даты окончания",
+    "maxRuns": "Максимум активных запусков",
+    "missingAndErroredRuns": "Отсутствующие и ошибочные запуски",
+    "missingRuns": "Отсутствующие запуски",
+    "permissionDenied": "Не удалось выполнить пробный запуск: У пользователя нет разрешения на создание заполнения.",
+    "reprocessBehavior": "Поведение повторной обработки",
+    "run": "Запуск заполнения",
+    "selectDescription": "Запуск этого ДАГа для диапазона дат",
+    "selectLabel": "Заполнение",
+    "title": "Запуск заполнения",
+    "toaster": {
+      "success": {
+        "description": "Запуск выполнения заполнения успешно инициирован.",
+        "title": "Заполнение сгенерировано"
+      }
+    },
+    "tooltip": "Заполнение требует расписания",
+    "unpause": "Снять паузу с {{dag_display_name}} при запуске",
+    "validation": {
+      "datesRequired": "Необходимо указать как дату начала, так и дату окончания.",
+      "startBeforeEnd": "Дата начала должна быть меньше или равной дате окончания."
+    }
+  },
+  "banner": {
+    "backfillInProgress": "Заполнение в процессе",
+    "cancel": "Отменить заполнение",
+    "pause": "Приостановить заполнение",
+    "unpause": "Снять паузу с заполнения"
+  },
+  "clipboard": {
+    "copy": "Копировать"
+  },
+  "close": "Закрыть",
+  "configForm": {
+    "advancedOptions": "Расширенные параметры",
+    "configJson": "Конфигурация JSON",
+    "invalidJson": "Некорректный формат JSON: {{errorMessage}}"
+  },
+  "dagWarnings": {
+    "error_one": "1 ошибка",
+    "errorAndWarning": "1 ошибка и {{warningText}}",
+    "warning_few": "{{count}} предупреждения",
+    "warning_one": "1 предупреждение",
+    "warning_other": "{{count}} предупреждений"
+  },
+  "dateRangeFilter": {
+    "validation": {
+      "invalidDateFormat": "Некорректный формат даты.",
+      "invalidTimeFormat": "Некорректный формат времени.",
+      "startBeforeEnd": "Начальная дата/время должно быть раньше конечной даты/времени"
+    }
+  },
+  "durationChart": {
+    "duration": "Продолжительность (секунды)",
+    "lastDagRun_few": "Последние {{count}} запуска ДАГа",
+    "lastDagRun_one": "Последний запуск ДАГа",
+    "lastDagRun_other": "Последние {{count}} запусков ДАГа",
+    "lastTaskInstance_few": "Последние {{count}} экземпляра задачи",
+    "lastTaskInstance_one": "Последний экземпляр задачи",
+    "lastTaskInstance_other": "Последние {{count}} экземпляров задачи",
+    "queuedDuration": "Длительность в очереди",
+    "runAfter": "Запустить после",
+    "runDuration": "Длительность запуска"
+  },
+  "fileUpload": {
+    "files_few": "{{count}} файла",
+    "files_one": "{{count}} файл",
+    "files_other": "{{count}} файлов"
+  },
+  "flexibleForm": {
+    "placeholder": "Выбрать значение",
+    "placeholderArray": "Введите каждую строку с новой строки",
+    "placeholderExamples": "Начните вводить, чтобы увидеть варианты",
+    "placeholderMulti": "Выберите одно или несколько значений",
+    "validationErrorArrayNotArray": "Значение должно быть массивом.",
+    "validationErrorArrayNotNumbers": "Все элементы в массиве должны быть числами.",
+    "validationErrorArrayNotObject": "Все элементы в массиве должны быть объектами.",
+    "validationErrorRequired": "Это поле обязательно"
+  },
+  "graph": {
+    "directionDown": "Сверху вниз",
+    "directionLeft": "Справа налево",
+    "directionRight": "Слева направо",
+    "directionUp": "Снизу вверх",
+    "downloadImage": "Скачать изображение графа",
+    "downloadImageError": "Не удалось скачать изображение графа.",
+    "downloadImageErrorTitle": "Ошибка загрузки",
+    "otherDagRuns": "+Другие запуски ДАГа",
+    "taskCount_few": "{{count}} задачи",
+    "taskCount_one": "{{count}} задача",
+    "taskCount_other": "{{count}} задач",
+    "taskGroup": "Группа задач"
+  },
+  "limitedList": "+{{count}} ещё",
+  "limitedList.allItems": "Все {{count}} элементы:",
+  "limitedList.allTags_few": "Все теги ({{count}})",
+  "limitedList.allTags_one": "Все теги (1)",
+  "limitedList.allTags_other": "Все теги ({{count}})",
+  "limitedList.clickToInteract": "Нажмите на тег, чтобы фильтровать ДАГи",
+  "limitedList.clickToOpenFull": "Нажмите \"+{{count}} ещё\", чтобы открыть полный вид",
+  "limitedList.copyPasteText": "Вы можете скопировать и вставить текст выше",
+  "limitedList.showingItems_few": "Показано {{count}} элемента",
+  "limitedList.showingItems_one": "Показан 1 элемент",
+  "limitedList.showingItems_other": "Показано {{count}} элементов",
+  "logs": {
+    "file": "Файл",
+    "location": "строка {{line}} в {{name}}"
+  },
+  "reparseDag": "Повторный разбор ДАГа",

Review Comment:
   ```suggestion
     "reparseDag": "Повторный парсинг ДАГа",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/admin.json:
##########
@@ -0,0 +1,189 @@
+{
+  "columns": {
+    "description": "Описание",
+    "key": "Ключ",
+    "name": "Имя",
+    "team": "Команда",
+    "value": "Значение"
+  },
+  "config": {
+    "columns": {
+      "section": "Раздел"
+    },
+    "title": "Конфигурация Airflow"
+  },
+  "connections": {
+    "add": "Добавить соединение",
+    "columns": {
+      "connectionId": "ID соединения",
+      "connectionType": "Тип соединения",
+      "host": "Хост",
+      "port": "Порт"
+    },
+    "connection_one": "Соединение",
+    "connection_other": "Соединений",
+    "delete": {
+      "deleteConnection_few": "Удалить {{count}} соединения",
+      "deleteConnection_one": "Удалить 1 соединение",
+      "deleteConnection_other": "Удалить {{count}} соединений",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующее соединение:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие соединения:",
+      "title": "Удалить соединение"
+    },
+    "edit": "Редактировать соединение",
+    "form": {
+      "connectionIdRequired": "ID соединения обязателен",
+      "connectionIdRequirement": "ID соединения не может состоять только из пробелов",
+      "connectionTypeRequired": "Тип соединения обязателен",
+      "extraFields": "Дополнительные поля",
+      "extraFieldsJson": "Дополнительные поля JSON",
+      "helperText": "Отсутствует тип соединения? Убедитесь, что вы установили соответствующий пакет Airflow Providers.",
+      "helperTextForRedactedFields": "Скрытые поля ('***') останутся неизменными, если не будут изменены.",

Review Comment:
   ```suggestion
         "helperTextForRedactedFields": "Скрытые поля ('***') останутся без изменений, если их не редактировать.",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,362 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "ДАГ",
+  "dag_other": "ДАГи",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска ДАГа",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация ДАГа",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",
+    "latestDagVersion": "Последняя версия ДАГа",
+    "latestRun": "Последний запуск",
+    "maxActiveRuns": "Максимум активных запусков",
+    "maxActiveTasks": "Максимум активных задач",
+    "maxConsecutiveFailedDagRuns": "Максимум последовательных неудачных запусков ДАГа",
+    "nextRun": "Следующий запуск",
+    "owner": "Владелец",
+    "params": "Параметры",
+    "schedule": "Расписание",
+    "tags": "Теги"
+  },
+  "dagId": "ID ДАГа",
+  "dagRun": {
+    "conf": "Конфигурация",
+    "dagVersions": "Версии ДАГа",
+    "dataIntervalEnd": "Конец временного интервала",
+    "dataIntervalStart": "Начало временного интервала",
+    "lastSchedulingDecision": "Последнее решение о расписании",
+    "mappedPartitionKey": "Ключ распределенной части",
+    "partitionKey": "Ключ части",
+    "queuedAt": "В очереди в",
+    "runAfter": "Запустить после",
+    "runType": "Тип запуска",
+    "sourceAssetEvent": "Источник события актива",
+    "triggeredBy": "Инициировано",
+    "triggeringUser": "Инициатор запуска"
+  },
+  "dagRun_one": "Запуск ДАГа",
+  "dagRun_few": "Запуск ДАГов",
+  "dagRun_many": "Запуск ДАГов",
+  "dagRun_other": "Запусков ДАГов",
+  "dagRunId": "ID запуска ДАГа",
+  "dagWarnings": "Предупреждения/ошибки ДАГа",
+  "defaultToGraphView": "По умолчанию отображать график",
+  "defaultToGridView": "По умолчанию отображать в сетке",
+  "delete": "Удалить",
+  "diff": "Разница",
+  "diffCompareWith": "Сравнить с",
+  "diffExit": "Выйти из просмотра различий",
+  "diffSelectVersionToCompare": "Выбрать версию для сравнения",
+  "direction": "Направление",
+  "docs": {
+    "documentation": "Документация",
+    "githubRepo": "GitHub Репозиторий",
+    "restApiReference": "REST API Справочник"
+  },
+  "download": {
+    "download": "Скачать",
+    "hotkey": "d",
+    "tooltip": "Нажмите {{hotkey}}, чтобы скачать журналы"
+  },
+  "duration": "Длительность",
+  "edit": "Редактировать",
+  "endDate": "Дата окончания",
+  "error": {
+    "back": "Назад",
+    "defaultMessage": "Произошла непредвиденная ошибка",
+    "home": "Главная",
+    "invalidUrl": "Страница не найдена. Пожалуйста, проверьте URL и попробуйте снова.",
+    "notFound": "Страница не найдена",
+    "title": "Ошибка"
+  },
+  "expand": {
+    "collapse": "Свернуть",
+    "expand": "Развернуть",
+    "hotkey": "e",
+    "tooltip": "Нажмите {{hotkey}}, чтобы переключить развертывание"
+  },
+  "expandAllExtra": "Развернуть все дополнительные JSON",
+  "expression": {
+    "all": "Все",
+    "and": "И",
+    "any": "Любой",
+    "or": "ИЛИ"
+  },
+  "filter": "Фильтр",
+  "filters": {
+    "durationFrom": "Продолжительность с",
+    "durationTo": "Продолжительность до",
+    "endTime": "Время окончания",
+    "logicalDateFrom": "Логическая дата с",
+    "logicalDateTo": "Логическая дата до",
+    "runAfterFrom": "Запустить после с",
+    "runAfterTo": "Запустить после до",
+    "selectDateRange": "Выбрать диапазон дат",
+    "startTime": "Время начала"
+  },
+  "generateToken": "Сгенерировать токен",
+  "logicalDate": "Логическая дата",
+  "logout": "Выйти",
+  "logoutConfirmation": "Вы собираетесь выйти из приложения.",
+  "mapIndex": "Индекс карты",

Review Comment:
   ```suggestion
     "mapIndex": "Индекс маппинга",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,362 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "ДАГ",
+  "dag_other": "ДАГи",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска ДАГа",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация ДАГа",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",

Review Comment:
   ```suggestion
       "lastParsed": "Последний распарсенный",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/admin.json:
##########
@@ -0,0 +1,189 @@
+{
+  "columns": {
+    "description": "Описание",
+    "key": "Ключ",
+    "name": "Имя",
+    "team": "Команда",
+    "value": "Значение"
+  },
+  "config": {
+    "columns": {
+      "section": "Раздел"
+    },
+    "title": "Конфигурация Airflow"
+  },
+  "connections": {
+    "add": "Добавить соединение",
+    "columns": {
+      "connectionId": "ID соединения",
+      "connectionType": "Тип соединения",
+      "host": "Хост",
+      "port": "Порт"
+    },
+    "connection_one": "Соединение",
+    "connection_other": "Соединений",
+    "delete": {
+      "deleteConnection_few": "Удалить {{count}} соединения",
+      "deleteConnection_one": "Удалить 1 соединение",
+      "deleteConnection_other": "Удалить {{count}} соединений",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующее соединение:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие соединения:",
+      "title": "Удалить соединение"
+    },
+    "edit": "Редактировать соединение",
+    "form": {
+      "connectionIdRequired": "ID соединения обязателен",
+      "connectionIdRequirement": "ID соединения не может состоять только из пробелов",
+      "connectionTypeRequired": "Тип соединения обязателен",
+      "extraFields": "Дополнительные поля",
+      "extraFieldsJson": "Дополнительные поля JSON",
+      "helperText": "Отсутствует тип соединения? Убедитесь, что вы установили соответствующий пакет Airflow Providers.",
+      "helperTextForRedactedFields": "Скрытые поля ('***') останутся неизменными, если не будут изменены.",
+      "selectConnectionType": "Выбрать тип соединения",
+      "standardFields": "Стандартные поля"
+    },
+    "nothingFound": {
+      "description": "Соединения, определенные через переменные окружения или менеджеры секретов, здесь не перечислены.",
+      "documentationLink": "Узнайте больше в документации Airflow.",
+      "learnMore": "Эти соединения обрабатываются во время выполнения и не видны в интерфейсе.",
+      "title": "Соединение не найдено!"
+    },
+    "searchPlaceholder": "Поиск соединений",
+    "test": "Тестировать соединение",
+    "testDisabled": "Функция тестирования соединения отключена. Пожалуйста, свяжитесь с администратором, чтобы включить ее.",
+    "testError": {
+      "title": "Ошибка тестирования соединения"
+    },
+    "testSuccess": {
+      "title": "Тестирование соединения успешно"
+    },
+    "typeMeta": {
+      "error": "Не удалось получить метаданные типа соединения",
+      "standardFields": {
+        "description": "Описание",
+        "host": "Хост",
+        "login": "Логин",
+        "password": "Пароль",
+        "port": "Порт",
+        "url_schema": "Схема"
+      }
+    }
+  },
+  "deleteActions": {
+    "button": "Удалить",
+    "modal": {
+      "confirmButton": "Да, удалить",
+      "secondConfirmMessage": "Это действие является постоянным и не может быть отменено.",
+      "thirdConfirmMessage": "Вы уверены, что хотите продолжить?"
+    },
+    "selected": "Выбрано",
+    "tooltip": "Удалить выбранные соединения"
+  },
+  "formActions": {
+    "save": "Сохранить"
+  },
+  "jobs": {
+    "columns": {
+      "executorClass": "Класс исполнителя",
+      "hostname": "Имя хоста",
+      "id": "ID",
+      "jobType": "Тип задания",
+      "latestHeartbeat": "Последний heartbeat",
+      "unixname": "Unix имя"
+    },
+    "filters": {
+      "allStates": "Все состояния",
+      "allTypes": "Все типы",
+      "dagProcessorJob": "DagProcessorJob",
+      "schedulerJob": "SchedulerJob",
+      "triggererJob": "TriggererJob"
+    }
+  },
+  "plugins": {
+    "columns": {
+      "source": "Источник"
+    },
+    "importError_one": "Ошибка импорта плагина",
+    "importError_other": "Ошибки импорта плагинов",
+    "searchPlaceholder": "Поиск по файлу"
+  },
+  "pools": {
+    "add": "Добавить пул",
+    "deferredSlotsIncluded": "Включены отложенные слоты",
+    "delete": {
+      "title": "Удалить пул",
+      "warning": "Это удалит все метаданные, связанные с пулом, и может повлиять на задачи, использующие этот пул."
+    },
+    "edit": "Редактировать пул",
+    "form": {
+      "checkbox": "Убедитесь, что отложенные задачи включены в расчет открытых слотов пула",
+      "description": "Описание",
+      "includeDeferred": "Включить отложенные",
+      "nameMaxLength": "Имя может содержать максимум 256 символов",
+      "nameRequired": "Имя обязательно",
+      "slots": "Слоты"
+    },
+    "noPoolsFound": "Пулы не найдены",
+    "pool_one": "Пул",
+    "pool_other": "Пулы",
+    "searchPlaceholder": "Поиск пулов",
+    "sort": {
+      "asc": "Имя (A-Z)",
+      "desc": "Имя (Z-A)",
+      "placeholder": "Сортировать по"
+    }
+  },
+  "providers": {
+    "columns": {
+      "packageName": "Название пакета",
+      "version": "Версия"
+    }
+  },
+  "variables": {
+    "add": "Добавить переменную",
+    "columns": {
+      "isEncrypted": "Зашифрована ли"
+    },
+    "delete": {
+      "deleteVariable_one": "Удалить 1 переменную",
+      "deleteVariable_other": "Удалить {{count}} переменных",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующую переменную:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие переменные:",
+      "title": "Удалить переменную",
+      "tooltip": "Удалить выбранные переменные"
+    },
+    "edit": "Редактировать переменную",
+    "form": {
+      "invalidJson": "Некорректный JSON",
+      "keyMaxLength": "Ключ может содержать максимум 250 символов",
+      "keyRequired": "Ключ обязателен",
+      "valueRequired": "Значение обязательно"
+    },
+    "import": {
+      "button": "Импортировать",
+      "conflictResolution": "Выберите разрешение конфликта переменной",

Review Comment:
   ```suggestion
         "conflictResolution": "Выберите способ разрешения конфликтов переменных",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dag.json:
##########
@@ -0,0 +1,191 @@
+{
+  "allRuns": "Все Запуски",
+  "blockingDeps": {
+    "dependency": "Зависимость",
+    "reason": "Причина",
+    "title": "Зависимости, которые блокируют Запуск задачи"
+  },
+  "calendar": {
+    "daily": "Ежедневно",
+    "hourly": "Каждый час",
+    "legend": {
+      "less": "Меньше",
+      "mixed": "Смешанные",
+      "more": "Больше"
+    },
+    "navigation": {
+      "nextMonth": "Следующий месяц",
+      "nextYear": "Следующий год",
+      "previousMonth": "Предыдущий месяц",
+      "previousYear": "Предыдущий год"
+    },
+    "noData": "Нет доступных данных",
+    "noFailedRuns": "Нет неудачных запусков",
+    "noRuns": "Нет запусков",
+    "totalRuns": "Всего запусков",
+    "week": "Неделя {{weekNumber}}",
+    "weekdays": {
+      "friday": "Пт",
+      "monday": "Пн",
+      "saturday": "Сб",
+      "sunday": "Вс",
+      "thursday": "Чт",
+      "tuesday": "Вт",
+      "wednesday": "Ср"
+    }
+  },
+  "code": {
+    "bundleUrl": "URL пакета",
+    "noCode": "Код не найден",
+    "parseDuration": "Длительность разбора:",
+    "parsedAt": "Разобрано в:"
+  },
+  "extraLinks": "Дополнительные ссылки",
+  "grid": {
+    "buttons": {
+      "resetToLatest": "Сбросить до последнего",
+      "toggleGroup": "Переключить группу"
+    },
+    "runTypeLegend": "Легенда типа запуска"
+  },
+  "header": {
+    "buttons": {
+      "advanced": "Расширенные настройки",
+      "dagDocs": "Документация ДАГа"
+    }
+  },
+  "logs": {
+    "allLevels": "Все уровни логов",
+    "allSources": "Все источники",
+    "critical": "КРИТИЧЕСКИЙ",
+    "debug": "ОТЛАДКА",
+    "error": "ОШИБКА",
+    "fullscreen": {
+      "button": "На весь экран",
+      "tooltip": "Нажмите {{hotkey}} для полного экрана"
+    },
+    "info": "ИНФОРМАЦИЯ",
+    "noTryNumber": "Нет номера попытки",
+    "settings": "Настройки логов",
+    "viewInExternal": "Просмотреть логи в {{name}} (попытка {{attempt}})",
+    "warning": "ПРЕДУПРЕЖДЕНИЕ"
+  },
+  "navigation": {
+    "navigation": "Навигация: Shift+{{arrow}}",
+    "toggleGroup": "Переключить группу: Пробел"
+  },
+  "notFound": {
+    "back": "Назад",
+    "backToDags": "Назад к ДАГам",
+    "message": "ДАГ \"{{dagId}}\" не существует.",
+    "title": "ДАГ не найден"
+  },
+  "overview": {
+    "buttons": {
+      "failedRun_one": "Неудачный запуск",
+      "failedRun_other": "Неудачные запуски",
+      "failedTask_one": "Неудачная задача",
+      "failedTask_other": "Неудачные задачи",
+      "failedTaskInstance_one": "Неудачный экземпляр задачи",
+      "failedTaskInstance_other": "Неудачные экземпляры задач"
+    },
+    "charts": {
+      "assetEvent_one": "Созданное событие актива",
+      "assetEvent_other": "Созданные события актива"
+    },
+    "failedLogs": {
+      "hideLogs": "Скрыть логи",
+      "showLogs": "Показать логи",
+      "title": "Недавние логи неудачных задач",
+      "viewFullLogs": "Просмотреть полные логи"
+    }
+  },
+  "panel": {
+    "buttons": {
+      "options": "Опции",
+      "showGantt": "Показать Гантт",
+      "showGraphShortcut": "Показать граф (нажмите g)",
+      "showGridShortcut": "Показать сетку (нажмите g)"
+    },
+    "dagRuns": {
+      "label": "Количество запусков ДАГа"
+    },
+    "dependencies": {
+      "label": "Зависимости",
+      "options": {
+        "allDagDependencies": "Все зависимости ДАГа",
+        "externalConditions": "Внешние условия",
+        "onlyTasks": "Только задачи"
+      },
+      "placeholder": "Зависимости"
+    },
+    "graphDirection": {
+      "label": "Направление графа"
+    },
+    "showVersionIndicator": {
+      "label": "Показать индикатор версии",
+      "options": {
+        "hideAll": "Скрыть все",
+        "showAll": "Показать все",
+        "showBundleVersion": "Показать версию пакета",
+        "showDagVersion": "Показать версию ДАГа"
+      }
+    },
+    "taskStreamFilter": {
+      "activeFilter": "Активный фильтр",
+      "clearFilter": "Очистить фильтр",
+      "clickTask": "Нажмите на задачу, чтобы выбрать ее в качестве корня фильтра",
+      "depth": "Глубина",
+      "direction": "Направление",
+      "label": "Фильтр",
+      "mode": "Режим",
+      "modeTooltip": "Статический режим сохраняет текущее представление при навигации к другим задачам, в то время как режим Траверса автоматически обновляет активный фильтр до нажатой задачи для более легкой навигации по ДАГу.",
+      "modes": {
+        "static": "Статический",
+        "traverse": "Траверс"
+      },
+      "options": {
+        "both": "Как вверх, так и вниз по потоку",
+        "downstream": "Вниз по потоку",
+        "upstream": "Вверх по потоку"
+      },
+      "selectedTask": "Выбранная задача"
+    }
+  },
+  "paramsFailed": "Не удалось загрузить параметры",
+  "parse": {
+    "toaster": {
+      "error": {
+        "description": "Не удалось разобрать запрос ДАГа. Возможно, остаются незавершенные запросы на разбор.",
+        "title": "Не удалось повторно разобрать ДАГ"
+      },
+      "success": {
+        "description": "ДАГ должен вскоре быть повторно разобран.",

Review Comment:
   ```suggestion
           "description": "ДАГ скоро будет повторно распарсен.",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dag.json:
##########
@@ -0,0 +1,191 @@
+{
+  "allRuns": "Все Запуски",
+  "blockingDeps": {
+    "dependency": "Зависимость",
+    "reason": "Причина",
+    "title": "Зависимости, которые блокируют Запуск задачи"
+  },
+  "calendar": {
+    "daily": "Ежедневно",
+    "hourly": "Каждый час",
+    "legend": {
+      "less": "Меньше",
+      "mixed": "Смешанные",
+      "more": "Больше"
+    },
+    "navigation": {
+      "nextMonth": "Следующий месяц",
+      "nextYear": "Следующий год",
+      "previousMonth": "Предыдущий месяц",
+      "previousYear": "Предыдущий год"
+    },
+    "noData": "Нет доступных данных",
+    "noFailedRuns": "Нет неудачных запусков",
+    "noRuns": "Нет запусков",
+    "totalRuns": "Всего запусков",
+    "week": "Неделя {{weekNumber}}",
+    "weekdays": {
+      "friday": "Пт",
+      "monday": "Пн",
+      "saturday": "Сб",
+      "sunday": "Вс",
+      "thursday": "Чт",
+      "tuesday": "Вт",
+      "wednesday": "Ср"
+    }
+  },
+  "code": {
+    "bundleUrl": "URL пакета",
+    "noCode": "Код не найден",
+    "parseDuration": "Длительность разбора:",
+    "parsedAt": "Разобрано в:"
+  },
+  "extraLinks": "Дополнительные ссылки",
+  "grid": {
+    "buttons": {
+      "resetToLatest": "Сбросить до последнего",
+      "toggleGroup": "Переключить группу"
+    },
+    "runTypeLegend": "Легенда типа запуска"
+  },
+  "header": {
+    "buttons": {
+      "advanced": "Расширенные настройки",
+      "dagDocs": "Документация ДАГа"
+    }
+  },
+  "logs": {
+    "allLevels": "Все уровни логов",
+    "allSources": "Все источники",
+    "critical": "КРИТИЧЕСКИЙ",
+    "debug": "ОТЛАДКА",
+    "error": "ОШИБКА",
+    "fullscreen": {
+      "button": "На весь экран",
+      "tooltip": "Нажмите {{hotkey}} для полного экрана"
+    },
+    "info": "ИНФОРМАЦИЯ",
+    "noTryNumber": "Нет номера попытки",
+    "settings": "Настройки логов",
+    "viewInExternal": "Просмотреть логи в {{name}} (попытка {{attempt}})",
+    "warning": "ПРЕДУПРЕЖДЕНИЕ"
+  },
+  "navigation": {
+    "navigation": "Навигация: Shift+{{arrow}}",
+    "toggleGroup": "Переключить группу: Пробел"
+  },
+  "notFound": {
+    "back": "Назад",
+    "backToDags": "Назад к ДАГам",
+    "message": "ДАГ \"{{dagId}}\" не существует.",
+    "title": "ДАГ не найден"
+  },
+  "overview": {
+    "buttons": {
+      "failedRun_one": "Неудачный запуск",
+      "failedRun_other": "Неудачные запуски",
+      "failedTask_one": "Неудачная задача",
+      "failedTask_other": "Неудачные задачи",
+      "failedTaskInstance_one": "Неудачный экземпляр задачи",
+      "failedTaskInstance_other": "Неудачные экземпляры задач"
+    },
+    "charts": {
+      "assetEvent_one": "Созданное событие актива",
+      "assetEvent_other": "Созданные события актива"
+    },
+    "failedLogs": {
+      "hideLogs": "Скрыть логи",
+      "showLogs": "Показать логи",
+      "title": "Недавние логи неудачных задач",
+      "viewFullLogs": "Просмотреть полные логи"
+    }
+  },
+  "panel": {
+    "buttons": {
+      "options": "Опции",
+      "showGantt": "Показать Гантт",
+      "showGraphShortcut": "Показать граф (нажмите g)",
+      "showGridShortcut": "Показать сетку (нажмите g)"
+    },
+    "dagRuns": {
+      "label": "Количество запусков ДАГа"
+    },
+    "dependencies": {
+      "label": "Зависимости",
+      "options": {
+        "allDagDependencies": "Все зависимости ДАГа",
+        "externalConditions": "Внешние условия",
+        "onlyTasks": "Только задачи"
+      },
+      "placeholder": "Зависимости"
+    },
+    "graphDirection": {
+      "label": "Направление графа"
+    },
+    "showVersionIndicator": {
+      "label": "Показать индикатор версии",
+      "options": {
+        "hideAll": "Скрыть все",
+        "showAll": "Показать все",
+        "showBundleVersion": "Показать версию пакета",
+        "showDagVersion": "Показать версию ДАГа"
+      }
+    },
+    "taskStreamFilter": {
+      "activeFilter": "Активный фильтр",
+      "clearFilter": "Очистить фильтр",
+      "clickTask": "Нажмите на задачу, чтобы выбрать ее в качестве корня фильтра",
+      "depth": "Глубина",
+      "direction": "Направление",
+      "label": "Фильтр",
+      "mode": "Режим",
+      "modeTooltip": "Статический режим сохраняет текущее представление при навигации к другим задачам, в то время как режим Траверса автоматически обновляет активный фильтр до нажатой задачи для более легкой навигации по ДАГу.",
+      "modes": {
+        "static": "Статический",
+        "traverse": "Траверс"
+      },
+      "options": {
+        "both": "Как вверх, так и вниз по потоку",
+        "downstream": "Вниз по потоку",
+        "upstream": "Вверх по потоку"
+      },
+      "selectedTask": "Выбранная задача"
+    }
+  },
+  "paramsFailed": "Не удалось загрузить параметры",
+  "parse": {
+    "toaster": {
+      "error": {
+        "description": "Не удалось разобрать запрос ДАГа. Возможно, остаются незавершенные запросы на разбор.",
+        "title": "Не удалось повторно разобрать ДАГ"
+      },
+      "success": {
+        "description": "ДАГ должен вскоре быть повторно разобран.",
+        "title": "Запрос на повторный разбор успешно отправлен"

Review Comment:
   ```suggestion
           "title": "Запрос на повторный парсинг успешно отправлен"
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/admin.json:
##########
@@ -0,0 +1,189 @@
+{
+  "columns": {
+    "description": "Описание",
+    "key": "Ключ",
+    "name": "Имя",
+    "team": "Команда",
+    "value": "Значение"
+  },
+  "config": {
+    "columns": {
+      "section": "Раздел"
+    },
+    "title": "Конфигурация Airflow"
+  },
+  "connections": {
+    "add": "Добавить соединение",
+    "columns": {
+      "connectionId": "ID соединения",
+      "connectionType": "Тип соединения",
+      "host": "Хост",
+      "port": "Порт"
+    },
+    "connection_one": "Соединение",
+    "connection_other": "Соединений",
+    "delete": {
+      "deleteConnection_few": "Удалить {{count}} соединения",
+      "deleteConnection_one": "Удалить 1 соединение",
+      "deleteConnection_other": "Удалить {{count}} соединений",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующее соединение:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие соединения:",
+      "title": "Удалить соединение"
+    },
+    "edit": "Редактировать соединение",
+    "form": {
+      "connectionIdRequired": "ID соединения обязателен",
+      "connectionIdRequirement": "ID соединения не может состоять только из пробелов",
+      "connectionTypeRequired": "Тип соединения обязателен",
+      "extraFields": "Дополнительные поля",
+      "extraFieldsJson": "Дополнительные поля JSON",
+      "helperText": "Отсутствует тип соединения? Убедитесь, что вы установили соответствующий пакет Airflow Providers.",
+      "helperTextForRedactedFields": "Скрытые поля ('***') останутся неизменными, если не будут изменены.",
+      "selectConnectionType": "Выбрать тип соединения",
+      "standardFields": "Стандартные поля"
+    },
+    "nothingFound": {
+      "description": "Соединения, определенные через переменные окружения или менеджеры секретов, здесь не перечислены.",
+      "documentationLink": "Узнайте больше в документации Airflow.",
+      "learnMore": "Эти соединения обрабатываются во время выполнения и не видны в интерфейсе.",

Review Comment:
   ```suggestion
         "learnMore": "Эти соединения обрабатываются во время выполнения и не отображаются в интерфейсе.",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/admin.json:
##########
@@ -0,0 +1,189 @@
+{
+  "columns": {
+    "description": "Описание",
+    "key": "Ключ",
+    "name": "Имя",
+    "team": "Команда",
+    "value": "Значение"
+  },
+  "config": {
+    "columns": {
+      "section": "Раздел"
+    },
+    "title": "Конфигурация Airflow"
+  },
+  "connections": {
+    "add": "Добавить соединение",
+    "columns": {
+      "connectionId": "ID соединения",
+      "connectionType": "Тип соединения",
+      "host": "Хост",
+      "port": "Порт"
+    },
+    "connection_one": "Соединение",
+    "connection_other": "Соединений",
+    "delete": {
+      "deleteConnection_few": "Удалить {{count}} соединения",
+      "deleteConnection_one": "Удалить 1 соединение",
+      "deleteConnection_other": "Удалить {{count}} соединений",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующее соединение:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие соединения:",
+      "title": "Удалить соединение"
+    },
+    "edit": "Редактировать соединение",
+    "form": {
+      "connectionIdRequired": "ID соединения обязателен",
+      "connectionIdRequirement": "ID соединения не может состоять только из пробелов",
+      "connectionTypeRequired": "Тип соединения обязателен",
+      "extraFields": "Дополнительные поля",
+      "extraFieldsJson": "Дополнительные поля JSON",
+      "helperText": "Отсутствует тип соединения? Убедитесь, что вы установили соответствующий пакет Airflow Providers.",
+      "helperTextForRedactedFields": "Скрытые поля ('***') останутся неизменными, если не будут изменены.",
+      "selectConnectionType": "Выбрать тип соединения",
+      "standardFields": "Стандартные поля"
+    },
+    "nothingFound": {
+      "description": "Соединения, определенные через переменные окружения или менеджеры секретов, здесь не перечислены.",
+      "documentationLink": "Узнайте больше в документации Airflow.",
+      "learnMore": "Эти соединения обрабатываются во время выполнения и не видны в интерфейсе.",
+      "title": "Соединение не найдено!"
+    },
+    "searchPlaceholder": "Поиск соединений",
+    "test": "Тестировать соединение",
+    "testDisabled": "Функция тестирования соединения отключена. Пожалуйста, свяжитесь с администратором, чтобы включить ее.",
+    "testError": {
+      "title": "Ошибка тестирования соединения"
+    },
+    "testSuccess": {
+      "title": "Тестирование соединения успешно"
+    },
+    "typeMeta": {
+      "error": "Не удалось получить метаданные типа соединения",
+      "standardFields": {
+        "description": "Описание",
+        "host": "Хост",
+        "login": "Логин",
+        "password": "Пароль",
+        "port": "Порт",
+        "url_schema": "Схема"
+      }
+    }
+  },
+  "deleteActions": {
+    "button": "Удалить",
+    "modal": {
+      "confirmButton": "Да, удалить",
+      "secondConfirmMessage": "Это действие является постоянным и не может быть отменено.",
+      "thirdConfirmMessage": "Вы уверены, что хотите продолжить?"
+    },
+    "selected": "Выбрано",
+    "tooltip": "Удалить выбранные соединения"
+  },
+  "formActions": {
+    "save": "Сохранить"
+  },
+  "jobs": {
+    "columns": {
+      "executorClass": "Класс исполнителя",
+      "hostname": "Имя хоста",
+      "id": "ID",
+      "jobType": "Тип задания",
+      "latestHeartbeat": "Последний heartbeat",
+      "unixname": "Unix имя"
+    },
+    "filters": {
+      "allStates": "Все состояния",
+      "allTypes": "Все типы",
+      "dagProcessorJob": "DagProcessorJob",

Review Comment:
   ```suggestion
         "dagProcessorJob": "Задание обработки ДАГа",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dag.json:
##########
@@ -0,0 +1,191 @@
+{
+  "allRuns": "Все Запуски",
+  "blockingDeps": {
+    "dependency": "Зависимость",
+    "reason": "Причина",
+    "title": "Зависимости, которые блокируют Запуск задачи"
+  },
+  "calendar": {
+    "daily": "Ежедневно",
+    "hourly": "Каждый час",
+    "legend": {
+      "less": "Меньше",
+      "mixed": "Смешанные",
+      "more": "Больше"
+    },
+    "navigation": {
+      "nextMonth": "Следующий месяц",
+      "nextYear": "Следующий год",
+      "previousMonth": "Предыдущий месяц",
+      "previousYear": "Предыдущий год"
+    },
+    "noData": "Нет доступных данных",
+    "noFailedRuns": "Нет неудачных запусков",
+    "noRuns": "Нет запусков",
+    "totalRuns": "Всего запусков",
+    "week": "Неделя {{weekNumber}}",
+    "weekdays": {
+      "friday": "Пт",
+      "monday": "Пн",
+      "saturday": "Сб",
+      "sunday": "Вс",
+      "thursday": "Чт",
+      "tuesday": "Вт",
+      "wednesday": "Ср"
+    }
+  },
+  "code": {
+    "bundleUrl": "URL пакета",
+    "noCode": "Код не найден",
+    "parseDuration": "Длительность разбора:",
+    "parsedAt": "Разобрано в:"
+  },
+  "extraLinks": "Дополнительные ссылки",
+  "grid": {
+    "buttons": {
+      "resetToLatest": "Сбросить до последнего",
+      "toggleGroup": "Переключить группу"
+    },
+    "runTypeLegend": "Легенда типа запуска"
+  },
+  "header": {
+    "buttons": {
+      "advanced": "Расширенные настройки",
+      "dagDocs": "Документация ДАГа"
+    }
+  },
+  "logs": {
+    "allLevels": "Все уровни логов",
+    "allSources": "Все источники",
+    "critical": "КРИТИЧЕСКИЙ",
+    "debug": "ОТЛАДКА",
+    "error": "ОШИБКА",
+    "fullscreen": {
+      "button": "На весь экран",
+      "tooltip": "Нажмите {{hotkey}} для полного экрана"
+    },
+    "info": "ИНФОРМАЦИЯ",
+    "noTryNumber": "Нет номера попытки",
+    "settings": "Настройки логов",
+    "viewInExternal": "Просмотреть логи в {{name}} (попытка {{attempt}})",
+    "warning": "ПРЕДУПРЕЖДЕНИЕ"
+  },
+  "navigation": {
+    "navigation": "Навигация: Shift+{{arrow}}",
+    "toggleGroup": "Переключить группу: Пробел"
+  },
+  "notFound": {
+    "back": "Назад",
+    "backToDags": "Назад к ДАГам",
+    "message": "ДАГ \"{{dagId}}\" не существует.",
+    "title": "ДАГ не найден"
+  },
+  "overview": {
+    "buttons": {
+      "failedRun_one": "Неудачный запуск",
+      "failedRun_other": "Неудачные запуски",
+      "failedTask_one": "Неудачная задача",
+      "failedTask_other": "Неудачные задачи",
+      "failedTaskInstance_one": "Неудачный экземпляр задачи",
+      "failedTaskInstance_other": "Неудачные экземпляры задач"
+    },
+    "charts": {
+      "assetEvent_one": "Созданное событие актива",
+      "assetEvent_other": "Созданные события актива"
+    },
+    "failedLogs": {
+      "hideLogs": "Скрыть логи",
+      "showLogs": "Показать логи",
+      "title": "Недавние логи неудачных задач",
+      "viewFullLogs": "Просмотреть полные логи"
+    }
+  },
+  "panel": {
+    "buttons": {
+      "options": "Опции",
+      "showGantt": "Показать Гантт",
+      "showGraphShortcut": "Показать граф (нажмите g)",
+      "showGridShortcut": "Показать сетку (нажмите g)"
+    },
+    "dagRuns": {
+      "label": "Количество запусков ДАГа"
+    },
+    "dependencies": {
+      "label": "Зависимости",
+      "options": {
+        "allDagDependencies": "Все зависимости ДАГа",
+        "externalConditions": "Внешние условия",
+        "onlyTasks": "Только задачи"
+      },
+      "placeholder": "Зависимости"
+    },
+    "graphDirection": {
+      "label": "Направление графа"
+    },
+    "showVersionIndicator": {
+      "label": "Показать индикатор версии",
+      "options": {
+        "hideAll": "Скрыть все",
+        "showAll": "Показать все",
+        "showBundleVersion": "Показать версию пакета",
+        "showDagVersion": "Показать версию ДАГа"
+      }
+    },
+    "taskStreamFilter": {
+      "activeFilter": "Активный фильтр",
+      "clearFilter": "Очистить фильтр",
+      "clickTask": "Нажмите на задачу, чтобы выбрать ее в качестве корня фильтра",
+      "depth": "Глубина",
+      "direction": "Направление",
+      "label": "Фильтр",
+      "mode": "Режим",
+      "modeTooltip": "Статический режим сохраняет текущее представление при навигации к другим задачам, в то время как режим Траверса автоматически обновляет активный фильтр до нажатой задачи для более легкой навигации по ДАГу.",
+      "modes": {
+        "static": "Статический",
+        "traverse": "Траверс"
+      },
+      "options": {
+        "both": "Как вверх, так и вниз по потоку",
+        "downstream": "Вниз по потоку",
+        "upstream": "Вверх по потоку"
+      },
+      "selectedTask": "Выбранная задача"
+    }
+  },
+  "paramsFailed": "Не удалось загрузить параметры",
+  "parse": {
+    "toaster": {
+      "error": {
+        "description": "Не удалось разобрать запрос ДАГа. Возможно, остаются незавершенные запросы на разбор.",

Review Comment:
   ```suggestion
           "description": "Запрос на парсинг DAG не выполнен. Возможно, есть ожидающие запросы на парсинг, которые еще предстоит обработать.",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/admin.json:
##########
@@ -0,0 +1,189 @@
+{
+  "columns": {
+    "description": "Описание",
+    "key": "Ключ",
+    "name": "Имя",
+    "team": "Команда",
+    "value": "Значение"
+  },
+  "config": {
+    "columns": {
+      "section": "Раздел"
+    },
+    "title": "Конфигурация Airflow"
+  },
+  "connections": {
+    "add": "Добавить соединение",
+    "columns": {
+      "connectionId": "ID соединения",
+      "connectionType": "Тип соединения",
+      "host": "Хост",
+      "port": "Порт"
+    },
+    "connection_one": "Соединение",
+    "connection_other": "Соединений",
+    "delete": {
+      "deleteConnection_few": "Удалить {{count}} соединения",
+      "deleteConnection_one": "Удалить 1 соединение",
+      "deleteConnection_other": "Удалить {{count}} соединений",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующее соединение:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие соединения:",
+      "title": "Удалить соединение"
+    },
+    "edit": "Редактировать соединение",
+    "form": {
+      "connectionIdRequired": "ID соединения обязателен",
+      "connectionIdRequirement": "ID соединения не может состоять только из пробелов",
+      "connectionTypeRequired": "Тип соединения обязателен",
+      "extraFields": "Дополнительные поля",
+      "extraFieldsJson": "Дополнительные поля JSON",
+      "helperText": "Отсутствует тип соединения? Убедитесь, что вы установили соответствующий пакет Airflow Providers.",
+      "helperTextForRedactedFields": "Скрытые поля ('***') останутся неизменными, если не будут изменены.",
+      "selectConnectionType": "Выбрать тип соединения",
+      "standardFields": "Стандартные поля"
+    },
+    "nothingFound": {
+      "description": "Соединения, определенные через переменные окружения или менеджеры секретов, здесь не перечислены.",
+      "documentationLink": "Узнайте больше в документации Airflow.",
+      "learnMore": "Эти соединения обрабатываются во время выполнения и не видны в интерфейсе.",
+      "title": "Соединение не найдено!"
+    },
+    "searchPlaceholder": "Поиск соединений",
+    "test": "Тестировать соединение",
+    "testDisabled": "Функция тестирования соединения отключена. Пожалуйста, свяжитесь с администратором, чтобы включить ее.",
+    "testError": {
+      "title": "Ошибка тестирования соединения"
+    },
+    "testSuccess": {
+      "title": "Тестирование соединения успешно"
+    },
+    "typeMeta": {
+      "error": "Не удалось получить метаданные типа соединения",
+      "standardFields": {
+        "description": "Описание",
+        "host": "Хост",
+        "login": "Логин",
+        "password": "Пароль",
+        "port": "Порт",
+        "url_schema": "Схема"
+      }
+    }
+  },
+  "deleteActions": {
+    "button": "Удалить",
+    "modal": {
+      "confirmButton": "Да, удалить",
+      "secondConfirmMessage": "Это действие является постоянным и не может быть отменено.",
+      "thirdConfirmMessage": "Вы уверены, что хотите продолжить?"
+    },
+    "selected": "Выбрано",
+    "tooltip": "Удалить выбранные соединения"
+  },
+  "formActions": {
+    "save": "Сохранить"
+  },
+  "jobs": {
+    "columns": {
+      "executorClass": "Класс исполнителя",
+      "hostname": "Имя хоста",
+      "id": "ID",
+      "jobType": "Тип задания",
+      "latestHeartbeat": "Последний heartbeat",
+      "unixname": "Unix имя"
+    },
+    "filters": {
+      "allStates": "Все состояния",
+      "allTypes": "Все типы",
+      "dagProcessorJob": "DagProcessorJob",
+      "schedulerJob": "SchedulerJob",
+      "triggererJob": "TriggererJob"

Review Comment:
   ```suggestion
         "triggererJob": "Задание триггера"
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dag.json:
##########
@@ -0,0 +1,191 @@
+{
+  "allRuns": "Все Запуски",
+  "blockingDeps": {
+    "dependency": "Зависимость",
+    "reason": "Причина",
+    "title": "Зависимости, которые блокируют Запуск задачи"
+  },
+  "calendar": {
+    "daily": "Ежедневно",
+    "hourly": "Каждый час",
+    "legend": {
+      "less": "Меньше",
+      "mixed": "Смешанные",
+      "more": "Больше"
+    },
+    "navigation": {
+      "nextMonth": "Следующий месяц",
+      "nextYear": "Следующий год",
+      "previousMonth": "Предыдущий месяц",
+      "previousYear": "Предыдущий год"
+    },
+    "noData": "Нет доступных данных",
+    "noFailedRuns": "Нет неудачных запусков",
+    "noRuns": "Нет запусков",
+    "totalRuns": "Всего запусков",
+    "week": "Неделя {{weekNumber}}",
+    "weekdays": {
+      "friday": "Пт",
+      "monday": "Пн",
+      "saturday": "Сб",
+      "sunday": "Вс",
+      "thursday": "Чт",
+      "tuesday": "Вт",
+      "wednesday": "Ср"
+    }
+  },
+  "code": {
+    "bundleUrl": "URL пакета",
+    "noCode": "Код не найден",
+    "parseDuration": "Длительность разбора:",
+    "parsedAt": "Разобрано в:"

Review Comment:
   ```suggestion
       "parsedAt": "Распарсен в:"
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dag.json:
##########
@@ -0,0 +1,191 @@
+{
+  "allRuns": "Все Запуски",
+  "blockingDeps": {
+    "dependency": "Зависимость",
+    "reason": "Причина",
+    "title": "Зависимости, которые блокируют Запуск задачи"
+  },
+  "calendar": {
+    "daily": "Ежедневно",
+    "hourly": "Каждый час",
+    "legend": {
+      "less": "Меньше",
+      "mixed": "Смешанные",
+      "more": "Больше"
+    },
+    "navigation": {
+      "nextMonth": "Следующий месяц",
+      "nextYear": "Следующий год",
+      "previousMonth": "Предыдущий месяц",
+      "previousYear": "Предыдущий год"
+    },
+    "noData": "Нет доступных данных",
+    "noFailedRuns": "Нет неудачных запусков",
+    "noRuns": "Нет запусков",
+    "totalRuns": "Всего запусков",
+    "week": "Неделя {{weekNumber}}",
+    "weekdays": {
+      "friday": "Пт",
+      "monday": "Пн",
+      "saturday": "Сб",
+      "sunday": "Вс",
+      "thursday": "Чт",
+      "tuesday": "Вт",
+      "wednesday": "Ср"
+    }
+  },
+  "code": {
+    "bundleUrl": "URL пакета",
+    "noCode": "Код не найден",
+    "parseDuration": "Длительность разбора:",

Review Comment:
   ```suggestion
       "parseDuration": "Длительность парсинга:",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/admin.json:
##########
@@ -0,0 +1,189 @@
+{
+  "columns": {
+    "description": "Описание",
+    "key": "Ключ",
+    "name": "Имя",
+    "team": "Команда",
+    "value": "Значение"
+  },
+  "config": {
+    "columns": {
+      "section": "Раздел"
+    },
+    "title": "Конфигурация Airflow"
+  },
+  "connections": {
+    "add": "Добавить соединение",
+    "columns": {
+      "connectionId": "ID соединения",
+      "connectionType": "Тип соединения",
+      "host": "Хост",
+      "port": "Порт"
+    },
+    "connection_one": "Соединение",
+    "connection_other": "Соединений",
+    "delete": {
+      "deleteConnection_few": "Удалить {{count}} соединения",
+      "deleteConnection_one": "Удалить 1 соединение",
+      "deleteConnection_other": "Удалить {{count}} соединений",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующее соединение:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие соединения:",
+      "title": "Удалить соединение"
+    },
+    "edit": "Редактировать соединение",
+    "form": {
+      "connectionIdRequired": "ID соединения обязателен",
+      "connectionIdRequirement": "ID соединения не может состоять только из пробелов",
+      "connectionTypeRequired": "Тип соединения обязателен",
+      "extraFields": "Дополнительные поля",
+      "extraFieldsJson": "Дополнительные поля JSON",
+      "helperText": "Отсутствует тип соединения? Убедитесь, что вы установили соответствующий пакет Airflow Providers.",
+      "helperTextForRedactedFields": "Скрытые поля ('***') останутся неизменными, если не будут изменены.",
+      "selectConnectionType": "Выбрать тип соединения",
+      "standardFields": "Стандартные поля"
+    },
+    "nothingFound": {
+      "description": "Соединения, определенные через переменные окружения или менеджеры секретов, здесь не перечислены.",
+      "documentationLink": "Узнайте больше в документации Airflow.",
+      "learnMore": "Эти соединения обрабатываются во время выполнения и не видны в интерфейсе.",
+      "title": "Соединение не найдено!"
+    },
+    "searchPlaceholder": "Поиск соединений",
+    "test": "Тестировать соединение",
+    "testDisabled": "Функция тестирования соединения отключена. Пожалуйста, свяжитесь с администратором, чтобы включить ее.",
+    "testError": {
+      "title": "Ошибка тестирования соединения"
+    },
+    "testSuccess": {
+      "title": "Тестирование соединения успешно"
+    },
+    "typeMeta": {
+      "error": "Не удалось получить метаданные типа соединения",
+      "standardFields": {
+        "description": "Описание",
+        "host": "Хост",
+        "login": "Логин",
+        "password": "Пароль",
+        "port": "Порт",
+        "url_schema": "Схема"
+      }
+    }
+  },
+  "deleteActions": {
+    "button": "Удалить",
+    "modal": {
+      "confirmButton": "Да, удалить",
+      "secondConfirmMessage": "Это действие является постоянным и не может быть отменено.",
+      "thirdConfirmMessage": "Вы уверены, что хотите продолжить?"
+    },
+    "selected": "Выбрано",
+    "tooltip": "Удалить выбранные соединения"
+  },
+  "formActions": {
+    "save": "Сохранить"
+  },
+  "jobs": {
+    "columns": {
+      "executorClass": "Класс исполнителя",
+      "hostname": "Имя хоста",
+      "id": "ID",
+      "jobType": "Тип задания",
+      "latestHeartbeat": "Последний heartbeat",
+      "unixname": "Unix имя"
+    },
+    "filters": {
+      "allStates": "Все состояния",
+      "allTypes": "Все типы",
+      "dagProcessorJob": "DagProcessorJob",
+      "schedulerJob": "SchedulerJob",
+      "triggererJob": "TriggererJob"
+    }
+  },
+  "plugins": {
+    "columns": {
+      "source": "Источник"
+    },
+    "importError_one": "Ошибка импорта плагина",
+    "importError_other": "Ошибки импорта плагинов",
+    "searchPlaceholder": "Поиск по файлу"
+  },
+  "pools": {
+    "add": "Добавить пул",
+    "deferredSlotsIncluded": "Включены отложенные слоты",
+    "delete": {
+      "title": "Удалить пул",
+      "warning": "Это удалит все метаданные, связанные с пулом, и может повлиять на задачи, использующие этот пул."
+    },
+    "edit": "Редактировать пул",
+    "form": {
+      "checkbox": "Убедитесь, что отложенные задачи включены в расчет открытых слотов пула",

Review Comment:
   ```suggestion
         "checkbox": "Учитывать отложенные задачи при подсчёте свободных слотов пула",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/admin.json:
##########
@@ -0,0 +1,189 @@
+{
+  "columns": {
+    "description": "Описание",
+    "key": "Ключ",
+    "name": "Имя",
+    "team": "Команда",
+    "value": "Значение"
+  },
+  "config": {
+    "columns": {
+      "section": "Раздел"
+    },
+    "title": "Конфигурация Airflow"
+  },
+  "connections": {
+    "add": "Добавить соединение",
+    "columns": {
+      "connectionId": "ID соединения",
+      "connectionType": "Тип соединения",
+      "host": "Хост",
+      "port": "Порт"
+    },
+    "connection_one": "Соединение",
+    "connection_other": "Соединений",
+    "delete": {
+      "deleteConnection_few": "Удалить {{count}} соединения",
+      "deleteConnection_one": "Удалить 1 соединение",
+      "deleteConnection_other": "Удалить {{count}} соединений",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующее соединение:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие соединения:",
+      "title": "Удалить соединение"
+    },
+    "edit": "Редактировать соединение",
+    "form": {
+      "connectionIdRequired": "ID соединения обязателен",
+      "connectionIdRequirement": "ID соединения не может состоять только из пробелов",
+      "connectionTypeRequired": "Тип соединения обязателен",
+      "extraFields": "Дополнительные поля",
+      "extraFieldsJson": "Дополнительные поля JSON",
+      "helperText": "Отсутствует тип соединения? Убедитесь, что вы установили соответствующий пакет Airflow Providers.",
+      "helperTextForRedactedFields": "Скрытые поля ('***') останутся неизменными, если не будут изменены.",
+      "selectConnectionType": "Выбрать тип соединения",
+      "standardFields": "Стандартные поля"
+    },
+    "nothingFound": {
+      "description": "Соединения, определенные через переменные окружения или менеджеры секретов, здесь не перечислены.",
+      "documentationLink": "Узнайте больше в документации Airflow.",
+      "learnMore": "Эти соединения обрабатываются во время выполнения и не видны в интерфейсе.",
+      "title": "Соединение не найдено!"
+    },
+    "searchPlaceholder": "Поиск соединений",
+    "test": "Тестировать соединение",
+    "testDisabled": "Функция тестирования соединения отключена. Пожалуйста, свяжитесь с администратором, чтобы включить ее.",
+    "testError": {
+      "title": "Ошибка тестирования соединения"
+    },
+    "testSuccess": {
+      "title": "Тестирование соединения успешно"
+    },
+    "typeMeta": {
+      "error": "Не удалось получить метаданные типа соединения",
+      "standardFields": {
+        "description": "Описание",
+        "host": "Хост",
+        "login": "Логин",
+        "password": "Пароль",
+        "port": "Порт",
+        "url_schema": "Схема"
+      }
+    }
+  },
+  "deleteActions": {
+    "button": "Удалить",
+    "modal": {
+      "confirmButton": "Да, удалить",
+      "secondConfirmMessage": "Это действие является постоянным и не может быть отменено.",
+      "thirdConfirmMessage": "Вы уверены, что хотите продолжить?"
+    },
+    "selected": "Выбрано",
+    "tooltip": "Удалить выбранные соединения"
+  },
+  "formActions": {
+    "save": "Сохранить"
+  },
+  "jobs": {
+    "columns": {
+      "executorClass": "Класс исполнителя",
+      "hostname": "Имя хоста",
+      "id": "ID",
+      "jobType": "Тип задания",
+      "latestHeartbeat": "Последний heartbeat",
+      "unixname": "Unix имя"
+    },
+    "filters": {
+      "allStates": "Все состояния",
+      "allTypes": "Все типы",
+      "dagProcessorJob": "DagProcessorJob",
+      "schedulerJob": "SchedulerJob",
+      "triggererJob": "TriggererJob"
+    }
+  },
+  "plugins": {
+    "columns": {
+      "source": "Источник"
+    },
+    "importError_one": "Ошибка импорта плагина",
+    "importError_other": "Ошибки импорта плагинов",
+    "searchPlaceholder": "Поиск по файлу"
+  },
+  "pools": {
+    "add": "Добавить пул",
+    "deferredSlotsIncluded": "Включены отложенные слоты",
+    "delete": {
+      "title": "Удалить пул",
+      "warning": "Это удалит все метаданные, связанные с пулом, и может повлиять на задачи, использующие этот пул."
+    },
+    "edit": "Редактировать пул",
+    "form": {
+      "checkbox": "Убедитесь, что отложенные задачи включены в расчет открытых слотов пула",
+      "description": "Описание",
+      "includeDeferred": "Включить отложенные",
+      "nameMaxLength": "Имя может содержать максимум 256 символов",
+      "nameRequired": "Имя обязательно",
+      "slots": "Слоты"
+    },
+    "noPoolsFound": "Пулы не найдены",
+    "pool_one": "Пул",
+    "pool_other": "Пулы",
+    "searchPlaceholder": "Поиск пулов",
+    "sort": {
+      "asc": "Имя (A-Z)",
+      "desc": "Имя (Z-A)",
+      "placeholder": "Сортировать по"
+    }
+  },
+  "providers": {
+    "columns": {
+      "packageName": "Название пакета",
+      "version": "Версия"
+    }
+  },
+  "variables": {
+    "add": "Добавить переменную",
+    "columns": {
+      "isEncrypted": "Зашифрована ли"
+    },
+    "delete": {
+      "deleteVariable_one": "Удалить 1 переменную",
+      "deleteVariable_other": "Удалить {{count}} переменных",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующую переменную:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие переменные:",
+      "title": "Удалить переменную",
+      "tooltip": "Удалить выбранные переменные"
+    },
+    "edit": "Редактировать переменную",
+    "form": {
+      "invalidJson": "Некорректный JSON",
+      "keyMaxLength": "Ключ может содержать максимум 250 символов",
+      "keyRequired": "Ключ обязателен",
+      "valueRequired": "Значение обязательно"
+    },
+    "import": {
+      "button": "Импортировать",
+      "conflictResolution": "Выберите разрешение конфликта переменной",
+      "errorParsingJsonFile": "Ошибка разбора JSON файла: загрузите JSON файл, содержащий переменные (например, {\"key\": \"value\", ...}).",

Review Comment:
   ```suggestion
         "errorParsingJsonFile": "Ошибка парсинга JSON файла: загрузите JSON файл, содержащий переменные (например, {\"key\": \"value\", ...}).",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,362 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "ДАГ",
+  "dag_other": "ДАГи",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска ДАГа",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация ДАГа",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",

Review Comment:
   ```suggestion
       "lastParseDuration": "Длительность последнего парсинга",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/admin.json:
##########
@@ -0,0 +1,189 @@
+{
+  "columns": {
+    "description": "Описание",
+    "key": "Ключ",
+    "name": "Имя",
+    "team": "Команда",
+    "value": "Значение"
+  },
+  "config": {
+    "columns": {
+      "section": "Раздел"
+    },
+    "title": "Конфигурация Airflow"
+  },
+  "connections": {
+    "add": "Добавить соединение",
+    "columns": {
+      "connectionId": "ID соединения",
+      "connectionType": "Тип соединения",
+      "host": "Хост",
+      "port": "Порт"
+    },
+    "connection_one": "Соединение",
+    "connection_other": "Соединений",
+    "delete": {
+      "deleteConnection_few": "Удалить {{count}} соединения",
+      "deleteConnection_one": "Удалить 1 соединение",
+      "deleteConnection_other": "Удалить {{count}} соединений",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующее соединение:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие соединения:",
+      "title": "Удалить соединение"
+    },
+    "edit": "Редактировать соединение",
+    "form": {
+      "connectionIdRequired": "ID соединения обязателен",
+      "connectionIdRequirement": "ID соединения не может состоять только из пробелов",
+      "connectionTypeRequired": "Тип соединения обязателен",
+      "extraFields": "Дополнительные поля",
+      "extraFieldsJson": "Дополнительные поля JSON",
+      "helperText": "Отсутствует тип соединения? Убедитесь, что вы установили соответствующий пакет Airflow Providers.",
+      "helperTextForRedactedFields": "Скрытые поля ('***') останутся неизменными, если не будут изменены.",
+      "selectConnectionType": "Выбрать тип соединения",
+      "standardFields": "Стандартные поля"
+    },
+    "nothingFound": {
+      "description": "Соединения, определенные через переменные окружения или менеджеры секретов, здесь не перечислены.",
+      "documentationLink": "Узнайте больше в документации Airflow.",
+      "learnMore": "Эти соединения обрабатываются во время выполнения и не видны в интерфейсе.",
+      "title": "Соединение не найдено!"
+    },
+    "searchPlaceholder": "Поиск соединений",
+    "test": "Тестировать соединение",
+    "testDisabled": "Функция тестирования соединения отключена. Пожалуйста, свяжитесь с администратором, чтобы включить ее.",
+    "testError": {
+      "title": "Ошибка тестирования соединения"
+    },
+    "testSuccess": {
+      "title": "Тестирование соединения успешно"
+    },
+    "typeMeta": {
+      "error": "Не удалось получить метаданные типа соединения",
+      "standardFields": {
+        "description": "Описание",
+        "host": "Хост",
+        "login": "Логин",
+        "password": "Пароль",
+        "port": "Порт",
+        "url_schema": "Схема"
+      }
+    }
+  },
+  "deleteActions": {
+    "button": "Удалить",
+    "modal": {
+      "confirmButton": "Да, удалить",
+      "secondConfirmMessage": "Это действие является постоянным и не может быть отменено.",
+      "thirdConfirmMessage": "Вы уверены, что хотите продолжить?"
+    },
+    "selected": "Выбрано",
+    "tooltip": "Удалить выбранные соединения"
+  },
+  "formActions": {
+    "save": "Сохранить"
+  },
+  "jobs": {
+    "columns": {
+      "executorClass": "Класс исполнителя",
+      "hostname": "Имя хоста",
+      "id": "ID",
+      "jobType": "Тип задания",
+      "latestHeartbeat": "Последний heartbeat",
+      "unixname": "Unix имя"
+    },
+    "filters": {
+      "allStates": "Все состояния",
+      "allTypes": "Все типы",
+      "dagProcessorJob": "DagProcessorJob",
+      "schedulerJob": "SchedulerJob",

Review Comment:
   ```suggestion
         "schedulerJob": "Задание планировщика",
   ```



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/admin.json:
##########
@@ -0,0 +1,189 @@
+{
+  "columns": {
+    "description": "Описание",
+    "key": "Ключ",
+    "name": "Имя",
+    "team": "Команда",
+    "value": "Значение"
+  },
+  "config": {
+    "columns": {
+      "section": "Раздел"
+    },
+    "title": "Конфигурация Airflow"
+  },
+  "connections": {
+    "add": "Добавить соединение",
+    "columns": {
+      "connectionId": "ID соединения",
+      "connectionType": "Тип соединения",
+      "host": "Хост",
+      "port": "Порт"
+    },
+    "connection_one": "Соединение",
+    "connection_other": "Соединений",
+    "delete": {
+      "deleteConnection_few": "Удалить {{count}} соединения",
+      "deleteConnection_one": "Удалить 1 соединение",
+      "deleteConnection_other": "Удалить {{count}} соединений",
+      "firstConfirmMessage_one": "Вы собираетесь удалить следующее соединение:",
+      "firstConfirmMessage_other": "Вы собираетесь удалить следующие соединения:",
+      "title": "Удалить соединение"
+    },
+    "edit": "Редактировать соединение",
+    "form": {
+      "connectionIdRequired": "ID соединения обязателен",
+      "connectionIdRequirement": "ID соединения не может состоять только из пробелов",
+      "connectionTypeRequired": "Тип соединения обязателен",
+      "extraFields": "Дополнительные поля",
+      "extraFieldsJson": "Дополнительные поля JSON",
+      "helperText": "Отсутствует тип соединения? Убедитесь, что вы установили соответствующий пакет Airflow Providers.",
+      "helperTextForRedactedFields": "Скрытые поля ('***') останутся неизменными, если не будут изменены.",
+      "selectConnectionType": "Выбрать тип соединения",
+      "standardFields": "Стандартные поля"
+    },
+    "nothingFound": {
+      "description": "Соединения, определенные через переменные окружения или менеджеры секретов, здесь не перечислены.",
+      "documentationLink": "Узнайте больше в документации Airflow.",
+      "learnMore": "Эти соединения обрабатываются во время выполнения и не видны в интерфейсе.",
+      "title": "Соединение не найдено!"
+    },
+    "searchPlaceholder": "Поиск соединений",
+    "test": "Тестировать соединение",
+    "testDisabled": "Функция тестирования соединения отключена. Пожалуйста, свяжитесь с администратором, чтобы включить ее.",
+    "testError": {
+      "title": "Ошибка тестирования соединения"
+    },
+    "testSuccess": {
+      "title": "Тестирование соединения успешно"
+    },
+    "typeMeta": {
+      "error": "Не удалось получить метаданные типа соединения",
+      "standardFields": {
+        "description": "Описание",
+        "host": "Хост",
+        "login": "Логин",
+        "password": "Пароль",
+        "port": "Порт",
+        "url_schema": "Схема"
+      }
+    }
+  },
+  "deleteActions": {
+    "button": "Удалить",
+    "modal": {
+      "confirmButton": "Да, удалить",
+      "secondConfirmMessage": "Это действие является постоянным и не может быть отменено.",
+      "thirdConfirmMessage": "Вы уверены, что хотите продолжить?"
+    },
+    "selected": "Выбрано",
+    "tooltip": "Удалить выбранные соединения"
+  },
+  "formActions": {
+    "save": "Сохранить"
+  },
+  "jobs": {
+    "columns": {
+      "executorClass": "Класс исполнителя",
+      "hostname": "Имя хоста",
+      "id": "ID",
+      "jobType": "Тип задания",
+      "latestHeartbeat": "Последний heartbeat",
+      "unixname": "Unix имя"
+    },
+    "filters": {
+      "allStates": "Все состояния",
+      "allTypes": "Все типы",
+      "dagProcessorJob": "DagProcessorJob",
+      "schedulerJob": "SchedulerJob",
+      "triggererJob": "TriggererJob"
+    }
+  },
+  "plugins": {
+    "columns": {
+      "source": "Источник"
+    },
+    "importError_one": "Ошибка импорта плагина",
+    "importError_other": "Ошибки импорта плагинов",
+    "searchPlaceholder": "Поиск по файлу"
+  },
+  "pools": {
+    "add": "Добавить пул",
+    "deferredSlotsIncluded": "Включены отложенные слоты",
+    "delete": {
+      "title": "Удалить пул",
+      "warning": "Это удалит все метаданные, связанные с пулом, и может повлиять на задачи, использующие этот пул."
+    },
+    "edit": "Редактировать пул",
+    "form": {
+      "checkbox": "Убедитесь, что отложенные задачи включены в расчет открытых слотов пула",
+      "description": "Описание",
+      "includeDeferred": "Включить отложенные",
+      "nameMaxLength": "Имя может содержать максимум 256 символов",
+      "nameRequired": "Имя обязательно",
+      "slots": "Слоты"
+    },
+    "noPoolsFound": "Пулы не найдены",
+    "pool_one": "Пул",
+    "pool_other": "Пулы",
+    "searchPlaceholder": "Поиск пулов",
+    "sort": {
+      "asc": "Имя (A-Z)",
+      "desc": "Имя (Z-A)",
+      "placeholder": "Сортировать по"
+    }
+  },
+  "providers": {
+    "columns": {
+      "packageName": "Название пакета",
+      "version": "Версия"
+    }
+  },
+  "variables": {
+    "add": "Добавить переменную",
+    "columns": {
+      "isEncrypted": "Зашифрована ли"

Review Comment:
   ```suggestion
         "isEncrypted": "Зашифровано"
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928130828


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dashboard.json:
##########
@@ -0,0 +1,47 @@
+{
+  "favorite": {
+    "favoriteDags_one": "Первый {{count}} избранный Даг",
+    "favoriteDags_few": "Первые {{count}} избранных Дага",
+    "favoriteDags_other": "Первые {{count}} избранных Дагов",
+    "noDagRuns": "Для этого дага еще нет запусков.",
+    "noFavoriteDags": "Ещё нет избранных. Нажмите на иконку со звёздочкой рядом с Дагом в списке, чтобы добавить его в избранное."
+  },
+  "group": "Группа",
+  "health": {
+    "dagProcessor": "Процессор Дага",
+    "health": "Здоровье",

Review Comment:
   ```suggestion
       "health": "Состояние",
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "puzzle-rpa-team (via GitHub)" <gi...@apache.org>.
puzzle-rpa-team commented on PR #63450:
URL: https://github.com/apache/airflow/pull/63450#issuecomment-4053197024

   > Overall, great work on the translation! I’ve left a few suggestions, though feel free to keep your original versions if they fit better.
   
   Thank you for the kind words and translation suggestions! I've committed all of them since they do actually sound better and are more consistent than mine.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928085422


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dashboard.json:
##########
@@ -0,0 +1,47 @@
+{
+  "favorite": {
+    "favoriteDags_one": "Первый {{count}} избранный Даг",
+    "favoriteDags_few": "Первые {{count}} избранных Дага",
+    "favoriteDags_other": "Первые {{count}} избранных Дагов",
+    "noDagRuns": "Для этого дага еще нет запусков.",
+    "noFavoriteDags": "Ещё нет избранных. Нажмите на иконку со звёздочкой рядом с Дагом в списке, чтобы добавить его в избранное."
+  },
+  "group": "Группа",
+  "health": {
+    "dagProcessor": "Процессор Дага",
+    "health": "Здоровье",
+    "healthy": "Здоровый",
+    "lastHeartbeat": "Последний hearbeat-сигнал",
+    "metaDatabase": "Метабаза данных",
+    "scheduler": "Планировщик",
+    "status": "Статус",
+    "triggerer": "Триггер",
+    "unhealthy": "Нездоровый"
+  },
+  "history": "История",
+  "importErrors": {
+    "dagImportError_one": "Ошибка импорта Дагов",
+    "dagImportError_other": "Ошибки импорта Дагов",
+    "searchByFile": "Поиск по файлу",
+    "timestamp": "Временная метка"
+  },
+  "managePools": "Управление пулами",
+  "noAssetEvents": "Нет найденных событий активов.",
+  "poolSlots": "Слоты пула",
+  "sortBy": {
+    "newestFirst": "Сначала новые",
+    "oldestFirst": "Сначала старые",
+    "placeholder": "Сортировать по"
+  },
+  "source": "Источник",
+  "stats": {
+    "activeDags": "Активные Даги",
+    "failedDags": "Неудавшиеся Даги",

Review Comment:
   ```suggestion
       "failedDags": "Даги с ошибками",
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "puzzle-rpa-team (via GitHub)" <gi...@apache.org>.
puzzle-rpa-team commented on PR #63450:
URL: https://github.com/apache/airflow/pull/63450#issuecomment-4047547780

   I'm willing to become a translation owner if there isn't somebody already working on a Russian translation, but to my knowledge no one left a PR similar to mine, or started a Slack discussion on the topic. I guess I'll just ask on Slack?
   It's my first contribution so I don't know anyone in the community (I'll update the CODEOWNERS file as per section 6.1 of `public/i18n/README.md` once I know more)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928165242


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,358 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "Даг",
+  "dag_other": "Даги",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска Дага",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация Дага",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",
+    "latestDagVersion": "Последняя версия Дага",
+    "latestRun": "Последний запуск",
+    "maxActiveRuns": "Максимум активных запусков",
+    "maxActiveTasks": "Максимум активных задач",
+    "maxConsecutiveFailedDagRuns": "Максимум последовательных неудачных запусков Дага",
+    "nextRun": "Следующий запуск",
+    "owner": "Владелец",
+    "params": "Параметры",
+    "schedule": "Расписание",
+    "tags": "Теги"
+  },
+  "dagId": "ID Дага",
+  "dagRun": {
+    "conf": "Конфигурация",
+    "dagVersions": "Версии Дага",
+    "dataIntervalEnd": "Конец временного интервала",
+    "dataIntervalStart": "Начало временного интервала",
+    "lastSchedulingDecision": "Последнее решение о расписании",
+    "mappedPartitionKey": "Ключ распределенной части",
+    "partitionKey": "Ключ части",
+    "queuedAt": "В очереди в",
+    "runAfter": "Запустить после",
+    "runType": "Тип запуска",
+    "sourceAssetEvent": "Источник события актива",
+    "triggeredBy": "Запущено",
+    "triggeringUser": "Запускающий пользователь"
+  },
+  "dagRun_one": "Запуск Дага",
+  "dagRun_other": "Запусков Дага",
+  "dagRunId": "ID запуска Дага",
+  "dagWarnings": "Предупреждения/ошибки Дага",
+  "defaultToGraphView": "По умолчанию отображать график",
+  "defaultToGridView": "По умолчанию отображать в сетке",
+  "delete": "Удалить",
+  "diff": "Разница",
+  "diffCompareWith": "Сравнить с",
+  "diffExit": "Выйти из разницы",
+  "diffSelectVersionToCompare": "Выбрать версию для сравнения",
+  "direction": "Направление",
+  "docs": {
+    "documentation": "Документация",
+    "githubRepo": "GitHub Репозиторий",
+    "restApiReference": "REST API Справочник"
+  },
+  "download": {
+    "download": "Скачать",
+    "hotkey": "d",
+    "tooltip": "Нажмите {{hotkey}}, чтобы скачать журналы"
+  },
+  "duration": "Длительность",
+  "edit": "Редактировать",
+  "endDate": "Дата окончания",
+  "error": {
+    "back": "Назад",
+    "defaultMessage": "Произошла неожиданная ошибка",
+    "home": "Главная",
+    "invalidUrl": "Страница не найдена. Пожалуйста, проверьте URL и попробуйте снова.",
+    "notFound": "Страница не найдена",
+    "title": "Ошибка"
+  },
+  "expand": {
+    "collapse": "Свернуть",
+    "expand": "Развернуть",
+    "hotkey": "e",
+    "tooltip": "Нажмите {{hotkey}}, чтобы переключить развертывание"
+  },
+  "expandAllExtra": "Развернуть все дополнительные JSON",
+  "expression": {
+    "all": "Все",
+    "and": "И",
+    "any": "Любой",
+    "or": "ИЛИ"
+  },
+  "filter": "Фильтр",
+  "filters": {
+    "durationFrom": "Продолжительность с",
+    "durationTo": "Продолжительность до",
+    "endTime": "Время окончания",
+    "logicalDateFrom": "Логическая дата с",
+    "logicalDateTo": "Логическая дата до",
+    "runAfterFrom": "Запустить после с",
+    "runAfterTo": "Запустить после до",
+    "selectDateRange": "Выбрать диапазон дат",
+    "startTime": "Время начала"
+  },
+  "generateToken": "Сгенерировать токен",
+  "logicalDate": "Логическая дата",
+  "logout": "Выйти",
+  "logoutConfirmation": "Вы собираетесь выйти из приложения.",
+  "mapIndex": "Индекс карты",
+  "modal": {
+    "add": "Добавить",
+    "cancel": "Отменить",
+    "confirm": "Подтвердить",
+    "delete": {
+      "button": "Удалить",
+      "confirmation": "Вы уверены, что хотите удалить {{resourceName}}? Это действие нельзя будет отменить."
+    },
+    "save": "Сохранить"
+  },
+  "nav": {
+    "admin": "Администратор",
+    "assets": "Активы",
+    "browse": "Просмотр",
+    "dags": "Даги",
+    "docs": "Документы",
+    "home": "Главная",
+    "legacyFabViews": "Устаревшие виды",
+    "plugins": "Плагины",
+    "security": "Безопасность"
+  },
+  "noItemsFound": "Не найдено {{modelName}}",
+  "note": {
+    "add": "Добавить заметку",
+    "dagRun": "Заметка запуска Дага",
+    "label": "Заметка",
+    "placeholder": "Добавьте заметку...",
+    "taskInstance": "Заметка экземпляра задачи"
+  },
+  "partitionedDagRun_one": "Разделенный запуск Дага",
+  "partitionedDagRun_other": "Разделенных запусков Дага",
+  "partitionedDagRunDetail": {
+    "receivedAssetEvents": "Полученные события актива"
+  },
+  "pendingDagRun_one": "{{count}} Даг ожидает запуска",
+  "pendingDagRun_few": "{{count}} Дага ожидают запуска",
+  "pendingDagRun_other": "{{count}} Дагов ожидают запуска",
+  "reset": "Сбросить",
+  "runId": "ID запуска",
+  "runTypes": {
+    "asset_triggered": "Запущено активом",
+    "backfill": "Заполнение",
+    "manual": "Вручную",
+    "scheduled": "Запланировано"
+  },
+  "scroll": {
+    "direction": {
+      "bottom": "вниз",
+      "top": "вверх"
+    },
+    "tooltip": "Нажмите {{hotkey}}, чтобы прокрутить {{direction}}"
+  },
+  "security": {
+    "actions": "Действия",
+    "permissions": "Разрешения",
+    "resources": "Ресурсы",
+    "roles": "Роли",
+    "users": "Пользователи"
+  },
+  "selectLanguage": "Выбор языка",
+  "showDetailsPanel": "Показать панель деталей",
+  "signedInAs": "Вошли как",
+  "source": {
+    "hide": "Скрыть источник",
+    "hotkey": "s",
+    "show": "Показать источник"
+  },
+  "sourceAssetEvent_one": "Событие источника актива",
+  "sourceAssetEvent_other": "Событий источника актива",
+  "startDate": "Дата начала",
+  "state": "Состояние",
+  "states": {
+    "deferred": "Отложен",
+    "failed": "Не удался",
+    "no_status": "Нет статуса",
+    "none": "Нет статуса",
+    "open": "Открыт",
+    "planned": "Запланирован",
+    "queued": "В очереди",
+    "removed": "Удален",
+    "restarting": "Перезапуск",
+    "running": "Запущен",

Review Comment:
   ```suggestion
       "running": "Выполняется",
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928133051


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dashboard.json:
##########
@@ -0,0 +1,47 @@
+{
+  "favorite": {
+    "favoriteDags_one": "Первый {{count}} избранный Даг",
+    "favoriteDags_few": "Первые {{count}} избранных Дага",
+    "favoriteDags_other": "Первые {{count}} избранных Дагов",
+    "noDagRuns": "Для этого дага еще нет запусков.",
+    "noFavoriteDags": "Ещё нет избранных. Нажмите на иконку со звёздочкой рядом с Дагом в списке, чтобы добавить его в избранное."
+  },
+  "group": "Группа",
+  "health": {
+    "dagProcessor": "Процессор Дага",
+    "health": "Здоровье",
+    "healthy": "Здоровый",

Review Comment:
   ```suggestion
       "healthy": "Исправный",
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928240828


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dashboard.json:
##########
@@ -0,0 +1,47 @@
+{
+  "favorite": {
+    "favoriteDags_one": "Первый {{count}} избранный Даг",
+    "favoriteDags_few": "Первые {{count}} избранных Дага",
+    "favoriteDags_other": "Первые {{count}} избранных Дагов",
+    "noDagRuns": "Для этого дага еще нет запусков.",
+    "noFavoriteDags": "Ещё нет избранных. Нажмите на иконку со звёздочкой рядом с Дагом в списке, чтобы добавить его в избранное."
+  },
+  "group": "Группа",
+  "health": {
+    "dagProcessor": "Процессор Дага",
+    "health": "Здоровье",
+    "healthy": "Здоровый",
+    "lastHeartbeat": "Последний hearbeat-сигнал",
+    "metaDatabase": "Метабаза данных",
+    "scheduler": "Планировщик",
+    "status": "Статус",
+    "triggerer": "Триггер",
+    "unhealthy": "Нездоровый"
+  },
+  "history": "История",
+  "importErrors": {
+    "dagImportError_one": "Ошибка импорта Дагов",
+    "dagImportError_other": "Ошибки импорта Дагов",
+    "searchByFile": "Поиск по файлу",
+    "timestamp": "Временная метка"

Review Comment:
   ```suggestion
       "timestamp": "Отметка времени"
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2935945323


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,358 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "Даг",
+  "dag_other": "Даги",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска Дага",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация Дага",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",
+    "latestDagVersion": "Последняя версия Дага",
+    "latestRun": "Последний запуск",
+    "maxActiveRuns": "Максимум активных запусков",
+    "maxActiveTasks": "Максимум активных задач",
+    "maxConsecutiveFailedDagRuns": "Максимум последовательных неудачных запусков Дага",
+    "nextRun": "Следующий запуск",
+    "owner": "Владелец",
+    "params": "Параметры",
+    "schedule": "Расписание",
+    "tags": "Теги"
+  },
+  "dagId": "ID Дага",
+  "dagRun": {
+    "conf": "Конфигурация",
+    "dagVersions": "Версии Дага",
+    "dataIntervalEnd": "Конец временного интервала",
+    "dataIntervalStart": "Начало временного интервала",
+    "lastSchedulingDecision": "Последнее решение о расписании",
+    "mappedPartitionKey": "Ключ распределенной части",
+    "partitionKey": "Ключ части",
+    "queuedAt": "В очереди в",
+    "runAfter": "Запустить после",
+    "runType": "Тип запуска",
+    "sourceAssetEvent": "Источник события актива",
+    "triggeredBy": "Инициировано",
+    "triggeringUser": "Инициатор запуска"
+  },
+  "dagRun_one": "Запуск Дага",

Review Comment:
   adding dagRun_zero fixed "key 'dagRun (ru)' returned an object instead of string." error for me



##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,358 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "Даг",
+  "dag_other": "Даги",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска Дага",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация Дага",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",
+    "latestDagVersion": "Последняя версия Дага",
+    "latestRun": "Последний запуск",
+    "maxActiveRuns": "Максимум активных запусков",
+    "maxActiveTasks": "Максимум активных задач",
+    "maxConsecutiveFailedDagRuns": "Максимум последовательных неудачных запусков Дага",
+    "nextRun": "Следующий запуск",
+    "owner": "Владелец",
+    "params": "Параметры",
+    "schedule": "Расписание",
+    "tags": "Теги"
+  },
+  "dagId": "ID Дага",
+  "dagRun": {
+    "conf": "Конфигурация",
+    "dagVersions": "Версии Дага",
+    "dataIntervalEnd": "Конец временного интервала",
+    "dataIntervalStart": "Начало временного интервала",
+    "lastSchedulingDecision": "Последнее решение о расписании",
+    "mappedPartitionKey": "Ключ распределенной части",
+    "partitionKey": "Ключ части",
+    "queuedAt": "В очереди в",
+    "runAfter": "Запустить после",
+    "runType": "Тип запуска",
+    "sourceAssetEvent": "Источник события актива",
+    "triggeredBy": "Инициировано",
+    "triggeringUser": "Инициатор запуска"
+  },
+  "dagRun_one": "Запуск Дага",
+  "dagRun_other": "Запусков Дага",
+  "dagRunId": "ID запуска Дага",
+  "dagWarnings": "Предупреждения/ошибки Дага",
+  "defaultToGraphView": "По умолчанию отображать график",
+  "defaultToGridView": "По умолчанию отображать в сетке",
+  "delete": "Удалить",
+  "diff": "Разница",
+  "diffCompareWith": "Сравнить с",
+  "diffExit": "Выйти из просмотра различий",
+  "diffSelectVersionToCompare": "Выбрать версию для сравнения",
+  "direction": "Направление",
+  "docs": {
+    "documentation": "Документация",
+    "githubRepo": "GitHub Репозиторий",
+    "restApiReference": "REST API Справочник"
+  },
+  "download": {
+    "download": "Скачать",
+    "hotkey": "d",
+    "tooltip": "Нажмите {{hotkey}}, чтобы скачать журналы"
+  },
+  "duration": "Длительность",
+  "edit": "Редактировать",
+  "endDate": "Дата окончания",
+  "error": {
+    "back": "Назад",
+    "defaultMessage": "Произошла непредвиденная ошибка",
+    "home": "Главная",
+    "invalidUrl": "Страница не найдена. Пожалуйста, проверьте URL и попробуйте снова.",
+    "notFound": "Страница не найдена",
+    "title": "Ошибка"
+  },
+  "expand": {
+    "collapse": "Свернуть",
+    "expand": "Развернуть",
+    "hotkey": "e",
+    "tooltip": "Нажмите {{hotkey}}, чтобы переключить развертывание"
+  },
+  "expandAllExtra": "Развернуть все дополнительные JSON",
+  "expression": {
+    "all": "Все",
+    "and": "И",
+    "any": "Любой",
+    "or": "ИЛИ"
+  },
+  "filter": "Фильтр",
+  "filters": {
+    "durationFrom": "Продолжительность с",
+    "durationTo": "Продолжительность до",
+    "endTime": "Время окончания",
+    "logicalDateFrom": "Логическая дата с",
+    "logicalDateTo": "Логическая дата до",
+    "runAfterFrom": "Запустить после с",
+    "runAfterTo": "Запустить после до",
+    "selectDateRange": "Выбрать диапазон дат",
+    "startTime": "Время начала"
+  },
+  "generateToken": "Сгенерировать токен",
+  "logicalDate": "Логическая дата",
+  "logout": "Выйти",
+  "logoutConfirmation": "Вы собираетесь выйти из приложения.",
+  "mapIndex": "Индекс карты",
+  "modal": {
+    "add": "Добавить",
+    "cancel": "Отменить",
+    "confirm": "Подтвердить",
+    "delete": {
+      "button": "Удалить",
+      "confirmation": "Вы уверены, что хотите удалить {{resourceName}}? Это действие нельзя будет отменить."
+    },
+    "save": "Сохранить"
+  },
+  "nav": {
+    "admin": "Администратор",
+    "assets": "Активы",
+    "browse": "Просмотр",
+    "dags": "Даги",
+    "docs": "Документы",
+    "home": "Главная",
+    "legacyFabViews": "Устаревшие виды",
+    "plugins": "Плагины",
+    "security": "Безопасность"
+  },
+  "noItemsFound": "Не найдено {{modelName}}",
+  "note": {
+    "add": "Добавить заметку",
+    "dagRun": "Заметка запуска Дага",
+    "label": "Заметка",
+    "placeholder": "Добавьте заметку...",
+    "taskInstance": "Заметка экземпляра задачи"
+  },
+  "partitionedDagRun_one": "Разделенный запуск Дага",
+  "partitionedDagRun_other": "Разделенных запусков Дага",
+  "partitionedDagRunDetail": {
+    "receivedAssetEvents": "Полученные события актива"
+  },
+  "pendingDagRun_few": "{{count}} Дага ожидают запуска",
+  "pendingDagRun_one": "{{count}} Даг ожидает запуска",
+  "pendingDagRun_other": "{{count}} Дагов ожидают запуска",
+  "reset": "Сбросить",
+  "runId": "ID запуска",
+  "runTypes": {
+    "asset_triggered": "Запущено активом",
+    "backfill": "Заполнение",
+    "manual": "Вручную",
+    "scheduled": "Запланировано"
+  },
+  "scroll": {
+    "direction": {
+      "bottom": "вниз",
+      "top": "вверх"
+    },
+    "tooltip": "Нажмите {{hotkey}}, чтобы прокрутить {{direction}}"
+  },
+  "security": {
+    "actions": "Действия",
+    "permissions": "Разрешения",
+    "resources": "Ресурсы",
+    "roles": "Роли",
+    "users": "Пользователи"
+  },
+  "selectLanguage": "Выбор языка",
+  "showDetailsPanel": "Показать панель деталей",
+  "signedInAs": "Вошли как",
+  "source": {
+    "hide": "Скрыть источник",
+    "hotkey": "s",
+    "show": "Показать источник"
+  },
+  "sourceAssetEvent_one": "Событие источника актива",
+  "sourceAssetEvent_other": "Событий источника актива",
+  "startDate": "Дата начала",
+  "state": "Состояние",
+  "states": {
+    "deferred": "Отложен",
+    "failed": "Ошибка",
+    "no_status": "Нет статуса",
+    "none": "Нет статуса",
+    "open": "Открыт",
+    "planned": "Запланирован",
+    "queued": "В очереди",
+    "removed": "Удален",
+    "restarting": "Перезапуск",
+    "running": "Выполняется",
+    "scheduled": "Запланирован",
+    "skipped": "Пропущен",
+    "success": "Успех",
+    "up_for_reschedule": "Готов к переназначению",
+    "up_for_retry": "Готов к повтору",
+    "upstream_failed": "Ошибка в upstream"
+  },
+  "table": {
+    "completedAt": "Завершен в",
+    "createdAt": "Создан в",
+    "filterByTag": "Фильтровать Даги по тегу",
+    "filterColumns": "Фильтровать столбцы таблицы",
+    "filterReset_one": "Сбросить фильтр",
+    "filterReset_other": "Сбросить фильтры",
+    "from": "От",
+    "maxActiveRuns": "Максимум активных запусков",
+    "noTagsFound": "Теги не найдены",
+    "tagMode": {
+      "all": "Все",
+      "any": "Любой"
+    },
+    "tagPlaceholder": "Фильтр по тегу",
+    "to": "До"
+  },
+  "task": {
+    "documentation": "Документация задачи",
+    "lastInstance": "Последний экземпляр",
+    "operator": "Оператор",
+    "triggerRule": "Правило запуска"
+  },
+  "task_one": "Задача",
+  "task_other": "Задач",
+  "taskGroup": "Группа задач",
+  "taskId": "ID задачи",
+  "taskInstance": {
+    "dagVersion": "Версия Дага",
+    "executor": "Исполнитель",
+    "executorConfig": "Конфигурация исполнителя",
+    "hostname": "Имя хоста",
+    "maxTries": "Максимум попыток",
+    "pid": "PID",
+    "pool": "Пул",
+    "poolSlots": "Слоты пула",
+    "priorityWeight": "Приоритетный вес",
+    "queue": "Очередь",
+    "queuedWhen": "В очереди в",
+    "scheduledWhen": "Запланировано в",
+    "triggerer": {
+      "assigned": "Назначенный триггер",
+      "class": "Класс триггера",
+      "createdAt": "Время создания триггера",
+      "id": "ID триггера",
+      "latestHeartbeat": "Последний heartbeat триггера",
+      "title": "Информация о триггере"
+    },
+    "unixname": "Unix имя"
+  },
+  "taskInstance_one": "Экземпляр задачи",

Review Comment:
   adding taskInstance_zero fixed "key 'taskInstance (ru)' returned an object instead of string." error for me



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "jscheffl (via GitHub)" <gi...@apache.org>.
jscheffl commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2933272663


##########
.github/CODEOWNERS:
##########
@@ -53,6 +53,7 @@ airflow-core/src/airflow/ui/public/i18n/locales/ko/ @choo121600 # + @kgw7401 @on
 airflow-core/src/airflow/ui/public/i18n/locales/nl/ @BasPH # + @DjVinnii
 airflow-core/src/airflow/ui/public/i18n/locales/pl/ @potiuk @mobuchowski # + @kacpermuda
 airflow-core/src/airflow/ui/public/i18n/locales/pt/ @potiuk  # + @aoelvp94 @victoru2
+airflow-core/src/airflow/ui/public/i18n/locales/ru/ @jscheffl @puzzle-rpa-team  # + @renat-sagut

Review Comment:
   Unfortunately Github does only allow contributors with write access in the CODEOWNERS file, else it is not valid. Our workaround is to have all con committer language experts in comments.
   ```suggestion
   airflow-core/src/airflow/ui/public/i18n/locales/ru/ @jscheffl # + @puzzle-rpa-team @renat-sagut
   ```
   
   @renat-sagut would you like to be listed and review in future as well?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "jscheffl (via GitHub)" <gi...@apache.org>.
jscheffl commented on PR #63450:
URL: https://github.com/apache/airflow/pull/63450#issuecomment-4057403663

   Note: CI checks are failing but this looks rather like inherited from problems on main. I assume on next push this will turn green.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "jscheffl (via GitHub)" <gi...@apache.org>.
jscheffl commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2935978839


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,358 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "Даг",
+  "dag_other": "Даги",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска Дага",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация Дага",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",
+    "latestDagVersion": "Последняя версия Дага",
+    "latestRun": "Последний запуск",
+    "maxActiveRuns": "Максимум активных запусков",
+    "maxActiveTasks": "Максимум активных задач",
+    "maxConsecutiveFailedDagRuns": "Максимум последовательных неудачных запусков Дага",
+    "nextRun": "Следующий запуск",
+    "owner": "Владелец",
+    "params": "Параметры",
+    "schedule": "Расписание",
+    "tags": "Теги"
+  },
+  "dagId": "ID Дага",
+  "dagRun": {
+    "conf": "Конфигурация",
+    "dagVersions": "Версии Дага",
+    "dataIntervalEnd": "Конец временного интервала",
+    "dataIntervalStart": "Начало временного интервала",
+    "lastSchedulingDecision": "Последнее решение о расписании",
+    "mappedPartitionKey": "Ключ распределенной части",
+    "partitionKey": "Ключ части",
+    "queuedAt": "В очереди в",
+    "runAfter": "Запустить после",
+    "runType": "Тип запуска",
+    "sourceAssetEvent": "Источник события актива",
+    "triggeredBy": "Инициировано",
+    "triggeringUser": "Инициатор запуска"
+  },
+  "dagRun_one": "Запуск Дага",

Review Comment:
   For me it fixed it via adding `dagRun_few` and `dagRun_many` as config.ts defines this for RU.
   
   Can you suggest the correct translations? Then I can commit it here.
   ```suggestion
     "dagRun_few": "?????",
     "dagRun_many": "?????",
     "dagRun_one": "Запуск Дага",
   ```
   (and same for task instance)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928197367


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,358 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "Даг",
+  "dag_other": "Даги",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска Дага",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация Дага",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",
+    "latestDagVersion": "Последняя версия Дага",
+    "latestRun": "Последний запуск",
+    "maxActiveRuns": "Максимум активных запусков",
+    "maxActiveTasks": "Максимум активных задач",
+    "maxConsecutiveFailedDagRuns": "Максимум последовательных неудачных запусков Дага",
+    "nextRun": "Следующий запуск",
+    "owner": "Владелец",
+    "params": "Параметры",
+    "schedule": "Расписание",
+    "tags": "Теги"
+  },
+  "dagId": "ID Дага",
+  "dagRun": {
+    "conf": "Конфигурация",
+    "dagVersions": "Версии Дага",
+    "dataIntervalEnd": "Конец временного интервала",
+    "dataIntervalStart": "Начало временного интервала",
+    "lastSchedulingDecision": "Последнее решение о расписании",
+    "mappedPartitionKey": "Ключ распределенной части",
+    "partitionKey": "Ключ части",
+    "queuedAt": "В очереди в",
+    "runAfter": "Запустить после",
+    "runType": "Тип запуска",
+    "sourceAssetEvent": "Источник события актива",
+    "triggeredBy": "Запущено",
+    "triggeringUser": "Запускающий пользователь"
+  },
+  "dagRun_one": "Запуск Дага",
+  "dagRun_other": "Запусков Дага",
+  "dagRunId": "ID запуска Дага",
+  "dagWarnings": "Предупреждения/ошибки Дага",
+  "defaultToGraphView": "По умолчанию отображать график",
+  "defaultToGridView": "По умолчанию отображать в сетке",
+  "delete": "Удалить",
+  "diff": "Разница",
+  "diffCompareWith": "Сравнить с",
+  "diffExit": "Выйти из разницы",
+  "diffSelectVersionToCompare": "Выбрать версию для сравнения",
+  "direction": "Направление",
+  "docs": {
+    "documentation": "Документация",
+    "githubRepo": "GitHub Репозиторий",
+    "restApiReference": "REST API Справочник"
+  },
+  "download": {
+    "download": "Скачать",
+    "hotkey": "d",
+    "tooltip": "Нажмите {{hotkey}}, чтобы скачать журналы"
+  },
+  "duration": "Длительность",
+  "edit": "Редактировать",
+  "endDate": "Дата окончания",
+  "error": {
+    "back": "Назад",
+    "defaultMessage": "Произошла неожиданная ошибка",
+    "home": "Главная",
+    "invalidUrl": "Страница не найдена. Пожалуйста, проверьте URL и попробуйте снова.",
+    "notFound": "Страница не найдена",
+    "title": "Ошибка"
+  },
+  "expand": {
+    "collapse": "Свернуть",
+    "expand": "Развернуть",
+    "hotkey": "e",
+    "tooltip": "Нажмите {{hotkey}}, чтобы переключить развертывание"
+  },
+  "expandAllExtra": "Развернуть все дополнительные JSON",
+  "expression": {
+    "all": "Все",
+    "and": "И",
+    "any": "Любой",
+    "or": "ИЛИ"
+  },
+  "filter": "Фильтр",
+  "filters": {
+    "durationFrom": "Продолжительность с",
+    "durationTo": "Продолжительность до",
+    "endTime": "Время окончания",
+    "logicalDateFrom": "Логическая дата с",
+    "logicalDateTo": "Логическая дата до",
+    "runAfterFrom": "Запустить после с",
+    "runAfterTo": "Запустить после до",
+    "selectDateRange": "Выбрать диапазон дат",
+    "startTime": "Время начала"
+  },
+  "generateToken": "Сгенерировать токен",
+  "logicalDate": "Логическая дата",
+  "logout": "Выйти",
+  "logoutConfirmation": "Вы собираетесь выйти из приложения.",
+  "mapIndex": "Индекс карты",
+  "modal": {
+    "add": "Добавить",
+    "cancel": "Отменить",
+    "confirm": "Подтвердить",
+    "delete": {
+      "button": "Удалить",
+      "confirmation": "Вы уверены, что хотите удалить {{resourceName}}? Это действие нельзя будет отменить."
+    },
+    "save": "Сохранить"
+  },
+  "nav": {
+    "admin": "Администратор",
+    "assets": "Активы",
+    "browse": "Просмотр",
+    "dags": "Даги",
+    "docs": "Документы",
+    "home": "Главная",
+    "legacyFabViews": "Устаревшие виды",
+    "plugins": "Плагины",
+    "security": "Безопасность"
+  },
+  "noItemsFound": "Не найдено {{modelName}}",
+  "note": {
+    "add": "Добавить заметку",
+    "dagRun": "Заметка запуска Дага",
+    "label": "Заметка",
+    "placeholder": "Добавьте заметку...",
+    "taskInstance": "Заметка экземпляра задачи"
+  },
+  "partitionedDagRun_one": "Разделенный запуск Дага",
+  "partitionedDagRun_other": "Разделенных запусков Дага",
+  "partitionedDagRunDetail": {
+    "receivedAssetEvents": "Полученные события актива"
+  },
+  "pendingDagRun_one": "{{count}} Даг ожидает запуска",
+  "pendingDagRun_few": "{{count}} Дага ожидают запуска",
+  "pendingDagRun_other": "{{count}} Дагов ожидают запуска",
+  "reset": "Сбросить",
+  "runId": "ID запуска",
+  "runTypes": {
+    "asset_triggered": "Запущено активом",
+    "backfill": "Заполнение",
+    "manual": "Вручную",
+    "scheduled": "Запланировано"
+  },
+  "scroll": {
+    "direction": {
+      "bottom": "вниз",
+      "top": "вверх"
+    },
+    "tooltip": "Нажмите {{hotkey}}, чтобы прокрутить {{direction}}"
+  },
+  "security": {
+    "actions": "Действия",
+    "permissions": "Разрешения",
+    "resources": "Ресурсы",
+    "roles": "Роли",
+    "users": "Пользователи"
+  },
+  "selectLanguage": "Выбор языка",
+  "showDetailsPanel": "Показать панель деталей",
+  "signedInAs": "Вошли как",
+  "source": {
+    "hide": "Скрыть источник",
+    "hotkey": "s",
+    "show": "Показать источник"
+  },
+  "sourceAssetEvent_one": "Событие источника актива",
+  "sourceAssetEvent_other": "Событий источника актива",
+  "startDate": "Дата начала",
+  "state": "Состояние",
+  "states": {
+    "deferred": "Отложен",
+    "failed": "Не удался",
+    "no_status": "Нет статуса",
+    "none": "Нет статуса",
+    "open": "Открыт",
+    "planned": "Запланирован",
+    "queued": "В очереди",
+    "removed": "Удален",
+    "restarting": "Перезапуск",
+    "running": "Запущен",
+    "scheduled": "Запланирован",
+    "skipped": "Пропущен",
+    "success": "Успех",
+    "up_for_reschedule": "Готов к переназначению",
+    "up_for_retry": "Готов к повтору",
+    "upstream_failed": "Неудача на upstream"

Review Comment:
   ```suggestion
       "upstream_failed": "Ошибка в upstream"
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928154316


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,358 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "Даг",
+  "dag_other": "Даги",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска Дага",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация Дага",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",
+    "latestDagVersion": "Последняя версия Дага",
+    "latestRun": "Последний запуск",
+    "maxActiveRuns": "Максимум активных запусков",
+    "maxActiveTasks": "Максимум активных задач",
+    "maxConsecutiveFailedDagRuns": "Максимум последовательных неудачных запусков Дага",
+    "nextRun": "Следующий запуск",
+    "owner": "Владелец",
+    "params": "Параметры",
+    "schedule": "Расписание",
+    "tags": "Теги"
+  },
+  "dagId": "ID Дага",
+  "dagRun": {
+    "conf": "Конфигурация",
+    "dagVersions": "Версии Дага",
+    "dataIntervalEnd": "Конец временного интервала",
+    "dataIntervalStart": "Начало временного интервала",
+    "lastSchedulingDecision": "Последнее решение о расписании",
+    "mappedPartitionKey": "Ключ распределенной части",
+    "partitionKey": "Ключ части",
+    "queuedAt": "В очереди в",
+    "runAfter": "Запустить после",
+    "runType": "Тип запуска",
+    "sourceAssetEvent": "Источник события актива",
+    "triggeredBy": "Запущено",
+    "triggeringUser": "Запускающий пользователь"
+  },
+  "dagRun_one": "Запуск Дага",
+  "dagRun_other": "Запусков Дага",
+  "dagRunId": "ID запуска Дага",
+  "dagWarnings": "Предупреждения/ошибки Дага",
+  "defaultToGraphView": "По умолчанию отображать график",
+  "defaultToGridView": "По умолчанию отображать в сетке",
+  "delete": "Удалить",
+  "diff": "Разница",
+  "diffCompareWith": "Сравнить с",
+  "diffExit": "Выйти из разницы",
+  "diffSelectVersionToCompare": "Выбрать версию для сравнения",
+  "direction": "Направление",
+  "docs": {
+    "documentation": "Документация",
+    "githubRepo": "GitHub Репозиторий",
+    "restApiReference": "REST API Справочник"
+  },
+  "download": {
+    "download": "Скачать",
+    "hotkey": "d",
+    "tooltip": "Нажмите {{hotkey}}, чтобы скачать журналы"
+  },
+  "duration": "Длительность",
+  "edit": "Редактировать",
+  "endDate": "Дата окончания",
+  "error": {
+    "back": "Назад",
+    "defaultMessage": "Произошла неожиданная ошибка",
+    "home": "Главная",
+    "invalidUrl": "Страница не найдена. Пожалуйста, проверьте URL и попробуйте снова.",
+    "notFound": "Страница не найдена",
+    "title": "Ошибка"
+  },
+  "expand": {
+    "collapse": "Свернуть",
+    "expand": "Развернуть",
+    "hotkey": "e",
+    "tooltip": "Нажмите {{hotkey}}, чтобы переключить развертывание"
+  },
+  "expandAllExtra": "Развернуть все дополнительные JSON",
+  "expression": {
+    "all": "Все",
+    "and": "И",
+    "any": "Любой",
+    "or": "ИЛИ"
+  },
+  "filter": "Фильтр",
+  "filters": {
+    "durationFrom": "Продолжительность с",
+    "durationTo": "Продолжительность до",
+    "endTime": "Время окончания",
+    "logicalDateFrom": "Логическая дата с",
+    "logicalDateTo": "Логическая дата до",
+    "runAfterFrom": "Запустить после с",
+    "runAfterTo": "Запустить после до",
+    "selectDateRange": "Выбрать диапазон дат",
+    "startTime": "Время начала"
+  },
+  "generateToken": "Сгенерировать токен",
+  "logicalDate": "Логическая дата",
+  "logout": "Выйти",
+  "logoutConfirmation": "Вы собираетесь выйти из приложения.",
+  "mapIndex": "Индекс карты",
+  "modal": {
+    "add": "Добавить",
+    "cancel": "Отменить",
+    "confirm": "Подтвердить",
+    "delete": {
+      "button": "Удалить",
+      "confirmation": "Вы уверены, что хотите удалить {{resourceName}}? Это действие нельзя будет отменить."
+    },
+    "save": "Сохранить"
+  },
+  "nav": {
+    "admin": "Администратор",
+    "assets": "Активы",
+    "browse": "Просмотр",
+    "dags": "Даги",
+    "docs": "Документы",
+    "home": "Главная",
+    "legacyFabViews": "Устаревшие виды",
+    "plugins": "Плагины",
+    "security": "Безопасность"
+  },
+  "noItemsFound": "Не найдено {{modelName}}",
+  "note": {
+    "add": "Добавить заметку",
+    "dagRun": "Заметка запуска Дага",
+    "label": "Заметка",
+    "placeholder": "Добавьте заметку...",
+    "taskInstance": "Заметка экземпляра задачи"
+  },
+  "partitionedDagRun_one": "Разделенный запуск Дага",
+  "partitionedDagRun_other": "Разделенных запусков Дага",
+  "partitionedDagRunDetail": {
+    "receivedAssetEvents": "Полученные события актива"
+  },
+  "pendingDagRun_one": "{{count}} Даг ожидает запуска",
+  "pendingDagRun_few": "{{count}} Дага ожидают запуска",
+  "pendingDagRun_other": "{{count}} Дагов ожидают запуска",
+  "reset": "Сбросить",
+  "runId": "ID запуска",
+  "runTypes": {
+    "asset_triggered": "Запущено активом",
+    "backfill": "Заполнение",
+    "manual": "Вручную",
+    "scheduled": "Запланировано"
+  },
+  "scroll": {
+    "direction": {
+      "bottom": "вниз",
+      "top": "вверх"
+    },
+    "tooltip": "Нажмите {{hotkey}}, чтобы прокрутить {{direction}}"
+  },
+  "security": {
+    "actions": "Действия",
+    "permissions": "Разрешения",
+    "resources": "Ресурсы",
+    "roles": "Роли",
+    "users": "Пользователи"
+  },
+  "selectLanguage": "Выбор языка",
+  "showDetailsPanel": "Показать панель деталей",
+  "signedInAs": "Вошли как",
+  "source": {
+    "hide": "Скрыть источник",
+    "hotkey": "s",
+    "show": "Показать источник"
+  },
+  "sourceAssetEvent_one": "Событие источника актива",
+  "sourceAssetEvent_other": "Событий источника актива",
+  "startDate": "Дата начала",
+  "state": "Состояние",
+  "states": {
+    "deferred": "Отложен",
+    "failed": "Не удался",

Review Comment:
   ```suggestion
       "failed": "Ошибка",
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928097391


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dashboard.json:
##########
@@ -0,0 +1,47 @@
+{
+  "favorite": {
+    "favoriteDags_one": "Первый {{count}} избранный Даг",
+    "favoriteDags_few": "Первые {{count}} избранных Дага",
+    "favoriteDags_other": "Первые {{count}} избранных Дагов",
+    "noDagRuns": "Для этого дага еще нет запусков.",
+    "noFavoriteDags": "Ещё нет избранных. Нажмите на иконку со звёздочкой рядом с Дагом в списке, чтобы добавить его в избранное."
+  },
+  "group": "Группа",
+  "health": {
+    "dagProcessor": "Процессор Дага",
+    "health": "Здоровье",
+    "healthy": "Здоровый",
+    "lastHeartbeat": "Последний hearbeat-сигнал",
+    "metaDatabase": "Метабаза данных",
+    "scheduler": "Планировщик",
+    "status": "Статус",
+    "triggerer": "Триггер",
+    "unhealthy": "Нездоровый"
+  },
+  "history": "История",
+  "importErrors": {
+    "dagImportError_one": "Ошибка импорта Дагов",
+    "dagImportError_other": "Ошибки импорта Дагов",
+    "searchByFile": "Поиск по файлу",
+    "timestamp": "Временная метка"
+  },
+  "managePools": "Управление пулами",
+  "noAssetEvents": "Нет найденных событий активов.",
+  "poolSlots": "Слоты пула",
+  "sortBy": {
+    "newestFirst": "Сначала новые",
+    "oldestFirst": "Сначала старые",
+    "placeholder": "Сортировать по"
+  },
+  "source": "Источник",
+  "stats": {
+    "activeDags": "Активные Даги",
+    "failedDags": "Неудавшиеся Даги",
+    "queuedDags": "Даги в очереди",
+    "requiredActions": "Необходимые действия",
+    "runningDags": "Запущенные Даги",

Review Comment:
   ```suggestion
       "runningDags": "Выполняющиеся Даги",
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "jscheffl (via GitHub)" <gi...@apache.org>.
jscheffl commented on PR #63450:
URL: https://github.com/apache/airflow/pull/63450#issuecomment-4049674474

   As I am also supporting some other translations I can offer being the contributor as technical owner/sponsor. If nobody else you can put my name in CODEOWNERS. I'd like to support, there might be a large russian speaking community.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928271199


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,358 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "Даг",
+  "dag_other": "Даги",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска Дага",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация Дага",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",
+    "latestDagVersion": "Последняя версия Дага",
+    "latestRun": "Последний запуск",
+    "maxActiveRuns": "Максимум активных запусков",
+    "maxActiveTasks": "Максимум активных задач",
+    "maxConsecutiveFailedDagRuns": "Максимум последовательных неудачных запусков Дага",
+    "nextRun": "Следующий запуск",
+    "owner": "Владелец",
+    "params": "Параметры",
+    "schedule": "Расписание",
+    "tags": "Теги"
+  },
+  "dagId": "ID Дага",
+  "dagRun": {
+    "conf": "Конфигурация",
+    "dagVersions": "Версии Дага",
+    "dataIntervalEnd": "Конец временного интервала",
+    "dataIntervalStart": "Начало временного интервала",
+    "lastSchedulingDecision": "Последнее решение о расписании",
+    "mappedPartitionKey": "Ключ распределенной части",
+    "partitionKey": "Ключ части",
+    "queuedAt": "В очереди в",
+    "runAfter": "Запустить после",
+    "runType": "Тип запуска",
+    "sourceAssetEvent": "Источник события актива",
+    "triggeredBy": "Запущено",

Review Comment:
   ```suggestion
       "triggeredBy": "Инициировано",
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2927584639


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,358 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "Даг",
+  "dag_other": "Даги",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска Дага",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация Дага",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",
+    "latestDagVersion": "Последняя версия Дага",
+    "latestRun": "Последний запуск",
+    "maxActiveRuns": "Максимум активных запусков",
+    "maxActiveTasks": "Максимум активных задач",
+    "maxConsecutiveFailedDagRuns": "Максимум последовательных неудачных запусков Дага",
+    "nextRun": "Следующий запуск",
+    "owner": "Владелец",
+    "params": "Параметры",
+    "schedule": "Расписание",
+    "tags": "Теги"
+  },
+  "dagId": "ID Дага",
+  "dagRun": {
+    "conf": "Конфигурация",
+    "dagVersions": "Версии Дага",
+    "dataIntervalEnd": "Конец временного интервала",
+    "dataIntervalStart": "Начало временного интервала",
+    "lastSchedulingDecision": "Последнее решение о расписании",
+    "mappedPartitionKey": "Ключ распределенной части",
+    "partitionKey": "Ключ части",
+    "queuedAt": "В очереди в",
+    "runAfter": "Запустить после",
+    "runType": "Тип запуска",
+    "sourceAssetEvent": "Источник события актива",
+    "triggeredBy": "Запущено",
+    "triggeringUser": "Запускающий пользователь"
+  },
+  "dagRun_one": "Запуск Дага",
+  "dagRun_other": "Запусков Дага",
+  "dagRunId": "ID запуска Дага",
+  "dagWarnings": "Предупреждения/ошибки Дага",
+  "defaultToGraphView": "По умолчанию отображать график",
+  "defaultToGridView": "По умолчанию отображать в сетке",
+  "delete": "Удалить",
+  "diff": "Разница",
+  "diffCompareWith": "Сравнить с",
+  "diffExit": "Выйти из разницы",
+  "diffSelectVersionToCompare": "Выбрать версию для сравнения",
+  "direction": "Направление",
+  "docs": {
+    "documentation": "Документация",
+    "githubRepo": "GitHub Репозиторий",
+    "restApiReference": "REST API Справочник"
+  },
+  "download": {
+    "download": "Скачать",
+    "hotkey": "d",
+    "tooltip": "Нажмите {{hotkey}}, чтобы скачать журналы"
+  },
+  "duration": "Длительность",
+  "edit": "Редактировать",
+  "endDate": "Дата окончания",
+  "error": {
+    "back": "Назад",
+    "defaultMessage": "Произошла неожиданная ошибка",

Review Comment:
   ```suggestion
       "defaultMessage": "Произошла непредвиденная ошибка",
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2935848438


##########
.github/CODEOWNERS:
##########
@@ -53,6 +53,7 @@ airflow-core/src/airflow/ui/public/i18n/locales/ko/ @choo121600 # + @kgw7401 @on
 airflow-core/src/airflow/ui/public/i18n/locales/nl/ @BasPH # + @DjVinnii
 airflow-core/src/airflow/ui/public/i18n/locales/pl/ @potiuk @mobuchowski # + @kacpermuda
 airflow-core/src/airflow/ui/public/i18n/locales/pt/ @potiuk  # + @aoelvp94 @victoru2
+airflow-core/src/airflow/ui/public/i18n/locales/ru/ @jscheffl @puzzle-rpa-team  # + @renat-sagut

Review Comment:
   Yes, happy to be listed and review in the future as well. Thanks!



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "boring-cyborg[bot] (via GitHub)" <gi...@apache.org>.
boring-cyborg[bot] commented on PR #63450:
URL: https://github.com/apache/airflow/pull/63450#issuecomment-4047251959

   Congratulations on your first Pull Request and welcome to the Apache Airflow community! If you have any issues or are unsure about any anything please check our Contributors' Guide (https://github.com/apache/airflow/blob/main/contributing-docs/README.rst)
   Here are some useful points:
   - Pay attention to the quality of your code (ruff, mypy and type annotations). Our [prek-hooks]( https://github.com/apache/airflow/blob/main/contributing-docs/08_static_code_checks.rst#prerequisites-for-prek-hooks) will help you with that.
   - In case of a new feature add useful documentation (in docstrings or in `docs/` directory). Adding a new operator? Check this short [guide](https://github.com/apache/airflow/blob/main/airflow-core/docs/howto/custom-operator.rst) Consider adding an example DAG that shows how users should use it.
   - Consider using [Breeze environment](https://github.com/apache/airflow/blob/main/dev/breeze/doc/README.rst) for testing locally, it's a heavy docker but it ships with a working Airflow and a lot of integrations.
   - Be patient and persistent. It might take some time to get a review or get the final approval from Committers.
   - Please follow [ASF Code of Conduct](https://www.apache.org/foundation/policies/conduct) for all communication including (but not limited to) comments on Pull Requests, Mailing list and Slack.
   - Be sure to read the [Airflow Coding style]( https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#coding-style-and-best-practices).
   - Always keep your Pull Requests rebased, otherwise your build might fail due to changes not related to your commits.
   Apache Airflow is a community-driven project and together we are making it better 🚀.
   In case of doubts contact the developers at:
   Mailing List: dev@airflow.apache.org
   Slack: https://s.apache.org/airflow-slack
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928249672


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dashboard.json:
##########
@@ -0,0 +1,47 @@
+{
+  "favorite": {
+    "favoriteDags_one": "Первый {{count}} избранный Даг",
+    "favoriteDags_few": "Первые {{count}} избранных Дага",
+    "favoriteDags_other": "Первые {{count}} избранных Дагов",
+    "noDagRuns": "Для этого дага еще нет запусков.",
+    "noFavoriteDags": "Ещё нет избранных. Нажмите на иконку со звёздочкой рядом с Дагом в списке, чтобы добавить его в избранное."
+  },
+  "group": "Группа",
+  "health": {
+    "dagProcessor": "Процессор Дага",
+    "health": "Здоровье",
+    "healthy": "Здоровый",
+    "lastHeartbeat": "Последний hearbeat-сигнал",
+    "metaDatabase": "Метабаза данных",
+    "scheduler": "Планировщик",
+    "status": "Статус",
+    "triggerer": "Триггер",
+    "unhealthy": "Нездоровый"
+  },
+  "history": "История",
+  "importErrors": {
+    "dagImportError_one": "Ошибка импорта Дагов",
+    "dagImportError_other": "Ошибки импорта Дагов",
+    "searchByFile": "Поиск по файлу",
+    "timestamp": "Временная метка"
+  },
+  "managePools": "Управление пулами",
+  "noAssetEvents": "Нет найденных событий активов.",
+  "poolSlots": "Слоты пула",
+  "sortBy": {
+    "newestFirst": "Сначала новые",
+    "oldestFirst": "Сначала старые",
+    "placeholder": "Сортировать по"
+  },
+  "source": "Источник",
+  "stats": {
+    "activeDags": "Активные Даги",
+    "failedDags": "Неудавшиеся Даги",
+    "queuedDags": "Даги в очереди",
+    "requiredActions": "Необходимые действия",
+    "runningDags": "Запущенные Даги",
+    "stats": "Статистика"
+  },
+  "uri": "Uri",

Review Comment:
   ```suggestion
     "uri": "URI",
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928236224


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/dashboard.json:
##########
@@ -0,0 +1,47 @@
+{
+  "favorite": {
+    "favoriteDags_one": "Первый {{count}} избранный Даг",
+    "favoriteDags_few": "Первые {{count}} избранных Дага",
+    "favoriteDags_other": "Первые {{count}} избранных Дагов",
+    "noDagRuns": "Для этого дага еще нет запусков.",
+    "noFavoriteDags": "Ещё нет избранных. Нажмите на иконку со звёздочкой рядом с Дагом в списке, чтобы добавить его в избранное."
+  },
+  "group": "Группа",
+  "health": {
+    "dagProcessor": "Процессор Дага",
+    "health": "Здоровье",
+    "healthy": "Здоровый",
+    "lastHeartbeat": "Последний hearbeat-сигнал",
+    "metaDatabase": "Метабаза данных",
+    "scheduler": "Планировщик",
+    "status": "Статус",
+    "triggerer": "Триггер",
+    "unhealthy": "Нездоровый"

Review Comment:
   ```suggestion
       "unhealthy": "Неисправный"
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on code in PR #63450:
URL: https://github.com/apache/airflow/pull/63450#discussion_r2928262675


##########
airflow-core/src/airflow/ui/public/i18n/locales/ru/common.json:
##########
@@ -0,0 +1,358 @@
+{
+  "admin": {
+    "Config": "Конфигурация",
+    "Connections": "Соединения",
+    "Plugins": "Плагины",
+    "Pools": "Пулы",
+    "Providers": "Поставщики",
+    "Variables": "Переменные"
+  },
+  "allOperators": "Все операторы",
+  "appearance": {
+    "appearance": "Внешний вид",
+    "darkMode": "Темный режим",
+    "lightMode": "Светлый режим",
+    "systemMode": "Следовать системным настройкам"
+  },
+  "asset_one": "Актив",
+  "asset_other": "Активы",
+  "assetEvent_one": "Событие актива",
+  "assetEvent_other": "События активов",
+  "backfill_one": "Заполнение",
+  "backfill_other": "Заполнения",
+  "browse": {
+    "auditLog": "Журнал аудита",
+    "jobs": "Задания",
+    "requiredActions": "Необходимые действия",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "Свернуть все дополнительные JSON",
+  "collapseDetailsPanel": "Свернуть панель деталей",
+  "createdAssetEvent_one": "Создано событие актива",
+  "createdAssetEvent_other": "Созданы события активов",
+  "dag_one": "Даг",
+  "dag_other": "Даги",
+  "dagDetails": {
+    "catchup": "Сбор данных",
+    "dagRunTimeout": "Тайм-аут запуска Дага",
+    "defaultArgs": "Аргументы по умолчанию",
+    "description": "Описание",
+    "documentation": "Документация Дага",
+    "fileLocation": "Место хранения файла",
+    "hasTaskConcurrencyLimits": "Имеет ограничения на параллельные задачи",
+    "lastExpired": "Последний истекший",
+    "lastParseDuration": "Продолжительность последнего разбора",
+    "lastParsed": "Последний разобранный",
+    "latestDagVersion": "Последняя версия Дага",
+    "latestRun": "Последний запуск",
+    "maxActiveRuns": "Максимум активных запусков",
+    "maxActiveTasks": "Максимум активных задач",
+    "maxConsecutiveFailedDagRuns": "Максимум последовательных неудачных запусков Дага",
+    "nextRun": "Следующий запуск",
+    "owner": "Владелец",
+    "params": "Параметры",
+    "schedule": "Расписание",
+    "tags": "Теги"
+  },
+  "dagId": "ID Дага",
+  "dagRun": {
+    "conf": "Конфигурация",
+    "dagVersions": "Версии Дага",
+    "dataIntervalEnd": "Конец временного интервала",
+    "dataIntervalStart": "Начало временного интервала",
+    "lastSchedulingDecision": "Последнее решение о расписании",
+    "mappedPartitionKey": "Ключ распределенной части",
+    "partitionKey": "Ключ части",
+    "queuedAt": "В очереди в",
+    "runAfter": "Запустить после",
+    "runType": "Тип запуска",
+    "sourceAssetEvent": "Источник события актива",
+    "triggeredBy": "Запущено",
+    "triggeringUser": "Запускающий пользователь"

Review Comment:
   ```suggestion
       "triggeringUser": "Инициатор запуска"
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "renat-sagut (via GitHub)" <gi...@apache.org>.
renat-sagut commented on PR #63450:
URL: https://github.com/apache/airflow/pull/63450#issuecomment-4070250621

   It looks like `_few` and `_many` are also missing in several other places. For example, `favoriteDags_many` is missing on the home page.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Adding Russian translation for UI [airflow]

Posted by "puzzle-rpa-team (via GitHub)" <gi...@apache.org>.
puzzle-rpa-team commented on PR #63450:
URL: https://github.com/apache/airflow/pull/63450#issuecomment-4065628262

   Added "few" and "many" forms to the translation, also edited CODEOWNERS (now it's `airflow-core/src/airflow/ui/public/i18n/locales/ru/ @jscheffl # + @puzzle-rpa-team @renat-sagut`)
   
   > In general, I have some doubts that "Даг" is a good translation for DAG in Russian. I skimmed a few articles about Airflow in Russian, and most of them seem to keep the term "DAG" in English rather than transliterating it.
   > 
   > @puzzle-rpa-team should we follow the same approach here and keep "DAG" as is? What do you think?
   
   Good point, but I tried to keep as much of the translation Cyrillic as possible - I thought about translating "Dag" as "НАГ", even, to keep a "directed acyclic graph" acronym. But that sounded too weird and I settled on transliterating instead.
   In my last commit I changed all instances of "Даг" to "ДАГ", if that's an acceptable middle ground.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org