Skip to main content

translate

Translate or update keys in packages/i18n/src/locales. Use whenever adding, changing, or reviewing strings across any target locale — enforces do-not-translate terminology, CLDR plural forms, placeholder/tag preservation, per-locale punctuation/register, and the AI-translation review workflow. Required reading before touching any *.json under src/locales.

Source facts

Repository
makeplane/plane
Last source activity
October 14, 2026 at 10:12
Detected SKILL.md language
English
Stars
61,645
Forks
6,226

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
translate
description
Translate or update keys in packages/i18n/src/locales. Use whenever adding, changing, or reviewing strings across any target locale — enforces do-not-translate terminology, CLDR plural forms, placeholder/tag preservation, per-locale punctuation/register, and the AI-translation review workflow. Required reading before touching any *.json under src/locales.
user_invocable
true
<!-- `user_invocable: true` is advisory and follows the same convention as the existing `pr-description.md` and `release-notes.md` skills in this repo. No harness behavior in this codebase keys off the field today; it documents intent for the Claude Code skill registry. The skill is invoked via the slash command (`/translate`) registered in `.claude/commands/translate.md`, or by name when an agent infers relevance. --> # Translate (Plane i18n) Single source of truth for turning English UI strings into every target locale under `packages/i18n/src/locales/`. Follow this skill exactly — every mistake here ships to every user in that language. The locale list grows over time. This skill is intentionally generic: rules apply to any locale present now or added later. When you add a locale not explicitly named below, see **Adding a locale not documented here** at the bottom. Sources distilled from: Microsoft Localization Style Guides, Mozilla L10n, Unicode CLDR plural rules, W3C i18n, Google developer style guide, Apple HIG, GitHub Primer, MQM error typology, Lokalise/Crowdin/Phrase best-practice docs, and Microsoft's AI/LLM-for-translation guidance. **Source of truth**: `packages/i18n/src/locales/en/<namespace>.json`. Every other locale mirrors English key-for-key. The `sync-check.ts` script catches missing / stale / collision keys; it does **not** catch value-quality mistakes. That is what this skill is for. ## When to Use - Adding a new key to any `packages/i18n/src/locales/en/*.json` - Renaming or rewording an English value (every target is now stale) - Adding a new language (copy from `en/`, then translate each file) - Syncing after `pnpm --filter @plane/i18n run sync:check` reports drift - Reviewing any PR that touches `packages/i18n/src/locales/` Skip only for trivial English-only typo fixes that don't change meaning or length meaningfully. ## The Two Iron Rules 1. **Trademarks, brand marks, plan tier names, third-party product names, acronyms, and code tokens are never translated.** Plane's brand marks (Plane, Plane AI, Power K, PQL, Active Cycles, Sticky/Stickies, Intake), plan tiers (Pro, Business, Enterprise), third-party products (GitHub, Slack, Notion, etc.), and acronyms (API, OAuth, etc.) stay Latin in every locale. 2. **CLDR plural categories are mandatory.** Every target locale must include **every** plural keyword the language requires. Missing a form renders the wrong word at runtime and passes `sync-check` silently. Common feature nouns — Cycle, Module, Epic, Page — **are translated** into the target language using the canonical glossary further down. They are not brand marks; they are everyday words that belong in the user's language. The rest of this skill explains how to execute on those rules. ## Do-Not-Translate (DNT) Glossary For each term: the source, the required rendering per script group, and **forbidden renderings** that have appeared historically and must be reverted when seen. ### Plane brand & features | Source term | Latin locales (fr, es, it, de, pt-BR, pl, cs, sk, ro, tr-TR, vi-VN, id) | ja (katakana-default) | ko (Hangul-default) | zh-CN / zh-TW | ru | ua | bg | **Forbidden** (never produce) | | ---------------------------------- | ----------------------------------------------------------------------- | --------------------- | ------------------- | --------------------------------------------- | ----------------- | ----------------- | ----------------- | --------------------------------------------------------------------------------- | | **Plane** | Plane | Plane | Plane | Plane | Plane | Plane | Plane | 飛行機, 飞机, 비행기, Самолёт, Літак, Avion, Avião, Aereo, Flugzeug | | **Plane AI** (formerly PI Chat) | Plane AI | Plane AI | Plane AI | Plane AI | Plane AI | Plane AI | Plane AI | Чат ИИ, AI 聊天, AIチャット, AI 채팅, Chat IA, AI Çet, PI Chat (legacy) | | **Power K** | Power K | Power K | Power K | Power K | Power K | Power K | Power K | Command K, Command Palette, コマンドパレット, 命令面板, Палитра команд | | **PQL** | PQL | PQL | PQL | PQL | PQL | PQL | PQL | any expansion of the acronym into the target language | | **Intake** (feature name) | Intake | Intake | Intake | Intake | Intake | Intake | Intake | Inbox, 受信箱, 收件箱, Входящие, Triage, Boîte de réception | | **Active Cycles** (workspace view) | Active Cycles | Active Cycles | Active Cycles | Active Cycles | Active Cycles | Active Cycles | Active Cycles | Translate as a unit; never split into generic "active" + localized "cycles" | | **Sticky** / **Stickies** | Sticky / Stickies | Sticky / Stickies | Sticky / Stickies | Sticky / Stickies (Latin inside Chinese text) | Sticky / Stickies | Sticky / Stickies | Sticky / Stickies | 便签, 便利貼, メモ, 付箋, スティッキー, 메모, 스티키, заметка, Стикер, Note, Nota | | **Pro** (plan tier) | Pro | Pro | Pro | Pro | Pro | Pro | Pro | Профессиональный, プロフェッショナル, 专业版, 專業版, Profesional | | **Business** (plan tier) | Business | Business | Business | Business | Business | Business | Business | Бизнес, ビジネス, 商业版, 商務版, Negocios, Negócios | | **Enterprise** (plan tier) | Enterprise | Enterprise | Enterprise | Enterprise | Enterprise | Enterprise | Enterprise | Корпоративный, エンタープライズ, 企业版, 企業版, Empresarial | ### Plane feature noun translation glossary (translate, do not preserve) These are common nouns. **Translate them into the target language** using the canonical form below. This follows Microsoft, Apple, and Mozilla style guides for product-UI translation: feature common nouns belong in the user's language; only trademarks, brand marks, and acronyms stay Latin. Leaving these in Latin in non-Latin locales reads as half-translated and is a measurable quality defect. Use the table verbatim — never coin new variants; never leave the Latin form in the locale value. | Source | zh-CN | zh-TW | ja | ko | ru | ua | bg | de | fr | es | it | pt-BR | pl | cs | sk | ro | tr-TR | vi-VN | id | | ----------- | ----- | ----- | ---------- | ------ | -------- | -------- | -------- | ------ | ------- | ------- | ------ | ------- | ------ | ------- | ------- | ------- | -------- | ------ | ------- | | **Cycle** | 周期 | 週期 | サイクル | 사이클 | Цикл | Цикл | Цикъл | Zyklus | Cycle | Ciclo | Ciclo | Ciclo | Cykl | Cyklus | Cyklus | Ciclu | Döngü | Chu kỳ | Siklus | | **Cycles** | 周期 | 週期 | サイクル | 사이클 | Циклы | Цикли | Цикли | Zyklen | Cycles | Ciclos | Cicli | Ciclos | Cykle | Cykly | Cykly | Cicluri | Döngüler | Chu kỳ | Siklus | | **Module** | 模块 | 模組 | モジュール | 모듈 | Модуль | Модуль | Модул | Modul | Module | Módulo | Modulo | Módulo | Moduł | Modul | Modul | Modul | Modül | Mô-đun | Modul | | **Modules** | 模块 | 模組 | モジュール | 모듈 | Модули | Модулі | Модули | Module | Modules | Módulos | Moduli | Módulos | Moduły | Moduly | Moduly | Module | Modüller | Mô-đun | Modul | | **Epic** | 史诗 | 史詩 | エピック | 에픽 | Эпик | Епік | Епик | Epic | Epic | Epic | Epic | Epic | Epik | Epik | Epik | Epic | Epik | Epic | Epik | | **Epics** | 史诗 | 史詩 | エピック | 에픽 | Эпики | Епіки | Епици | Epics | Epics | Epics | Epics | Epics | Epiki | Epiky | Epiky | Epice | Epikler | Epic | Epik | | **Page** | 页面 | 頁面 | ページ | 페이지 | Страница | Сторінка | Страница | Seite | Page | Página | Pagina | Página | Strona | Stránka | Stránka | Pagină | Sayfa | Trang | Halaman | | **Pages** | 页面 | 頁面 | ページ | 페이지 | Страницы | Сторінки | Страници | Seiten | Pages | Páginas | Pagine | Páginas | Strony | Stránky | Stránky | Pagini | Sayfalar | Trang | Halaman | Notes: - Single-form locales (zh-CN, zh-TW, ja, ko, vi-VN, id) use the same form for singular and plural — the column repeats by design. - Slavic locales (ru, ua, pl, cs, sk) show **nominative singular** and **nominative plural**. Inside ICU `{count, plural, ...}` blocks, use the case-correct form per CLDR keyword (see the Slavic case-form table further down). - Some Latin locales (fr, vi-VN, id) have forms identical to English (`Cycle`, `Module`, `Page`) — that's the natural cognate, not a Latin-preservation rule. - **Epic / Epics**: stays Latin in most Latin locales because there's no clean cognate (Spanish `épico` is for poetry/film; same for it/pt-BR/de/fr). Slavic locales use phonetic transliteration that's standard in their software industry (Эпик, Епік, Epik). CJK locales use the literal/transliterated form (史诗, エピック, 에픽). - **Generic uses translate normally and don't follow this glossary:** `next page` (paginator), `the page` (browser refresh), `status page`, `web page`, `life cycle`, `release cycle`, `rate-limit cycle`, `cycle of releases` — these are not the Plane Cycle/Page feature; translate them as ordinary words in the surrounding prose. - When editing an existing file, migrate occurrences you are already touching. Do not bulk-rewrite unrelated strings in the same PR — land a separate sweep PR with the `chore(i18n):` prefix. #### Slavic case forms inside ICU plural blocks When a Slavic plural block counts a Plane feature noun, use these forms: | Locale | Term | one (nom.sg.) | few | many | other | | ------ | -------- | ------------- | -------- | -------- | -------- | | **ru** | Цикл | Цикл | Цикла | Циклов | Цикла | | **ru** | Модуль | Модуль | Модуля | Модулей | Модуля | | **ru** | Эпик | Эпик | Эпика | Эпиков | Эпика | | **ru** | Страница | Страница | Страницы | Страниц | Страницы | | **ua** | Цикл | Цикл | Цикла | Циклів | Цикла | | **ua** | Модуль | Модуль | Модуля | Модулів | Модуля | | **ua** | Епік | Епік | Епіка | Епіків | Епіка | | **ua** | Сторінка | Сторінка | Сторінки | Сторінок | Сторінки | | **pl** | Cykl | Cykl | Cykle | Cykli | Cyklu | | **pl** | Moduł | Moduł | Moduły | Modułów | Modułu | | **pl** | Epik | Epik | Epiki | Epików | Epika | | **pl** | Strona | Strona | Strony | Stron | Strony | | **cs** | Cyklus | Cyklus | Cykly | Cyklu | Cyklů | | **cs** | Modul | Modul | Moduly | Modulu | Modulů | | **cs** | Epik | Epik | Epiky | Epiku | Epiků | | **cs** | Stránka | Stránka | Stránky | Stránky | Stránek | | **sk** | Cyklus | Cyklus | Cykly | Cyklu | Cyklov | | **sk** | Modul | Modul | Moduly | Modulu | Modulov | | **sk** | Epik | Epik | Epiky | Epiku | Epikov | | **sk** | Stránka | Stránka | Stránky | Stránky | Stránok | Per CLDR for ru/ua: `one` fires for 1, 21, 31… (nom.sg.); `few` for 2–4, 22–24… (gen.sg.); `many` for 0, 5–20, 25–30… (gen.pl.); `other` for non-integer counts (gen.sg.). For pl: `one` (1), `few` (2–4 not 12–14, nom.pl.), `many` (0, 5–20, gen.pl.), `other` (decimals, gen.sg.). cs/sk: `one` (1), `few` (2–4, nom.pl.), `many` (decimals, gen.sg.), `other` (0, 5+, gen.pl.). Bulgarian brand names remain Latin. Forbidden substitutions include `Самолет` for Plane, `Входящи` for Intake, `Бележка` or `Стикер` for Sticky, and `Бизнес` or `Корпоративен` for plan tiers. The English word "sticky" in "sticky toolbar" is an ordinary adjective and translates normally. ### Third-party products & standards (always Latin, every locale) GitHub, GitLab, Bitbucket, Slack, Discord, Zoom, Microsoft Teams, Jira, Linear, Asana, Notion, Confluence, Trello, Figma, Google, Google Drive, Google Calendar, Google Docs, Google Sheets, Gmail, YouTube, Dropbox, Zapier, Tiptap, ProseMirror, Yjs, Hocuspocus, Socket.IO, React, TypeScript, JavaScript, Python, Django, PostgreSQL, Redis, RabbitMQ.
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub