# Add Locale

> 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`).

- Skill: `polarsource/add-locale` (Agent Skill)
- Install (CLI): `npx skillmds@latest add polarsource/add-locale`
- Raw SKILL.md: https://api.skillmd.com/api/skills/polarsource/add-locale/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: polarsource (https://skillmd.com/u/polarsource)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/polarsource/add-locale

---


# 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.

