Add native German localization support#1245
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 11, 2026, 1:32 PM ET / 17:32 UTC. Summary Reproducibility: unclear. The review failed before ClawSweeper could establish a reproduction path. Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Risk before merge
Maintainer options:
Next step before merge
Review detailsBest possible solution: Retry the Codex review after fixing the execution failure. Do we have a high-confidence way to reproduce the issue? Unclear. The review failed before ClawSweeper could establish a reproduction path. Is this the best way to solve the issue? Unclear. Retry the review first so ClawSweeper can evaluate the actual issue and fix direction. AGENTS.md: unclear because the file could not be read completely. Codex review notes: model internal, reasoning high; reviewed against 3c2d23d1739a. Label changesLabel changes:
Label justifications:
Evidence reviewedWhat I checked:
Likely related people:
What the crustacean ranks mean
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
|
d2dd731 to
de4da39
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d2dd731527
ℹ️ 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".
| "Cookie: \\u{2026}\\\n\\\nor paste a cURL capture from the Abacus AI dashboard" = "Cookie: \\\\u{2026}\\\\\\n\\\\\\noder fügen Sie eine cURL-Erfassung aus dem Abacus AI-Dashboard ein"; | ||
| "Cookie: \\u{2026}\\\n\\\nor paste the __Secure-next-auth.session-token value" = "Cookie: \\\\u{2026}\\\\\\n\\\\\\noder fügen Sie den __Secure-next-auth.session-token-Wert ein"; | ||
| "Cookie: \\u{2026}\\\n\\\nor paste the kimi-auth token value" = "Cookie: \\\\u{2026}\\\\\\n\\\\\\noder fügen Sie den Kimi-Auth-Token-Wert ein"; |
There was a problem hiding this comment.
Use runtime placeholder keys for cookie prompts
When German is selected and a user opens the Abacus, Perplexity, or Kimi provider settings, these placeholders are looked up via L(self.field.placeholder ?? "") using the runtime strings from the provider descriptors, which contain an actual ellipsis and newline characters. These new German keys instead encode the Swift source escapes (\u{2026}/\n), and the values double-escape them too, so the lookup misses and falls back to the English placeholder (or would display literal escape sequences if matched).
Useful? React with 👍 / 👎.
| let previousLanguage = UserDefaults.standard.object(forKey: "appLanguage") | ||
| defer { |
There was a problem hiding this comment.
Restore AppleLanguages after the German test
This test saves only appLanguage, but settings.appLanguage = "de" below also writes UserDefaults.standard["AppleLanguages"]. After this test runs in the same test process, later tests that exercise system-language localization can inherit de even though appLanguage was restored, making the suite order-dependent; save and restore AppleLanguages as the existing language preference test does.
Useful? React with 👍 / 👎.
|
Thanks for the review. I’ve now added real behavior proof from a running build with German selected ( Real behavior proof (packaged/running app UI)
Validation rerun
I’ve addressed the proof gap raised by ClawSweeper and attached redacted real-UI evidence as requested. @clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
de4da39 to
c4a3510
Compare
c4a3510 to
a7e328f
Compare
4bfbbe5 to
d545248
Compare
|
Maintainer update: rebased onto current Proof on exact head
|
Add language_dutch/french/ukrainian/vietnamese labels to de.lproj and register language_german in LocalizationLanguageCatalogTests so the invariant test count matches AppLanguage.allCases. Main grew AppLanguage cases (dutch, ukrainian, vietnamese) and Localizable.strings catalogs after this PR was opened, so the rebase needed these parity fixes for the new invariant test.
Co-authored-by: Cursor <cursoragent@cursor.com>
d545248 to
2a852ce
Compare





Summary
This PR adds first-class German (
de) app language support and significantly improves German translation quality/coverage across CodexBar’s user-facing UI.What’s included
de.lproj/Localizable.strings.language_germanlanguage-label key across localization files so German appears correctly in the language picker.appLanguage = "de"resolves German strings.Validation
plutil -lint Sources/CodexBar/Resources/de.lproj/Localizable.strings✅swift test --filter PreferencesPaneSmokeTests✅Notes
%@,%d, interpolation tokens, escaped sequences) remains intact.