refactor(i18n): name gallery filters by property instead of "Show X" - #4149
refactor(i18n): name gallery filters by property instead of "Show X"#4149sdornan wants to merge 4 commits into
Conversation
The bool filters are tri-state (All / Yes / No), so a verb-prefixed label read as a double negative: "Show missing" set to No. Name them after the property being filtered, matching the "Has saves" trio that already did. Several labels also named the wrong thing. "Show verified" is a DAT hash match via Hasheous, not a generic verification, and "Show missing" is specifically missing from disk. The section heading becomes "Properties" so it sits parallel with the drawer's other two headings (Platforms, Tags), and its key is renamed to match. Also corrects the RetroAchievements casing, which disagreed with every other string referencing it. These keys are shared with the v1 filter drawer, so its labels change too. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
en_US carried British spellings (favourites, catalogues) while en_GB carried American ones (color). Each locale now uses its own throughout. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Greptile SummaryThe PR renames gallery boolean-filter labels to describe the filtered properties, replaces the section heading with “Properties,” and aligns all 18 locale dictionaries. It also corrects US/UK spelling differences and updates smart-collection fallback labels and their existing test.
Confidence Score: 5/5The PR appears safe to merge; no concrete functional, compatibility, localization-parity, or security defects were identified. The renamed translation key is present in every enabled locale with no remaining consumer of the removed key, while smart-collection labels remain display-only and do not alter persisted filter criteria. Important Files Changed
Reviews (1): Last reviewed commit: "fix(i18n): use each English locale's own..." | Re-trigger Greptile |
|
There's probably a few other spots in the system that use only |
There was a problem hiding this comment.
Pull request overview
This PR refactors the gallery boolean tri-state filter labels to be property-based (instead of a repeated “Show …” verb prefix), renames the section heading from “Show” to “Properties”, and fixes en_US vs en_GB dialect spellings in a few strings.
Changes:
- Update v2 smart-collection criteria defaults and the related test assertion to match the new property-style labels.
- Update the v2 gallery filter drawer section heading to use
platform.properties. - Update all 18 locale
platform.jsonfiles for the renamed heading key and revised filter label strings, plus a few en_US/en_GB dialect corrections in other namespaces.
Reviewed changes
Copilot reviewed 25 out of 25 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| frontend/src/v2/utils/smartCollectionCriteria.ts | Updates default fallback labels for several boolean criteria to match the new property-style wording. |
| frontend/src/v2/utils/smartCollectionCriteria.test.ts | Updates the negative tri-state summary assertion to the new “Unmatched” label. |
| frontend/src/v2/components/Gallery/FilterDrawer.vue | Switches the boolean filter section heading from platform.show to platform.properties. |
| frontend/src/locales/bg_BG/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/cs_CZ/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/de_DE/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/en_GB/platform.json | Adds properties and updates boolean filter labels, keeping en_GB spellings. |
| frontend/src/locales/en_US/platform.json | Adds properties and updates boolean filter labels, using en_US spellings. |
| frontend/src/locales/es_ES/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/fr_FR/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/hu_HU/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/it_IT/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/ja_JP/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/ko_KR/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/pl_PL/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/pt_BR/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/ro_RO/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/ru_RU/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/tr_TR/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/zh_CN/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/zh_TW/platform.json | Adds properties and updates boolean filter labels to property-based wording. |
| frontend/src/locales/en_US/setup.json | Fixes en_US dialect spelling (“catalogues” to “catalogs”). |
| frontend/src/locales/en_US/rom.json | Fixes en_US dialect spelling (“favourites” to “favorites”). |
| frontend/src/locales/en_GB/settings.json | Fixes en_GB dialect spelling (“Color” to “Colour”). |
| frontend/src/locales/en_GB/play.json | Fixes en_GB dialect spelling (“color” to “colour”). |
Suppressed comments (1)
frontend/src/locales/en_US/platform.json:97
show-verifiedis now “Hash verified”, butshow-verified-only/show-not-verified-onlystill refer to generic “verified/non-verified” ROMs.
To avoid reintroducing the ambiguity this PR is addressing, update the related “only” strings across locales to explicitly reference hash/DAT verification (for example, “Show hash-verified ROMs only”).
"show-verified": "Hash verified",
"show-verified-only": "Show verified ROMs only",
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The yes/no buttons kept the vaguer wording ("Show verified ROMs only")
while their row labels became specific ("Hash verified"). These strings
are the buttons' accessible names, so a screen reader announces them
without the row label alongside for context.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The message was a hardcoded English literal, so it stayed English in every locale. It also carried a British spelling in a file the rest of the app writes as American. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
The gallery's bool filters are tri-state (All / Yes / No), but seven of them were labelled with a verb prefix. That made "Show missing" set to No read as a double negative, and the shared "Show" prefix was really just the section heading hoisted into each row.
They're now named after the property being filtered, matching the
Has saves/Has save states/Has soundtracktrio that already read correctly:Two labels also named the wrong thing:
verifiedis a DAT/hash match via Hasheous rather than generic verification, andmissingis specificallymissing_from_fs. Neither was guessable from the old label.The section heading moves from Show to Properties so it sits parallel with the drawer's other two headings (Platforms, Tags), and
platform.showis renamed toplatform.propertiesto match its value. Wording is picked per locale rather than mapped from one word: CJK takes the native 属性 / 屬性 / 속성 over the katakana loan, which reads as a file-properties dialog.This also corrects the RetroAchievements casing, which disagreed with every other string referencing it.
Note
These keys are shared with the v1 filter drawer, so v1's labels change too. Forking them into v2-only keys would mean 8 duplicate keys across 18 locales for a UI slated for deletion, so the shared rename seemed like the right call. v1 was verified visually.
A second commit fixes an unrelated dialect problem found while auditing:
en_UScarried British spellings (favourites, catalogues),en_GBcarried American ones (color).All 18 locales are updated in the same change. Where a translation had drifted from the English meaning it was corrected rather than carried over:
bg_BGhad playables as "изпълнимите" (executable),de_DEhad matched as "zugewiesene" (assigned).Verification
vue-tsc, 667/667 vitest,npm run build, ESLint, i18n parity + sort, and Trunk all pass. Manually verified in the browser: v2 light/dark at 1440px plus 390px and 320px, the v1 drawer in both themes, and live renders in fr/de/ja/hu/ru with no label wrapping or clipping in any locale.AI assistance disclosure
Written with Claude Code (Opus 5), which did the full change: label selection, all 18 locale translations, the key rename, and verification. Reviewed by me before submission.
Checklist
smartCollectionCriteriaassertion; no new logic to test)Screenshots