Skip to content

fix(i18n): make user-facing strings translatable - #14848

Open
coolebyak wants to merge 1 commit into
mavlink:masterfrom
coolebyak:fix/translatability-batch
Open

fix(i18n): make user-facing strings translatable#14848
coolebyak wants to merge 1 commit into
mavlink:masterfrom
coolebyak:fix/translatability-batch

Conversation

@coolebyak

Copy link
Copy Markdown

Description

This PR consolidates related translatability fixes across QGroundControl.

It supersedes the previously submitted single-purpose i18n PRs #14824...#14827 and #14834...#14840, which were closed at the maintainer's request so the changes could be grouped into a cohesive PR with lower review overhead.

This is intended to be translation enablement only. It wraps existing user-facing strings in tr() or qsTr() and replaces dynamic translation keys with stable positional placeholders.

The English UI text, application behavior, settings behavior, runtime identifiers, enum values, and data formats are unchanged.

Translation files are intentionally not included. The newly exposed source strings can be handled through the existing Crowdin workflow.

Changes

  • Make user-facing error and status messages translatable in:
    • APM and ArduRover firmware plugins
    • generic vehicle guided-mode handling
    • ADSB server handling
    • firmware upgrade and preset loading
    • NTRIP transport
    • camera permission handling
    • remote-control calibration
  • Make QML labels translatable in:
    • APM sensor, motor, frame, and tuning pages
    • PX4 tuning graphs
    • camera orientation controls
    • Structure Scan entry and exit markers
    • Syslink setup
    • VTOL pre-flight checklist
    • GPS Survey-In duration
    • gimbal control dialog
  • Replace the dynamically interpolated compass-calibration coordinate key with:
    • a stable Lat: %1 Lon: %2 source string
    • positional arguments
    • a translator comment describing both placeholders
  • Keep line breaks and punctuation separate where appropriate, avoiding translation keys with embedded formatting characters.

Type of Change

  • Bug fix (non-breaking, translation enablement only)
  • Functional change
  • Breaking change
  • Documentation update
  • Refactoring
  • CI/Build changes

Functional Impact

No functional behavior is intended to change.

The PR only changes how existing user-facing strings are passed to Qt's translation system. The untranslated English output remains the same, except that runtime values now use stable positional placeholders instead of being embedded in translation keys.

Testing

  • Ran git diff --check
  • Ran Qt 6.11.1 lupdate against all 30 modified source files
  • Verified that all expected translation keys were extracted
  • Verified that the %1/%2 coordinate translator comment was extracted
  • Verified that no repository translation files were modified
  • Built the complete all target successfully
  • Launched and smoke-tested the application twice

Local build

  • Windows
  • Qt 6.11.1
  • MSVC 2022, x64 Release configuration
  • CMake/Ninja build
  • Complete all target finished successfully
  • QGroundControl.exe linked successfully
  • Application launched twice from Qt Creator and exited normally

The runtime emitted an existing warning about QQuickPinchArea.enabled overriding a base-object member. It is unrelated to these translation changes and did not prevent startup or normal shutdown.

No regression test was added because the changes only expose existing source strings to Qt's translation system.

Platforms Tested

  • Linux
  • Windows
  • macOS
  • Android
  • iOS

Flight Stacks Tested

  • PX4
  • ArduPilot
  • N/A

Screenshots

Not applicable. The untranslated English UI output and layout are unchanged.

Checklist

  • No translation files were modified
  • No runtime identifiers or enum values were changed
  • Translation keys use stable source strings and positional placeholders
  • The application builds, starts, and exits successfully on Windows
  • New and existing automated tests pass locally

@codecov

codecov Bot commented Aug 12, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 22 lines in your changes missing coverage. Please review.
✅ Project coverage is 33.58%. Comparing base (f29efd3) to head (33e5c05).
⚠️ Report is 282 commits behind head on master.

Files with missing lines Patch % Lines
src/GPS/NTRIP/NTRIPHttpTransport.cc 0.00% 4 Missing ⚠️
src/Vehicle/Vehicle.cc 0.00% 4 Missing ⚠️
src/ADSB/ADSBVehicleManager.cc 0.00% 3 Missing ⚠️
src/FirmwarePlugin/APM/APMFirmwarePlugin.cc 0.00% 3 Missing ⚠️
.../Vehicle/VehicleSetup/FirmwareUpgradeController.cc 0.00% 2 Missing ⚠️
src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.cc 0.00% 1 Missing ⚠️
src/FirmwarePlugin/FirmwarePlugin.cc 0.00% 0 Missing and 1 partial ⚠️
src/MissionManager/CorridorScanComplexItem.cc 0.00% 1 Missing ⚠️
src/MissionManager/SurveyComplexItem.cc 0.00% 1 Missing ⚠️
...VehicleSetup/RemoteControlCalibrationController.cc 0.00% 1 Missing ⚠️
... and 1 more

❌ Your patch check has failed because the patch coverage (0.00%) is below the target coverage (30.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master   #14848      +/-   ##
==========================================
+ Coverage   25.47%   33.58%   +8.11%     
==========================================
  Files         769      929     +160     
  Lines       65912    84105   +18193     
  Branches    30495    38871    +8376     
==========================================
+ Hits        16788    28243   +11455     
+ Misses      37285    36818     -467     
- Partials    11839    19044    +7205     
Flag Coverage Δ
unittests 33.58% <0.00%> (+8.11%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.cc 45.83% <0.00%> (-6.95%) ⬇️
src/FirmwarePlugin/FirmwarePlugin.cc 23.65% <0.00%> (+7.33%) ⬆️
src/MissionManager/CorridorScanComplexItem.cc 33.96% <0.00%> (+12.15%) ⬆️
src/MissionManager/SurveyComplexItem.cc 32.60% <0.00%> (+10.53%) ⬆️
...VehicleSetup/RemoteControlCalibrationController.cc 33.89% <0.00%> (+33.89%) ⬆️
...oManager/VideoReceiver/QtMultimedia/UVCReceiver.cc 6.34% <0.00%> (ø)
.../Vehicle/VehicleSetup/FirmwareUpgradeController.cc 9.55% <0.00%> (-0.09%) ⬇️
src/ADSB/ADSBVehicleManager.cc 39.37% <0.00%> (+15.23%) ⬆️
src/FirmwarePlugin/APM/APMFirmwarePlugin.cc 24.23% <0.00%> (+4.01%) ⬆️
src/GPS/NTRIP/NTRIPHttpTransport.cc 20.67% <0.00%> (+2.14%) ⬆️
... and 1 more

... and 624 files with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 36e35b8...33e5c05. Read the comment docs.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

Copy link
Copy Markdown
Contributor

Build Results

Platform Status

Platform Status Details
Linux Passed View
Windows Passed View
MacOS Passed View
Android Passed View

All builds passed.

Pre-commit

Check Status Details
pre-commit Failed (non-blocking) View

Pre-commit hooks: 2 passed, 75 failed, 7 skipped.

Test Results

linux-coverage-integration: 43 passed, 0 skipped
linux-coverage-unit: 130 passed, 0 skipped
linux-sanitizers-integration: 25 passed, 0 skipped
linux-sanitizers-unit: 130 passed, 0 skipped
Total: 328 passed, 0 skipped

Code Coverage

Coverage: 69.0%

No baseline available for comparison

Artifact Sizes

Artifact Size
QGroundControl 252.58 MB
QGroundControl-aarch64 176.45 MB
QGroundControl-installer-AMD64 137.91 MB
QGroundControl-installer-AMD64-ARM64 80.41 MB
QGroundControl-installer-ARM64 109.17 MB
QGroundControl-linux 84.47 MB
QGroundControl-mac 84.46 MB
QGroundControl-x86_64 188.68 MB
No baseline available for comparison

Updated: 2026-08-12 06:49:38 UTC • Commit: 33e5c05 • Triggered by: Android

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.

1 participant