# Add Localization

> Add or update a language translation in the privacy policy generator. Trigger when user says: "add {language} translation", "add locale", "translate to {language}", "add localization for {language}", or when a user wants to contribute a new language.

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

---


# Add Localization

## Quick Steps

### 1. Create locale JSON from English

```sh
cp src/locales/en.json src/locales/{code}.json
```

Use the ISO 639-1 language code (e.g., `es`, `fr`, `de`, `ja`, `pt`, `zh`).

### 2. Translate all string values

Edit the new JSON file. **Only translate values, never keys.**

✅ Correct:
```json
"wizard.step1.tagline": "Genera un documento personalizado..."
```

❌ Wrong — don't change keys:
```json
"wizard.step1.tagline_es": "Genera un documento personalizado..."
```

### 3. Preserve `{{ variable }}` placeholders

Keep placeholders like `{{ appName }}`, `{{ platformDesc }}`, `{{ deviceType }}` unchanged in the translated text.

### 4. Build

```sh
make build
```

The Go build tool detects every JSON file in `src/locales/` and generates the HTML and JavaScript for each locale.

Open `public/index.html` — the language switcher dropdown now includes the new language.

## Validation Checklist

- [ ] JSON file is valid (no trailing commas, no duplicate keys)
- [ ] All `{{ variable }}` placeholders preserved
- [ ] UI labels, placeholders, help text translated
- [ ] Legal templates translated (requires native-speaking legal review)
- [ ] FAQ and disclaimer content translated
- [ ] Platform vocabulary translated (device types, OS, browser strings)
- [ ] Language appears in the dropdown
- [ ] `make build` succeeds
- [ ] `make check` passes (Go vet, build, golden, and Playwright checks)

## Important Notes

- **Legal text needs professional review**: Have a native-speaking lawyer review legal template translations.
- **Don't translate third-party service names** in `thirdpartyservices.yml` — only the `name` field in the locale JSON if you add locale-specific names.
- **Meta tags** (`meta.*` keys) are updated dynamically via JS after page load.

