--- name: add-locale description: Add a new translation locale to the Polar frontend. Walks through registering the locale, generating translations, wiring the generated file into the i18n package, and updating the public-facing docs. Expects the target locale's ISO 639-1 alpha-2 code (optionally with a BCP-47 region suffix, e.g. `pt-PT`). user-invocable: true allowed-tools: Read Edit Write Bash Grep Glob --- # Add a new translation locale This skill adds a new locale to the Polar frontend i18n package (`clients/packages/i18n`) and the corresponding public docs. Each step produces its own commit so the PR reads cleanly. Ask the user for the locale if they haven't provided one. You need: - `${isoAlpha2}` — the locale code used as the filename and config key (e.g. `ko`, `ja`, `pt-PT`). This is the value appended to `SUPPORTED_LOCALES` verbatim. - `${localeName}` — the human-readable name used in `LOCALE_NAMES` (e.g. `Korean (South Korea)`, `Japanese`). Follow the style of the existing entries in `clients/packages/i18n/src/config.ts`. Throughout this doc, `${isoAlpha2}` is substituted literally into filenames, branch names, commit messages, and identifiers. ## Step 1: Sync main ```bash git checkout main git pull --ff-only ``` Bail out if the working tree isn't clean — ask the user before stashing or discarding anything. ## Step 2: Create the branch ```bash git checkout -b add-locale-${isoAlpha2} ``` ## Step 3: Register the locale Edit `clients/packages/i18n/src/config.ts`: 1. Append `'${isoAlpha2}'` to the `SUPPORTED_LOCALES` tuple (keep the `as const`). 2. Add a `${isoAlpha2}: '${localeName}'` entry to `LOCALE_NAMES`. Quote the key if it contains a dash (e.g. `'pt-PT'`). Commit: ```bash git add clients/packages/i18n/src/config.ts git commit -m "Register ${isoAlpha2}" ``` ## Step 4: Generate the translation file ```bash cd clients/packages/i18n pnpm translate ``` This produces `clients/packages/i18n/src/locales/${isoAlpha2}.ts`. Confirm the file exists and has content before committing. ```bash git add clients/packages/i18n/src/locales/${isoAlpha2}.ts git commit -m "Generate ${isoAlpha2}" ``` ## Step 5: Wire the locale into the i18n entrypoint Edit `clients/packages/i18n/src/index.ts`: 1. Add an import near the other locale imports: ```ts import ${importName} from './locales/${isoAlpha2}' ``` For plain alpha-2 codes use the code itself (`import ko from './locales/ko'`). For hyphenated codes drop the dash and camelCase it to keep a valid identifier (`import ptPT from './locales/pt-PT'`). 2. Add the locale to the `translations` `LocalesRecord` object. Use the bare key when it's a valid identifier (`ko,`) or a quoted key when it's hyphenated (`'pt-PT': ptPT,`). Commit: ```bash git add clients/packages/i18n/src/index.ts git commit -m "Enable ${isoAlpha2}" ``` ## Step 6: Update the public docs Edit `docs/features/checkout/localization.mdx`: - Add `- ${localeName} (${isoAlpha2})` to the "Supported languages" list. - Remove the locale from the "coming soon" list if it was listed there. Commit: ```bash git add docs/features/checkout/localization.mdx git commit -m "Update localization docs" ``` ## Step 7: Hand back to the user Summarize the four commits created on `add-locale-${isoAlpha2}` and leave the branch for the user to push and open a PR. Do not push or open a PR unless asked.