feat(l10n): add Polish localization - #617
Conversation
- add complete Polish Flutter localization (app_pl.arb) mirroring app_en.arb - add pl to preferred-supported-locales, language selector, and native language sheets - add Polish iOS native resources (pl.lproj) and Xcode project registration - add Polish release notes and language count documentation - add focused tests for locale resolution, resource completeness, and Polish plurals
📝 WalkthroughWalkthroughThe change adds Polish as the 14th supported locale. It includes Flutter and iOS translations, locale selection, Polish release notes, updated documentation, and tests for locale resolution, ARB consistency, pluralization, and release-note layout. ChangesPolish localization
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant DeviceLocale
participant FlutterLocalization
participant LanguageSelector
DeviceLocale->>FlutterLocalization: Resolve pl or pl_PL
FlutterLocalization->>FlutterLocalization: Load AppLocalizationsPl
FlutterLocalization->>LanguageSelector: Provide Polish labels and messages
LanguageSelector->>FlutterLocalization: Select pl
Possibly related PRs
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@lib/l10n/app_de.arb`:
- Line 199: Update the polish localization entry in the German catalog from
“Polski” to the German language name “Polnisch,” preserving the existing key and
catalog structure.
In `@lib/l10n/app_pl.arb`:
- Line 5921: Update the hermesSchedulesSummary translation to use a nested
plural for the active placeholder, producing “aktywny” when active equals one
and “aktywnych” for other counts while preserving the existing total
pluralization.
In `@lib/l10n/app_sk.arb`:
- Around line 897-900: Update the “polish” localization value from “Polski” to
the Slovak name “Poľština”; leave its metadata description unchanged.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: c51366cb-29e4-4808-b601-2b01af36960a
📒 Files selected for processing (25)
README.mdassets/release_notes/pl.jsonios/Runner.xcodeproj/project.pbxprojios/Runner/Info.plistios/Runner/pl.lproj/InfoPlist.stringsios/Runner/pl.lproj/Localizable.stringsl10n.yamllib/core/utils/native_sheet_utils.dartlib/features/profile/views/app_customization_page.dartlib/l10n/app_cs.arblib/l10n/app_de.arblib/l10n/app_en.arblib/l10n/app_es.arblib/l10n/app_fr.arblib/l10n/app_it.arblib/l10n/app_ja.arblib/l10n/app_ko.arblib/l10n/app_nl.arblib/l10n/app_pl.arblib/l10n/app_ru.arblib/l10n/app_sk.arblib/l10n/app_zh.arblib/l10n/app_zh_Hant.arbtest/core/utils/polish_localization_test.darttest/features/release_notes/release_notes_localized_layout_test.dart
- localize the 'polish' language name per catalog (Polish/Polnisch/Polonais/Poľština/...) - label the credentials auth mode 'E-mail i hasło' instead of 'Hasło' - pluralize the active-schedule count in hermesSchedulesSummary (1 aktywny / 2 aktywne / 5 aktywnych) - use feminine 'Poprzednia' for the previous-version action label - replace literal 'szybkie pigułki' with 'szybkie akcje' - reword server-downgrade instruction, shared-chat notice, and direct-connection delete message - use the official product name 'Open Web UI' in user-facing values - make the placeholder parity test robust to Dart identity-based set/list equality
|
All review points are addressed in commit
Verification (real Flutter/Dart toolchain, now installed in the environment):
The full Thanks for the thorough review! Update (CodeRabbit round 2 — commit
|
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
lib/l10n/app_pl.arb (2)
4868-4868: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winCorrect the gender of
migawka.Line 4868 uses
Ten migawka. Sincemigawkais feminine, useTa migawka wersji zostanie usunięta.Proposed fix
- "workspacePromptHistoryDeleteConfirmMessage": "Ten migawka wersji zostanie usunięta. Tej operacji nie można cofnąć.", + "workspacePromptHistoryDeleteConfirmMessage": "Ta migawka wersji zostanie usunięta. Tej operacji nie można cofnąć.",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@lib/l10n/app_pl.arb` at line 4868, Update the Polish translation value for workspacePromptHistoryDeleteConfirmMessage to use the feminine demonstrative “Ta” with “migawka,” preserving the rest of the message unchanged.
2649-2649: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winUse
członkowiefor thefewplural form.The
fewbranch currently renders2–4 członków. Forczłonek, Polish requiresczłonkowiein this branch. Keepczłonkówfor themanybranch.Proposed fix
- "channelMembers": "{count, plural, one{{count} członek} few{{count} członków} many{{count} członków} other{{count} członka}}", + "channelMembers": "{count, plural, one{{count} członek} few{{count} członkowie} many{{count} członków} other{{count} członka}}",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@lib/l10n/app_pl.arb` at line 2649, Update the channelMembers localization entry so its few plural branch uses “członkowie” instead of “członków”; preserve “członków” for the many branch and leave the other plural forms unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@lib/l10n/app_pl.arb`:
- Line 408: Update the "credentials" localization value in the Polish catalog to
use a username-inclusive label such as "Dane logowania" instead of referring
only to email and password.
---
Outside diff comments:
In `@lib/l10n/app_pl.arb`:
- Line 4868: Update the Polish translation value for
workspacePromptHistoryDeleteConfirmMessage to use the feminine demonstrative
“Ta” with “migawka,” preserving the rest of the message unchanged.
- Line 2649: Update the channelMembers localization entry so its few plural
branch uses “członkowie” instead of “członków”; preserve “członków” for the many
branch and leave the other plural forms unchanged.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: c05f3b79-f256-4ed9-b970-63c4c7a81eb9
📒 Files selected for processing (15)
lib/l10n/app_cs.arblib/l10n/app_de.arblib/l10n/app_en.arblib/l10n/app_es.arblib/l10n/app_fr.arblib/l10n/app_it.arblib/l10n/app_ja.arblib/l10n/app_ko.arblib/l10n/app_nl.arblib/l10n/app_pl.arblib/l10n/app_ru.arblib/l10n/app_sk.arblib/l10n/app_zh.arblib/l10n/app_zh_Hant.arbtest/core/utils/polish_localization_test.dart
- use a username-inclusive label 'Dane logowania' for the credentials auth mode - reword the prompt version delete confirmation to 'Ta wersja zostanie usunięta' - keep channelMembers plural forms unchanged (with digits, '2 członków' is correct, not '2 członkowie') Assisted-by: Open WebUI
|
Thanks for flagging the With a numeral written as a digit, the correct forms are:
|
|
🐇 ✅ ✏️ Learnings added
|
Summary
lib/l10n/app_pl.arb, 1381 keys incl. the newpolishlanguage-name key, mirroringapp_en.arb)l10n.yaml,app_customization_page.dart,native_sheet_utils.dart; device localespl/pl_PLresolve through the generatedAppLocalizations.supportedLocales)pl.lprojInfoPlist.strings+Localizable.strings,Info.plistCFBundleLocalizations, XcodeknownRegions+ variant group registration)assets/release_notes/pl.json, focused test suite, release-notes layout test, README language count)polishlanguage-name entry to all 13 existing ARB files, localized per catalog (e.g.Polnischin de,Polonaisin fr,Poľštinain sk,Polskiin pl) — the selector shows the active catalog's nameReview feedback (all addressed)
P2 language name per catalog —
polishnow translated in every locale: Polish / Polnisch / Polaco / Polonais / Polacco / Pools / Польский / ポーランド語 / 폴란드어 / 波兰语 / 波蘭語 / Polština / Poľština / PolskiP2 credentials label — the Email/password auth-mode segment is now
E-mail i hasło(was justHasło)P2 active-schedule plural —
hermesSchedulesSummarynow pluralizesactivetoo:1 aktywny · 1 harmonogram,2 aktywne · 3 harmonogramy,5 aktywnych · 22 harmonogramyP2 previous version label —
previousLabelis nowPoprzednia(feminine, the action isprevious_version)P2 quick pills —
szybkie pigułki→szybkie akcje(subtitle and quick-actions description)P2 downgrade wording —
serverIncompatibleResolutionnow saysobniż wersję serwerainstead ofzaktualizuj ... do starszejP2 gendered message —
shareChatExistingis now neutral:Ten czat ma już link do udostępniania.P2 pronoun without antecedent —
directConnectionDeleteMessagenow readsusunięcie połączenia „{name}” i zapisanych dla niego danych logowaniaP3 product name — user-facing
OpenWebUI→Open WebUI(10 values; key names untouched)Follow-up (commit
881814e) — CodeRabbit round 2:credentials→Dane logowania(username-inclusive),workspacePromptHistoryDeleteConfirmMessage→Ta wersja zostanie usunięta…; thechannelMemberssuggestion was intentionally rejected (2 członkówis the correct form with digits, not2 członkowie).Translation quality
backnavigation →Wstecz;archiveverb →Archiwizujvs noun →Archiwum;donebutton →Gotowe;clearinput →Wyczyść;memoryfeature vs items →Pamięć/wspomnienia, matching the official Open WebUI Polish locale)@keymetadata including placeholder types preserved from the English templateVerification (Flutter/Dart toolchain, all executed)
Full-suite failures are pre-existing/environmental
The full
flutter testrun on this branch fails 6–8 tests that are performance-budget, timing-race, or golden-pixel tests. Re-running the exact same set on a cleanupstream/mainworktree (13f6f1d, no changes) reproduces the golden failures (release_notes_banner_test.dart,release_notes_sheet_test.dart— pixel diffs from headless font rasterization) and shows the perf/timing tests flapping between runs. None of these files are touched by this PR; localization tests and release-notes layout tests are green.Platforms
Closes #616
Note
Add Polish localization across iOS and Flutter app
plin l10n.yaml and all existing ARB files.Macroscope summarized 881814e.
Greptile Summary
Adds complete Polish localization support across Flutter locale selection, native iOS resources, release notes, and language labels.
The executed localization harness confirmed English/Polish ARB key parity, placeholder parity, ICU plural-message structure, Polish plural-category behavior,
plandpl_PLlocale resolution evidence, and iOS localization registration. No defects were found.T-Rex validation blocked
flutteranddartare not available on PATH. The focused Polish localization and release-notes widget tests could not run because the environment returnedflutter: not foundanddart: not found. Provision Flutter/Dart 3.9.2+ to run the focused tests.Confidence Score: 5/5
Safe to merge; no blocking failure remains.
No defects were found. Executed checks validated Polish catalog completeness, placeholder consistency, plural-message structure and behavior, locale registration, and iOS localized-resource registration. Flutter runtime tests remain unavailable because the required Flutter/Dart tools are not installed.
What T-Rex did
Reviews (3): Last reviewed commit: "fix(l10n): address remaining Polish revi..." | Re-trigger Greptile