Skip to content

Add native Polish localization support#1253

Open
Yuxin-Qiao wants to merge 5 commits into
steipete:mainfrom
Yuxin-Qiao:feat/polish-native-localization
Open

Add native Polish localization support#1253
Yuxin-Qiao wants to merge 5 commits into
steipete:mainfrom
Yuxin-Qiao:feat/polish-native-localization

Conversation

@Yuxin-Qiao
Copy link
Copy Markdown
Contributor

Summary

  • add Polish (pl) as a selectable app language
  • add pl.lproj/Localizable.strings for native Polish localization
  • add language_polish label across existing locales
  • improve Polish translations for key user-facing UI (General/Display/Advanced, quota warnings, status/debug text)

Testing

  • ran localization-focused swift test targets
  • in this environment, SwiftPM expanded into a large full build graph; final pass/fail summary was not captured

@clawsweeper
Copy link
Copy Markdown

clawsweeper Bot commented May 31, 2026

Codex review: found issues before merge. Reviewed June 1, 2026, 4:49 AM ET / 08:49 UTC.

Summary
Adds pl as a selectable app language, introduces pl.lproj/Localizable.strings, and adds language_polish labels across existing locale tables.

Reproducibility: yes. for this PR: comparing the PR-head Polish and English string tables shows 815 of 1029 Polish values still match English, and the supplied screenshots show mixed Polish/English UI after selecting Polish. I did not run the macOS app locally.

Review metrics: 1 noteworthy metric.

  • Polish values unchanged: 815 of 1029 match English. This quantifies the remaining localization gap before exposing pl to users.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🧂 unranked krab
Result: blocked by patch quality or review findings.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Translate or remove the English-matching Polish entries before exposing pl.
  • After updating the resource, post a final focused localization test result or CI link with a pass/fail summary.

Risk before merge

  • [P2] Adding pl.lproj means Polish System-mode users can move from the current English fallback to a mixed Polish/English UI after upgrade.
  • [P1] Human translation quality remains the main blocker: the screenshots prove the app can select Polish, but source comparison still shows most values match English.
  • [P1] The PR body reports a localization-focused test run, but it does not include a final pass/fail summary.

Maintainer options:

  1. Finish Polish before exposure (recommended)
    Complete and review the Polish table, or temporarily remove the pl language option so Polish System-mode users do not receive a mixed UI.
  2. Accept partial localization intentionally
    Maintainers can choose to ship the mixed locale, but the PR should state that English fallback text is expected for the remaining keys.
  3. Pause for a complete locale pass
    If native Polish is not ready, pause or close this branch and return with a narrower completed localization update.

Next step before merge

  • [P2] Needs human translation-quality review and a maintainer decision on whether partial Polish is acceptable; an automated repair should not generate hundreds of translations.

Security
Cleared: The diff only adds localization resources and a language enum case; I found no concrete security or supply-chain concern.

Review findings

  • [P1] Finish the Polish resource before enabling it — Sources/CodexBar/Resources/pl.lproj/Localizable.strings:6
Review details

Best possible solution:

Ship Polish only after the pl table is substantially translated and human-reviewed, or keep Polish out of the selectable/system localization path until it is ready.

Do we have a high-confidence way to reproduce the issue?

Yes for this PR: comparing the PR-head Polish and English string tables shows 815 of 1029 Polish values still match English, and the supplied screenshots show mixed Polish/English UI after selecting Polish. I did not run the macOS app locally.

Is this the best way to solve the issue?

No: enabling pl while the resource is mostly English is not the narrowest maintainable solution. The safer path is to complete and review the Polish table before exposing the locale, or hold the locale back until it is complete.

Full review comments:

  • [P1] Finish the Polish resource before enabling it — Sources/CodexBar/Resources/pl.lproj/Localizable.strings:6
    The new Polish table is still mostly English: 815 of 1029 values match en, starting with user-facing provider/login/account strings here. Since localizedBundle() will load pl.lproj for explicit Polish and for Polish System-mode users, this would upgrade users from the current English fallback into a visibly mixed UI; complete or hold back the locale before exposing pl.
    Confidence: 0.96

Overall correctness: patch is incorrect
Overall confidence: 0.95

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 4756ba06bf42.

Label changes

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient. The contributor posted screenshots of the menu and settings panes with Polish selected, which is sufficient visual proof even though it exposes remaining English fallback copy.
  • add proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The contributor posted screenshots of the menu and settings panes with Polish selected, which is sufficient visual proof even though it exposes remaining English fallback copy.
  • add status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (screenshot): The contributor posted screenshots of the menu and settings panes with Polish selected, which is sufficient visual proof even though it exposes remaining English fallback copy.
  • remove status: 📣 needs proof: Current PR status label is status: ⏳ waiting on author.

