Skip to main content

i18n-frontend-translate

Batches translation of opencollective-frontend locale JSON using show-untranslated and set-translation scripts, with codebase lookup for message IDs when context is unclear. Use when the user asks to translate frontend strings, reduce untranslated entries for a locale, or apply translation rules to lang files.

Ir para a instalação

Informações da origem

Repositório
opencollective/monorepo
Última atividade na origem
8 de junho de 2026 às 15:07
Idioma detectado do SKILL.md
inglês
Estrelas
3
Forks
3

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
i18n-frontend-translate
description
Batches translation of opencollective-frontend locale JSON using show-untranslated and set-translation scripts, with codebase lookup for message IDs when context is unclear. Use when the user asks to translate frontend strings, reduce untranslated entries for a locale, or apply translation rules to lang files.
# i18n Frontend Translate ## When to Use - User gives a **locale** (e.g. `fr`, `pt-BR`) and optionally **instructions**. - Goal is to replace locale strings that still equal English with proper translations, using the repo scripts. ## Preconditions - Work in `opencollective-frontend/` (see [AGENTS.md](../../../AGENTS.md) for multi-repo git rules). - `lang/<locale>.json` must exist. English source of truth is `lang/en.json`. ## Workflow (loop) 1. **User inputs**: `locale` + free-text **instructions** (follow them for register, formality, product terms, and consistency). 2. **List work**: Run show-untranslated with a small batch so the task stays reviewable: ```bash cd opencollective-frontend && npx tsx scripts/i18n/show-untranslated.ts <locale> --limit 30 ``` Increase `--limit` or re-run without `--limit` when draining the backlog. 3. **Per string**: - Read the line: `{id}: {english}`. - If meaning, audience, or UI role is unclear, **find context** before translating (see below). - If the string **should stay English** in this locale (same word in both languages, standard loanword, product name, etc.), **do not** run `set-translation`. Add the **exact English string** (full message value) to `IGNORED[<locale>]` in `scripts/i18n/show-untranslated.ts` so it stops appearing in the report. Keep a short inline comment per entry (e.g. why it is not translated). - Otherwise produce the target-language string that matches instructions and preserves placeholders/markup, then apply: ```bash cd opencollective-frontend && npx tsx scripts/i18n/set-translation.ts <locale> <id> "Translation text" ``` Quote the translation so the shell does not split words. 4. **Repeat** step 2 until show-untranslated returns nothing (or the user stops). 5. **Sanity check**: Optionally re-run show-untranslated for that locale; remaining lines should be actual translation work, or items intentionally listed under `IGNORED`. 6. **Update progress**: After finishing (or when the user stops), refresh locale completion percentages in `lib/constants/locales.js`: ```bash cd opencollective-frontend && npm run langs:update-progress ``` ## Intentionally identical strings (`IGNORED`) The script compares full English message values. When a value is correctly left as English for that locale, register it under `IGNORED` in `opencollective-frontend/scripts/i18n/show-untranslated.ts` (per-locale arrays of exact strings). Otherwise the loop never clears. ## Finding context for a message `id` Use when the English line alone is ambiguous (button vs heading, legal vs casual, technical sense). - Search the frontend for the **id** (appears in `FormattedMessage`, `defineMessages`, `intl.formatMessage`, etc.): ```bash rg -l '<id>' opencollective-frontend --glob '*.{tsx,ts,js,jsx}' ``` Example: `rg -l 'Ri4REE' opencollective-frontend --glob '*.{tsx,ts,js,jsx}'` - Open the matching file(s) and read surrounding UI: labels, modals, routes, audience. - For duplicate or generic English, context disambiguates (e.g. "Order" as noun vs verb). - To compare with other languages or `en.json`, see [.agents/skills/search-i18n-translations/SKILL.md](../search-i18n-translations/SKILL.md). ## Preservation rules - Keep **ICU placeholders** and **rich-text tags** exactly as in English unless the target language requires a different order: `{name}`, `{count}`, `{amount}`, `<Link>...</Link>`, `<Account></Account>`, etc. - Do not invent new placeholders or remove required tags. - Prefer **consistent product terminology** with the rest of `lang/<locale>.json` when the same concept appears elsewhere. ## Scripts reference | Script / npm script | Role | | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | `scripts/i18n/show-untranslated.ts` | Lists `{id}: english` where locale value still equals English, minus per-locale `IGNORED` exact strings. Optional `--limit N`. | | `scripts/i18n/set-translation.ts` | Writes one key: `set-translation.ts <locale> <id> "text"` | | `npm run langs:update-progress` | Recomputes per-locale completion % and writes `lib/constants/locales.js`. Run once when done. | Show-untranslated and set-translation are invoked with `npx tsx` from `opencollective-frontend/`.
Ver no GitHub