pierrejeambrun commented on code in PR #76579:
URL: https://github.com/apache/airflow/pull/76579#discussion_r4491815621


##########
.agents/skills/airflow-translations/locales/ru.md:
##########
@@ -0,0 +1,241 @@
+<!-- SPDX-License-Identifier: Apache-2.0
+     https://www.apache.org/licenses/LICENSE-2.0 -->
+
+# Russian (ru)
+
+This document provides locale-specific instructions for translating English
+Airflow UI strings into Russian. It inherits all global rules from
+the parent [SKILL.md](../SKILL.md).
+
+**Locale code:** `ru`
+**Register:** formal `Вы` (capitalised), consistent with the existing
+translations in `airflow-core/src/airflow/ui/public/i18n/locales/ru/`.
+
+## Plural Forms
+
+Russian has **four plural forms**. Use the correct form for each suffix:
+
+- `_one`: 1, 21, 31, … (nominative singular)
+- `_few`: 2-4, 22-24, … (genitive singular)
+- `_many`: 0, 5-20, 25-30, … (genitive plural)
+- `_other`: fractional counts such as 1.5 (see the note below)
+
+**English source:**
+
+```json
+"connection_one": "Connection",
+"connection_other": "Connections"
+```
+
+**Correct:**
+
+```json
+"connection_one": "Соединение",
+"connection_few": "Соединения",
+"connection_many": "Соединений",
+"connection_other": "Соединений"
+```
+
+**Incorrect:**
+
+```json
+"connection_few": "Соединений",   // genitive plural used for 2-4
+"connection_many": "Соединения"   // genitive singular used for 5+
+```
+
+Where a numeral governs the noun, `_few` and `_many` take different cases and
+must differ:
+
+```json
+"connection_few": "Соединения",    // 2-4
+"connection_many": "Соединений"    // 5 and up
+```
+
+Where the string carries no numeral, one plural form covers every count, and
+the suffixes may legitimately be identical:
+
+```json
+"firstConfirmMessage_few": "Вы собираетесь удалить следующие соединения:",
+"firstConfirmMessage_many": "Вы собираетесь удалить следующие соединения:"
+```
+
+So judge a set by whether a number is rendered next to the noun, not by
+whether the suffixes differ.
+
+**`_other` is unsettled in this locale.** Russian takes the genitive singular
+after a fraction (`1,5 пула`), which is the same form as `_few`. Most entries
+currently repeat the `_many` form instead, while a few use the genitive
+singular:
+
+```json
+"asset_many": "Активов",
+"asset_other": "Актива"     // genitive singular, used for fractions
+```
+
+Follow whichever convention the surrounding namespace already uses, and raise
+the question with the translation owners rather than changing entries in bulk.
+
+## Case Declension
+
+Russian nouns change form by grammatical case. Use the case the context
+requires, not the nominative by default:
+
+**Nominative** (subject, standalone labels):
+
+```json
+"variable_one": "Переменная"
+```
+
+**Accusative** (direct object of a command):
+
+```json
+"deleteVariable_one": "Удалить 1 переменную"
+```
+
+**Genitive** (after numerals 5+, and for "of"):
+
+```json
+"deleteVariable_many": "Удалить {{count, number}} переменных"
+```
+
+## Gender Agreement
+
+Adjectives, participles and past-tense verbs must agree with the gender of the
+noun they describe:
+
+**Correct:**
+
+```json
+"firstConfirmMessage_one": "Вы собираетесь удалить следующее соединение:"
+"deleteVariable_one": "Удалить 1 переменную"
+```
+
+`соединение` is neuter → `следующее`; `переменная` is feminine → accusative
+`переменную`.
+
+**Incorrect:**
+
+```json
+"firstConfirmMessage_one": "Вы собираетесь удалить следующий соединение:"
+```
+
+## Unchanged Terms
+
+Keep these in English, as the existing locale does:
+
+- `Airflow` — product name
+- `Dag` / `Dags` — Airflow concept; never write `DAG`. Decline with a hyphen
+  where a case ending is needed: `Запуск Dag-а`
+- `XCom` — Airflow cross-communication term
+- `Backfill` — kept in English throughout the `ru` locale
+- `ID`, `JSON`, `API`, `SDK`, `Unix`, `UTC`, `PID` — technical abbreviations
+- Log levels: `CRITICAL`, `ERROR`, `WARNING`, `INFO`, `DEBUG`
+
+## Verb Forms and User Address
+
+- Use the **infinitive** for buttons and commands: `"Удалить соединение"`
+- Use the **formal, capitalised `Вы`** for questions and confirmations:
+  `"Вы уверены, что хотите продолжить?"`
+- Never use `ты`.
+
+**Correct:**
+
+```json
+"confirm": "Вы уверены, что хотите продолжить?",
+"deleteWarning": "Это действие нельзя отменить."
+```
+
+**Incorrect:**
+
+```json
+"confirm": "Ты уверен, что хочешь продолжить?"
+```
+
+## Letter ё
+
+The existing locale writes `ё` where standard orthography calls for it, for
+example `ещё`, `всё`, `звёздочка`. Keep it — do not substitute `е`.
+
+Take care with pairs that are different words rather than spelling variants:
+`все` ("all", plural) and `всё` ("everything") both occur in the locale and
+are each correct in their own context.
+
+## Variable and Placeholder Examples
+
+Preserve all `{{variable}}` placeholders and the `, number` formatter exactly.
+Word order may change to read naturally in Russian:
+
+**English source:**
+
+```json
+"unpauseOnTrigger": "Unpause {{dagName}} on trigger"
+```
+
+**Correct:**
+
+```json
+"unpauseOnTrigger": "Снять паузу с {{dagName}} при запуске"
+```
+
+**Incorrect:**
+
+```json
+"unpauseOnTrigger": "Снять паузу с {{имяDag}} при запуске"  // variable renamed
+```
+
+## Terminology Glossary
+
+These translations are established in the existing `ru` locale files and must
+be reused:
+
+| English | Russian |
+|---|---|
+| Task | Задача |
+| Task Instance | Экземпляр задачи |
+| Task Group | Группа задач |
+| Dag Run | Запуск Dag-а |
+| Connection | Соединение |
+| Variable | Переменная |
+| Pool | Пул |
+| Asset | Актив |
+| Trigger (noun) | Триггер |
+| Trigger (verb) | Запустить |
+| Scheduler | Планировщик |
+| Operator | Оператор |
+| Executor | Исполнитель |
+| Queue | Очередь |
+| Owner | Владелец |
+| Duration | Длительность |
+| Event | Событие |
+| Upstream | Вверх по потоку |
+| Downstream | Вниз по потоку |
+| Paused | Приостановленные |
+| Queued | В очереди |
+| Running | Выполняется |
+| Success | Успех |
+| Failed | Ошибка |
+| Skipped | Пропущен |
+| Deactivated | Деактивирован |
+
+Notes:
+
+- `Upstream` also appears contextually as `выше по цепочке` (e.g. "Запустить
+  Dag выше по цепочке этого актива"). Use `Вверх по потоку` for the standalone
+  label and the contextual phrasing inside sentences.

Review Comment:
   I think this note contradicts itself a bit: it says `выше по цепочке` is 
used inside sentences, then recommends `Вверх по потоку` for sentences too. In 
the locale, `Вверх по потоку` only appears as the graph-direction label, while 
sentences use `выше по цепочке` (`assets.json`). Maybe something like:
   
   ```suggestion
   - `Upstream` also appears contextually as `выше по цепочке` (e.g. "Запустить
     Dag выше по цепочке этого актива"). Use `Вверх по потоку` for the 
standalone
     direction label and `выше по цепочке` inside sentences.
   ```



##########
.agents/skills/airflow-translations/locales/ru.md:
##########
@@ -0,0 +1,241 @@
+<!-- SPDX-License-Identifier: Apache-2.0
+     https://www.apache.org/licenses/LICENSE-2.0 -->
+
+# Russian (ru)
+
+This document provides locale-specific instructions for translating English
+Airflow UI strings into Russian. It inherits all global rules from
+the parent [SKILL.md](../SKILL.md).
+
+**Locale code:** `ru`
+**Register:** formal `Вы` (capitalised), consistent with the existing
+translations in `airflow-core/src/airflow/ui/public/i18n/locales/ru/`.
+
+## Plural Forms
+
+Russian has **four plural forms**. Use the correct form for each suffix:
+
+- `_one`: 1, 21, 31, … (nominative singular)
+- `_few`: 2-4, 22-24, … (genitive singular)
+- `_many`: 0, 5-20, 25-30, … (genitive plural)
+- `_other`: fractional counts such as 1.5 (see the note below)
+
+**English source:**
+
+```json
+"connection_one": "Connection",
+"connection_other": "Connections"
+```
+
+**Correct:**
+
+```json
+"connection_one": "Соединение",
+"connection_few": "Соединения",
+"connection_many": "Соединений",
+"connection_other": "Соединений"
+```
+
+**Incorrect:**
+
+```json
+"connection_few": "Соединений",   // genitive plural used for 2-4
+"connection_many": "Соединения"   // genitive singular used for 5+
+```
+
+Where a numeral governs the noun, `_few` and `_many` take different cases and
+must differ:
+
+```json
+"connection_few": "Соединения",    // 2-4
+"connection_many": "Соединений"    // 5 and up
+```
+
+Where the string carries no numeral, one plural form covers every count, and
+the suffixes may legitimately be identical:
+
+```json
+"firstConfirmMessage_few": "Вы собираетесь удалить следующие соединения:",
+"firstConfirmMessage_many": "Вы собираетесь удалить следующие соединения:"
+```
+
+So judge a set by whether a number is rendered next to the noun, not by
+whether the suffixes differ.
+
+**`_other` is unsettled in this locale.** Russian takes the genitive singular
+after a fraction (`1,5 пула`), which is the same form as `_few`. Most entries
+currently repeat the `_many` form instead, while a few use the genitive
+singular:
+
+```json
+"asset_many": "Активов",
+"asset_other": "Актива"     // genitive singular, used for fractions
+```
+
+Follow whichever convention the surrounding namespace already uses, and raise
+the question with the translation owners rather than changing entries in bulk.

Review Comment:
   I think `_other` can be settled rather than left open here. The UI uses 
`_other` keys without a count as the plural label, for example 
`translate("dagRun_other")` for the nav tab, `translate("common:dag_other")` 
for a table header and `translate("requiredAction_other")` for titles. For 
whole numbers, i18next never picks `_other` in Russian, so in practice it's 
always shown on its own. That calls for the nominative plural, which is what 
the locale already uses for `dagRun_other` ("Запуски Dag-а") and 
`requiredAction_other` ("Необходимые действия"), and what `pl.md` prescribes 
for Polish.
   
   Would something like this work?
   
   ````suggestion
   **`_other` is the plural label shown without a number.** The UI renders keys
   such as `dagRun_other` or `dag_other` on their own (tab names, titles, table
   headers), while i18next never selects `_other` for whole-number counts in
   Russian. Use the nominative plural:
   
   ```json
   "dagRun_other": "Запуски Dag-а",
   "requiredAction_other": "Необходимые действия"
   ```
   
   Many existing entries still repeat the `_many` form (e.g. `dag_other: 
"Dag-ов"`);
   those are worth correcting in a separate change.
   ````
   
   Line 21 (`_other`: fractional counts) and the "correct" example on line 36 
(`"connection_other": "Соединения"`) would then need to match. Fixing the 
existing entries is probably better as a separate PR, like the `pool_many` one 
you mentioned.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to