Label justifications:

  • P2: Native Polish support is a normal user-facing improvement with limited blast radius, but it needs translation-quality cleanup before merge.
  • merge-risk: 🚨 compatibility: Adding pl.lproj can change Polish System-mode users from the existing English fallback to a partially English Polish table after upgrade.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🦞 diamond lobster and patch quality is 🧂 unranked krab.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (screenshot): The contributor posted screenshots of the menu and settings panes with Polish selected, which is sufficient visual proof even though it exposes remaining English fallback copy.
  • proof: sufficient: Contributor real behavior proof is sufficient. The contributor posted screenshots of the menu and settings panes with Polish selected, which is sufficient visual proof even though it exposes remaining English fallback copy.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The contributor posted screenshots of the menu and settings panes with Polish selected, which is sufficient visual proof even though it exposes remaining English fallback copy.
Evidence reviewed

What I checked:

  • Repository policy read: The full target AGENTS.md was read; its guidance on focused tests, UI proof, avoiding prompt-prone validation, and conservative scoped changes informed this review. (AGENTS.md:1, 4756ba06bf42)
  • Current language list: Current main has selectable languages through Swedish but no Polish language case, so this PR adds a new user-visible language option rather than repairing an existing Polish option. (Sources/CodexBar/PreferencesGeneralPane.swift:5, 4756ba06bf42)
  • PR exposes Polish: At PR head 891fd90, AppLanguage adds case polish = "pl" and labels it through language_polish. (Sources/CodexBar/PreferencesGeneralPane.swift:14, 891fd900b171)
  • Polish table completeness: A PR-head comparison found 1029 Polish entries, with 815 values matching English and 695 entries where key and value are identical; early examples include provider/login/account strings. (Sources/CodexBar/Resources/pl.lproj/Localizable.strings:6, 891fd900b171)
  • Localization loading behavior: localizedBundle() loads an explicit language lproj when selected and in System mode uses the resource bundle's preferred localization before falling back to English, so adding pl.lproj changes Polish preferred-localization behavior. (Sources/CodexBar/Localization.swift:67, 4756ba06bf42)
  • Real behavior proof: The posted screenshots were downloaded and inspected; they show Polish selected and visible Polish UI, while also showing English leftovers such as status, reset, and credit strings. (891fd900b171)

Likely related people:

  • steipete: The current shallow history/blame for the language picker, localization helper, and resource tables points to Peter Steinberger's v0.32.2 import/release commit, making him the best routing candidate from current-main history. (role: recent localization area contributor; confidence: medium; commits: 3f419060f875; files: Sources/CodexBar/PreferencesGeneralPane.swift, Sources/CodexBar/Localization.swift, Sources/CodexBar/Resources/en.lproj/Localizable.strings)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 545c87d4ab

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +1 to +6
/* English localization for CodexBar (base/fallback) */

" providers" = " providers";
"(System)" = "(System)";
"30d" = "30d";
"A managed Codex login is already running. Wait for it to finish before adding " = "A managed Codex login is already running. Wait for it to finish before adding ";
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Translate the Polish strings before enabling Polish

When users select the new Polish language, localizedBundle() will load this pl.lproj file, but the file is still mostly the English/base table (864 of 1029 entries match English, starting with the provider/login/account strings here). That makes the newly advertised Polish option render large parts of the app in English rather than Polish; translate these entries before shipping the language option.

Useful? React with 👍 / 👎.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels May 31, 2026
@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. labels Jun 1, 2026
@Yuxin-Qiao
Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Addressed in latest commits (c87caae, 891fd90), with additional Polish localization updates across key user-facing surfaces.

Proof (Polish selected in app)

1) Menu popup (core usage card + actions)

ABF7A6B1-97F4-4A90-ADAB-3A67B6462012

2) General settings pane

05E3127A-3371-4355-A166-CCD7D572D84A

3) Providers pane

C9BDD9C6-E59A-4F84-A3DB-00B3FBDCFA19

4) Display settings pane

5C15844C-1C1D-457C-847A-9B4D2996072E

5) Advanced settings pane

6AA402A5-2FA3-4983-915D-9AE53D6B45EC

Notes

  • Polish is explicitly selected.
  • Updated many remaining menu/chart/action strings that previously fell back to English.
  • Hidden is still intentionally left as-is for now (tracked separately).

@clawsweeper
Copy link
Copy Markdown

clawsweeper Bot commented Jun 1, 2026

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@Yuxin-Qiao Yuxin-Qiao changed the title Add native Polish app language support Add native Polish localization support Jun 1, 2026
@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P2 Normal priority bug or improvement with limited blast radius. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient Contributor real behavior proof is sufficient. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant