fix(i18n): align Catalan strings with Softcatalà style guide - #3245
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. |
|
Codex review: needs maintainer review before merge. Reviewed August 28, 2026, 7:13 PM ET / 23:13 UTC. ClawSweeper reviewWhat this changesUpdates Catalan settings, iCloud, spend, layout, hook, and plugin labels; adds the missing sidebar key to every catalog; and adds localization regressions plus opt-in rendering coverage. Merge readinessKeep open: the current PR head has no actionable correctness or security finding, and supplied runtime screenshots plus maintainer verification support the localization changes. The remaining gate is the exact-head macOS test run still in progress. Priority: P3 Review scores
Verification
How this fits togetherCodexBar resolves the selected app language through localized resource catalogs before rendering Settings panes and their sidebar. This PR changes the Catalan text returned for existing UI lookup keys without altering provider, sync, or plugin behavior. flowchart TD
A[Selected app language] --> B[Localized resource catalog]
B --> C[Localization lookup]
C --> D[Settings sidebar and panes]
D --> E[Rendered Catalan labels]
Before merge
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Retain the complete-catalog key invariant and land the focused Catalan corrections once exact-head macOS CI passes. Do we have a high-confidence way to reproduce the issue? Yes. The base catalog visibly retained English iCloud and spend labels and lacked the sidebar Plugins key; the supplied maintainer evidence and direct regression identify the resulting Catalan fallback behavior. Is this the best way to solve the issue? Yes. Updating the existing Catalan lookup values and adding the missing shared key is the narrowest solution, while the explicit unchanged values in other catalogs preserve their prior fallback text. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 9769d7394926. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (5 earlier review cycles)
|
steipete
left a comment
There was a problem hiding this comment.
Thanks @pmontp19 for following up on #2010. The untranslated iCloud/spend labels and conflicting duplicate Projects entry are real catalog issues, and this remains a useful one-file maintenance change. I reviewed cf36275d7a8460912afaebcb71bbcda990778925 and the cited style guide.
The guide makes an important distinction that the current command-label changes miss. Under Formes verbals, commands from the user to the computer use the second-person singular imperative; instructions from the computer to the user use the plural/vós form. Converting action labels such as Copy Image, Save..., Install…, hooks_add_rule, and menu_bar_layout_conditional_save wholesale to plural is therefore not alignment with that rule. Please separate command/button labels from explanatory instructions and review the changed keys by their actual call sites. The vós changes in instructional text, such as the layout-editor footer, serve a different role and should not be reverted wholesale.
I also do not accept the bot's claimed visible regression at catalog line 315 as established. That full English key has no current Swift call site; the actual credits toggle uses show_credits_extra_usage_title and show_credits_extra_usage_subtitle in PreferencesMenuPane, and the title retains Mostreu. Editorial consistency for an unused key is a separate question, not evidence that the rendered toggle regressed. Please do not change it merely to satisfy that bot claim.
Before landing, we still need independently reproduced catalog/placeholder checks and representative before/after rendering of the changed Catalan surfaces, using synthetic data without account details. The bot's bootstrap failure happened before its intended locale-check command and is not evidence that the catalog check failed. No live provider account is necessary for this proof. This review is based on source and the style guide, not a claim that I executed your checks or validated the packaged UI.
Rebase of steipete#3245 feedback: split register by call site per guide §Formes verbals (user->computer commands in 2nd-person singular, computer->user instructions in vós), unify connector/token terminology, fix percentages/apostrophes/abbreviations, translate previously-untranslated iCloud Sync and OpenCodex spend blocks, remove duplicate Projects entry.
946af1f to
dd7a227
Compare
|
Thanks both — addressed everything: Register direction (steipete): Re-split by call site per the guide's Formes verbals: commands from user→computer (buttons, menu items, action labels: Line 315 / orphan key: Aligned the unused long key to «Mostreu…» so the whole usage-toggle family is consistent (the two live keys were already untouched at «Mostreu»). Also in this pass: rebased onto current Validation (re-run on the new head Rendering proof (packaged app, launched with Before (current iCloud Sync pane (previously untranslated in every locale): Menu pane — toggle titles keep the established «Mostreu…» convention with third-person descriptive subtitles: Menu bar layout editor (vós instructional hints, tokens, and conditional defaults with corrected agreement): Plugins (connector terminology, tu buttons + vós instructions, quoted «Instal·la…» matches the real button): Hooks (tu button, vós warning): No CHANGELOG entry added (left to maintainers, as noted in the PR body). @clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
Synchronize main, add representative catalog regressions and isolated before/after production-view rendering, and record contributor credit in the changelog. Co-authored-by: Pere <pmontpeo@goil.app>
|
Independent maintainer verification of the revised Catalan catalog, retaining @pmontp19's translations unchanged. The earlier command-versus-instruction finding is addressed: action labels retain the singular command form, while the changed instructions use vós. The quoted Remove action matches the actual existing localized label. I reproduced the duplicate Projects key on main and confirmed that the revised catalog has no duplicate keys and resolves it to Projectes.
The images below are fresh, independent offscreen production-view renders, not a live app/VoiceOver or click-through session. Both variants use the same test harness and synthetic fixture; only the catalog changes. No real provider accounts, credential files, CloudKit engine, or hook execution were used. I inspected light and dark variants locally. Native controls omitted by the offscreen renderer and existing shortened palette labels are not claimed as validated. Offscreen Forms do not expose their children through the test's AX traversal; selected spend/layout labels do, and those are asserted separately.
Reproduce rendering with |
Declare the existing Plugins lookup in every catalog while preserving other locales fallback text. Cover the actual sidebar title and render its native List at minimum width using an isolated test window.
steipete
left a comment
There was a problem hiding this comment.
The earlier requested changes are addressed at db24e777488f29a0d6ead00b80268cb10f2cb8dd. I reviewed the command/instruction distinction against the actual call sites and reproduced the catalog, duplicate-key, and placeholder checks. The final sidebar finding is fixed at its resource lookup, with a direct regression and independent rendering of the actual sidebar. Maintainer before/after production-view rendering is posted, with the offscreen-rendering limitations stated explicitly.
The original catalog changes are preserved, regression expectations and opt-in synthetic rendering are added, and changelog credit is included. Final local tests/checks are green: all 80 full-suite groups passed without retries, and the final focused rebuild passed all 32 localization tests plus the renderer. No remaining actionable finding from source review or the configured Codex autoreview gate. Thanks @pmontp19!
Exact-head CI run 33217721500 passed all required checks, including both macOS shards and both Linux builds. The path-gated musl job was correctly skipped.
|
Landed as 8a20919a3e0b, preserving @pmontp19's translation work and coauthor credit. The final sidebar finding was fixed directly before landing; no remaining change request was handed back to the contributor. The 0.56.1 Unreleased changelog includes the work. Final verification on
Pane before/after proof and actual sidebar before/after proof use synthetic data and offscreen production views. These are not a live app, VoiceOver, provider, or credential-access claim. Native-control/accessibility limitations are documented in the proof comments. An earlier unreproduced shell-harness check failure passed its traced diagnostic and full rerun; the final full suite required no retry. After landing, main was fast-forward pulled and left clean; its tree exactly matches the tested head. No release was published as part of this landing. Thanks @pmontp19! |

















Summary
Follow-up to #2010 by @pmontp19. Update the Catalan catalog for newer settings and spend surfaces, remove an English
Projectsentry that shadows the translation, and align wording with the Softcatalà style guide.Commands from the user to the computer retain the singular imperative; changed computer-to-user instructions and warnings use vós. Quoted action labels follow their actual Swift call sites. Plugin terminology, layout terminology, duration chips, apostrophes, and conditional defaults are made consistent. Newly translated iCloud/spend text preserves the distinction between measured amounts, estimates, and unavailable values.
Production changes remain resource-only. The Catalan catalog includes the translated Plugins sidebar title; the other 22 catalogs declare that existing lookup key with the same
Pluginstext they previously displayed through fallback. Maintainer additions synchronize current main, add representative catalog expectations and a direct sidebar-title regression, provide an opt-in isolated production-view renderer, and add changelog credit. No provider, authentication, sync, or hook runtime behavior changes.Verification
plutil -lint Sources/CodexBar/Resources/ca.lproj/Localizable.strings: passed.node Scripts/check-app-locales.mjs: passed, 22 catalogs / 1,487 English keys.Projectskey; this branch does not.Pluginsinstead ofConnectorsbefore its correction.make check: passed after the sidebar correction, zero strict SwiftLint violations. The new window-rendering helper was moved unchanged into a same-file extension to satisfy the test-class size limit; the final focused rebuild passed afterward.make testafter the sidebar correction: passed, 956 selections / 80 groups, all first-pass successful, zero failures/retries/timeouts (1,807.9 seconds). The opt-in renderer was rebuilt and passed separately after the helper's mechanical relocation.Rendering proof
Independent maintainer before/after evidence covers iCloud, Hooks, layout, and spend views with synthetic data in light and dark appearances. These are offscreen production-view renders, not a live app or VoiceOver session. No real provider account or credentials are needed. The proof comment explicitly describes the renderer's native-control and accessibility limitations.
The contributor's packaged-app screenshots remain in the original proof comment.
The sidebar follow-up proof adds independent before/after rendering of the actual
SettingsSidebarViewat its supported 200-point minimum width, using an owned invisible test window so the native List materializes. It does not open the plugin engine or execute plugins.