Skip to content

i18n(fr): backfill 120 missing translations + extract 7 hardcoded strings (pass 6)#1322

Open
foXaCe wants to merge 1 commit into
NuvioMedia:cmp-rewritefrom
foXaCe:feat/extract-hardcoded-strings-pass6
Open

i18n(fr): backfill 120 missing translations + extract 7 hardcoded strings (pass 6)#1322
foXaCe wants to merge 1 commit into
NuvioMedia:cmp-rewritefrom
foXaCe:feat/extract-hardcoded-strings-pass6

Conversation

@foXaCe

@foXaCe foXaCe commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Summary

Fresh localization pass on top of current cmp-rewrite. Backfills all 120 missing French translations (tutoiement) — fusion badges, P2P consent, torrent status, addon subtitle startup modes, subtitle styling, iOS audio output, player preference, desktop navigation, addon logo settings, Continue Watching cache — and extracts 7 hardcoded user-facing strings through the existing LocalizedUiText.resourceString pattern. 49 translations reused verbatim from NuvioTV FR for cross-project consistency (peers→pairs, seeds→sources, buffered→en mémoire tampon). Supersedes most of #1239 (pass 5), which can be closed once this is merged.

PR type

  • Reproducible bug fix
  • UI glitch/bug fix
  • Behavior bug/regression fix
  • Small maintenance only, with no UI or behavior change
  • Docs accuracy fix
  • Translation/localization only
  • Approved larger or directional change

Why

The French file was 120 keys behind English after recent upstream work, and a few user-facing strings (subtitle auto-sync errors, badge import validation, P2P desktop message) were hardcoded in Kotlin and could not be localized. This pass restores full EN↔FR parity.

Issue or approval

No linked issue: localization-only update, same scope as previous localization passes.

UI / behavior impact

  • No UI change
  • No behavior change
  • UI changed only to fix a documented glitch/bug
  • Behavior changed only to fix a documented bug/regression
  • UI change has explicit maintainer approval
  • Behavior change has explicit maintainer approval

Policy check

  • I have read and understood CONTRIBUTING.md.
  • This PR is small, focused, and limited to one problem.
  • This PR is not cosmetic-only.
  • Any UI change fixes a linked glitch/bug and includes visual proof, or this PR has no UI change.
  • Any behavior change fixes a linked bug/regression or has explicit approval, or this PR has no behavior change.
  • This PR does not bundle unrelated refactors, cleanups, formatting, or drive-by changes.
  • This PR does not add dependencies, architecture changes, migrations, or product-direction changes without explicit approval.
  • I listed the testing performed below.

Scope boundaries

Only the two string resource files and the minimal code changes required to reference the new keys (LocalizedUiText helpers + their call sites). The dead label/description String fields on IosVideoOutputPreset were intentionally not cleaned up (out of scope). The MPVKit submodule pointer is untouched.

Testing

./gradlew :composeApp:compileFullDebugKotlinAndroid passes. Both XML files validated with xmllint. Key parity EN↔FR: 1847/1847, 0 missing, 0 orphan, 0 duplicate keys. Placeholders preserved (%1$d, %1$s). Note: :composeApp:compileKotlinDesktop is currently broken on cmp-rewrite itself (missing actual for loadShowAddonLogo() / loadPendingDeviceAuthorization() in desktop stubs) — unrelated to this PR.

Screenshots / Video

None - text-only localization change, no UI change.

Breaking changes

None.

Linked issues

No linked issue - localization-only update.

…ings (pass 6)

- Backfilled all 120 missing French translations (tutoiement), including
  fusion badges, P2P consent, torrent status, subtitle settings, iOS audio
  output, desktop navigation and addon logo settings
- 49 translations reused from NuvioTV FR for cross-project consistency
- Extracted 7 hardcoded strings via the LocalizedUiText resourceString pattern:
  - subtitle auto-sync errors (no lines found / load failure)
  - stream badge import validation (empty URL, scheme check, import limit,
    generic failure)
  - P2P not available on desktop message
- Fixed gender agreement on badge URL status (Activé/Désactivé -> Active/Inactive)
- String parity 1847/1847, zero missing/orphan/duplicate keys
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant