✨ feat(achievements): localize achievement - #66145
Conversation
achievement locale pipeline for catalog, criteria, metrics, and categories Co-authored-by: GPT 5.6 Terra <codex@openai.com>
|
Thanks for implementing the locale-neutral route described in #66138. The premise is verified on current main: the backend still returns English criteria at The PR adds optional i18n types, stable-ID catalog/category/metric resolution, and a PR #66153 is a related follow-up that includes the same pipeline surface plus zh-Hant strings; coordinate the two pieces during salvage. Automated hermes-sweeper review. |
|
This PR provides the shared achievement-localization pipeline: stable-ID catalog lookup, locale-neutral criteria metadata, and localized metric/category support. PR #66153 includes the same pipeline together with the Traditional Chinese (zh-Hant) translations, so it is the intended consolidated PR moving forward. To avoid merging two overlapping implementations, I’m closing this PR in favor of #66153. The remaining work, including the secret-achievement visibility fix and its regression coverage, will be handled there. |
What does this PR do?
Adds locale-ready rendering for the Hermes Achievements dashboard without changing achievement evaluation or scan semantics.
Achievement metadata is now resolved from the dashboard locale using stable achievement IDs, while the backend continues to provide English fallback data. The change also makes criteria templates, metric labels, and category labels localizable without introducing locale-specific scan caches.
Related Issue
Fixes #66138
Type of Change
Changes Made
achievements.cataloglocale support keyed directly byACHIEVEMENTS[].id.web/src/i18n/en.ts.achievements.metrics)achievements.criteria)achievements.categories)criteria_specdata to the achievements API while preserving the existing Englishcriteriafield as a compatibility fallback.How to Test
Run:
Start the dashboard and open /achievements.
Confirm achievement cards, category pills, recent unlocks, and share cards render normally in English.
Add a temporary locale override under achievements.catalog, metrics, criteria, or categories, then switch dashboard language and confirm the corresponding UI text updates while unlock state and filters continue to work.
Checklist
Code
fix(scope):,feat(scope):, etc.)pytest tests/ -qand all tests passDocumentation & Housekeeping
docs/, docstrings) — or N/Acli-config.yaml.exampleif I added/changed config keys — or N/ACONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows — or N/AScreenshots / Logs