Skip to content

Conversation

@funkill
Copy link
Contributor

@funkill funkill commented Dec 11, 2025

User description

Full russian translation of iNav Configurator 9.0.0-RC3. Based on #2269


PR Type

Enhancement


Description

  • This description is generated by an AI tool. It may have inaccuracies

  • Adds complete Russian language support to iNav Configurator

  • Registers Russian language option across all locale configuration files

  • Includes new locale/ru/messages.json with full Russian translations


Diagram Walkthrough

flowchart LR
  A["Language Files"] -->|Add ru entry| B["en/messages.json"]
  A -->|Add ru entry| C["ja/messages.json"]
  A -->|Add ru entry| D["uk/messages.json"]
  A -->|Add ru entry| E["zh_CN/messages.json"]
  A -->|Create new| F["ru/messages.json"]
  B --> G["Russian Language Enabled"]
  C --> G
  D --> G
  E --> G
  F --> G
Loading

File Walkthrough

Relevant files
Configuration changes
messages.json
Register Russian language in English locale                           

locale/en/messages.json

  • Added language_ru entry with Russian language name "Русский"
  • Maintains consistent structure with other language entries
  • Positioned after Chinese language entry
+4/-0     
messages.json
Register Russian language in Japanese locale                         

locale/ja/messages.json

  • Added language_ru entry with Russian language name "Русский"
  • Maintains consistent structure with other language entries
  • Positioned after Chinese language entry
+4/-0     
messages.json
Register Russian language in Ukrainian locale                       

locale/uk/messages.json

  • Added language_ru entry with Russian language name "Русский"
  • Maintains consistent structure with other language entries
  • Positioned after Chinese language entry
+4/-0     
messages.json
Register Russian language in Chinese locale                           

locale/zh_CN/messages.json

  • Added language_ru entry with Russian language name "Русский"
  • Maintains consistent structure with other language entries
  • Positioned after Chinese language entry
+4/-0     
Enhancement
messages.json
Create Russian language translation file                                 

locale/ru/messages.json

  • New file containing complete Russian translation of iNav Configurator
  • Based on iNav Configurator 9.0.0-RC3 release
  • Includes all UI strings and messages in Russian language
+6236/-0

@github-actions
Copy link

Branch Targeting Suggestion

You've targeted the master branch with this PR. Please consider if a version branch might be more appropriate:

  • maintenance-9.x - If your change is backward-compatible and won't create compatibility issues between INAV firmware and Configurator 9.x versions. This will allow your PR to be included in the next 9.x release.

  • maintenance-10.x - If your change introduces compatibility requirements between firmware and configurator that would break 9.x compatibility. This is for PRs which will be included in INAV 10.x

If master is the correct target for this change, no action is needed.


This is an automated suggestion to help route contributions to the appropriate branch.

@qodo-code-review
Copy link
Contributor

PR Compliance Guide 🔍

All compliance sections have been disabled in the configurations.

Comment on lines 5317 to 5322
},
"PIDControllers": {
"message": "PID контроллеры"
},
"defaultWelcomeText": {
"message": "Исходный код прошивки можно скачать <a href=\"https://github.com/iNavFlight\" title=\"www.github.com\" target=\"_blank\">здесь</a>.<br />Новейшая прошивка доступна<a href=\"https://github.com/iNavFlight/inav/releases\" title=\"www.github.com\" target=\"_blank\">здесь</a>.<br /><br />Последнюю версию <strong>STM USB VCP Drivers</strong> можно скачать <a href=\"http://www.st.com/web/en/catalo
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: Remove stray trailing quotes and avoid empty message values to prevent UI artifacts or broken tooltips. Provide a meaningful string or omit unused keys. [Learned best practice, importance: 6]

Suggested change
},
"PIDControllers": {
"message": "PID контроллеры"
},
"defaultWelcomeText": {
"message": "Исходный код прошивки можно скачать <a href=\"https://github.com/iNavFlight\" title=\"www.github.com\" target=\"_blank\">здесь</a>.<br />Новейшая прошивка доступна<a href=\"https://github.com/iNavFlight/inav/releases\" title=\"www.github.com\" target=\"_blank\">здесь</a>.<br /><br />Последнюю версию <strong>STM USB VCP Drivers</strong> можно скачать <a href=\"http://www.st.com/web/en/catalo
"osd_preview_title_drag": {
"message": "Перетащите для изменения позиции"
},
"selectValidSerialPort": {
"message": "<span style=\"color: red\">Пожалуйста, выберите корректный последовательный порт</span>"
},
"errorReadingFileXml2jsNotFound": {
"message": "<span style=\"color: red\">Ошибка чтения файла (xml2js не найден)</span>"
}

@sensei-hacker sensei-hacker changed the base branch from master to maintenance-9.x December 11, 2025 15:26
@sensei-hacker
Copy link
Member

/ask qodo, can you compare theis new translations in locale/ru/messages.json with the existing locale/ru/messages.json ? Do the English and Russian messages match? Is there anything inappropriate in locale/ru/messages.json ?

@qodo-code-review
Copy link
Contributor

Ask

qodo, can you compare theis new translations in locale/ru/messages.json with the existing locale/ru/messages.json ? Do the English and Russian messages match? Is there anything inappropriate in locale/ru/messages.json ?

Answer:

I don’t have the full content of the newly added locale/ru/messages.json in the diff you provided, so I can’t perform a key-by-key comparison or validate every string. However, here’s what I can infer and how you can validate it quickly:

What I can confirm from the diff:

  • Russian (“Русский”) was correctly registered in en/ja/uk/zh_CN locale files as language_ru, with the comment “Don’t translate!” consistent with existing pattern.
  • This ensures the language shows up in the selector.

What needs verification in locale/ru/messages.json:

  1. Key parity with English

    • Ensure every key in locale/en/messages.json exists in locale/ru/messages.json.
    • There should be no extra unexpected keys, and no missing keys. Common misses: tooltips, validation messages, advanced features introduced in 9.0.0-RC3 (mission planner, mixers, INAV terms like RTH, NAV modes).
    • Watch for placeholder consistency: e.g., {value}, {count}, %d, %s. They must be preserved exactly.
  2. Non-translatable strings

    • Do not translate:
      • Brand/product names: iNav, INAV Configurator, Betaflight, MSP, GPS, PWM, UART, SPI, I2C, OSD item identifiers.
      • Mode names and abbreviations: RTH, NAV POSHOLD, NAV CRUISE, ANGLE, ACRO, HORIZON, AIR mode, DSHOT, CRSF, SBUS, ELRS, RSSI.
      • Units and symbols: ms, s, m, °, dBm, Hz, kHz, MHz, mAh, A, V.
      • CLI commands and code-like snippets.
    • The added “language_ru” entry is already marked “Don’t translate!” which is correct.
  3. Technical/terminology correctness

    • Prefer widely used Russian terms:
      • Return to Home → Возврат домой (sometimes “Возврат в точку взлёта”, shorter is fine).
      • Failsafe → Фейлсейф (not “Аварийный режим”, unless product docs prefer it).
      • Arming/Disarming → Взвод/Разрядка is wrong; use Разблокировка/Блокировка (or “Включение/Отключение моторов” depending on UI context).
      • Throttle/Pitch/Roll/Yaw → Газ/Тангаж/Крен/Рысканье.
      • Waypoint → Точка маршрута; Mission → Миссия/Маршрут.
      • Mixer → Микшер; Rates → Чувствительность/Рейты (community often keeps “рейты”).
      • Blackbox → Blackbox (leave as is) or “Blackbox журнал” if consistent elsewhere.
  4. Style and tone

    • Be consistent with formal “Вы/Ваш” or neutral impersonal forms across the file.
    • Maintain concise labels; avoid overly long sentences that break layouts.
    • Punctuation with numbers: non-breaking spaces before units if the app font/renderer supports it; if not, regular spaces are acceptable.
  5. Safety/appropriateness

    • Ensure no slang, jokes, or potentially offensive language.
    • Avoid machine-translation artifacts (literal calques): e.g., “Режим Угол” for ANGLE is acceptable, but avoid odd phrasing like “Уголить.”
    • Confirm no political or regional terms in neutral UI strings.
  6. Pluralization and grammar

    • If the app uses ICU-style plurals or count-based strings, Russian plural rules differ from English:
      • one: 1
      • few: 2–4
      • many: 0, 5–20, 25–30, etc.
    • Ensure any pluralizable messages are implemented accordingly if the framework supports it; otherwise, choose grammatically neutral formulations.

How to quickly verify (actionable steps):

  • Run a key diff: extract keys from en/messages.json and ru/messages.json and diff:
    • Missing in RU
    • Extra in RU
    • Placeholders mismatches (regex for {[^}]+}|%[sd])
  • Grep for non-translatables to ensure they remain intact (RTH, CRSF, DSHOT, UART, GPS, OSD, mAh, dBm, Hz, CLI blocks).
  • Spot-check critical panels: Ports, Configuration, PID Tuning/Rates, OSD, Receiver, Modes, Failsafe, GPS/Mission Planner, Blackbox, CLI.

Provisional assessment:

  • Based on the PR intent and correct registration changes, it’s likely the ru/messages.json is mostly appropriate. The main risks are:
    • Inconsistent or overly literal translations for flight modes/controls.
    • Placeholder mismatches.
    • Plural forms not adapted to Russian.

If you can provide the ru/messages.json contents or a subset, I can do a precise audit and list exact mismatches and suggested fixes line-by-line.

@sensei-hacker
Copy link
Member

sensei-hacker commented Dec 11, 2025

Because this is purely a language task, I used a large language model to assist in review.
Claude indicates:

No concerning content found:

  • ✅ No references to Ukraine, war, weapons, or military conflict
  • ✅ No political content (Putin, Russia/Ukraine conflict, invasion, occupation)
  • ✅ No profanity or offensive language
  • ✅ No hidden/easter egg inappropriate content
  • ✅ Technical terms (drone, UAV, FPV, kill switch, target) used appropriately in aviation context

Translation Quality

  • Technical terms left appropriately untranslated: RTH, GPS, RSSI, VTX, PID, CLI, OSD, dBm, Hz
  • Proper Russian aviation terminology: "рыскание" (yaw), "крен" (roll), "тангаж" (pitch)
  • Key counts roughly match English (2052 English vs ~2078 Russian including additions to other locales)
  • Professional tone and formal style consistent throughout

@sensei-hacker sensei-hacker merged commit e21559b into iNavFlight:maintenance-9.x Dec 11, 2025
5 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants