JustHold i18n
Reuse this skill
Copy justhold-i18n into your project's .agents/skills/justhold-i18n/ (or your Cursor skills folder). The JustHold app source stays private — these playbooks are published so you can reuse our engineering conventions.
- Locales:
en(default, unprefixed) andzh-hant(prefixed), defined ini18n/routing.tswithlocalePrefix: 'as-needed'andlocaleDetection: false(e.g./holdings,/docs,/zh-hant/holdings,/zh-hant/docs). - Public app routes live under
app/[locale]/…. UI copy lives inmessages/en.jsonandmessages/zh-hant.json— add keys there; don't hardcode user-facing strings in components when a message namespace already exists. - Prefer English first (matches admin); ship
zh-hantwhen a translation is ready. UselocalizedPathname(locale, path)when building absolute URLs so the default locale stays unprefixed. - Admin exception:
app/admin/is English-only (no[locale]segment). Don't wrap admin screens in next-intl routing. - Content/R2 locale keys must match routing:
zh-hantanden(seelib/r2.tsand thejusthold-mdx-contentskill).