| title | intent | tags | prereqs | complexity | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
AI Locale Translation |
Translate missing ChurchCRM terms using Claude Code with church-specific vocabulary before each release |
|
|
intermediate |
Automates translation of missing terms across all 45+ locales using Claude Code, applying church-specific ecclesiastical vocabulary rules for each denomination and region.
No API key or external service is required — translations run directly inside Claude Code.
Every new UI string added to ChurchCRM creates a translation gap in 45+ languages. The AI translation system bridges that gap at release time by:
- Reading empty batch files from
locale/terms/missing/{locale}/*.json(generated bynpm run locale:download) - Translating missing values with Claude Code, applying denomination-aware church vocabulary
- Writing translated values back into the same batch files
- User uploads those files to POEditor (source of truth), then pulls down via
npm run locale:download
Key files:
- Helper script:
locale/scripts/locale-translate.js(file I/O only, no AI calls) - Claude Code skill:
.claude/commands/locale-translate.md— invoke with/locale-translate - Release workflow:
.claude/commands/locale-release.md— invoke with/locale-release
# 1. Generate untranslated-term batches (and download translations)
npm run locale:download
# 2. Preview what needs translation
npm run locale:translate:listThen in Claude Code:
/locale-translate --all
Then upload locale/terms/missing/**/*.json to POEditor, and pull back:
npm run locale:download| Skill | Command | What it does |
|---|---|---|
/locale-translate |
--locale <code> |
Translate one locale |
/locale-translate |
--all |
Translate all locales with missing terms |
/locale-translate |
--list |
List locales with missing terms |
/locale-release |
(no args) | Full guided release workflow |
| Script | What it does |
|---|---|
npm run locale:download |
Download untranslated-term batches and approved translations from POEditor |
npm run locale:translate:list |
List locales with untranslated terms |
npm run locale:audit |
Show translation coverage report |
npm run locale:download |
Pull approved translations from POEditor |
These rules are applied automatically by the /locale-translate skill:
| English (CRM generic) | Church-appropriate translation |
|---|---|
| Members / Users / Clients | Congregation / Parishioners / Faithful |
| Leads / Prospects | Visitors / Seekers |
| Groups | Small Groups / Life Groups / Ministries |
| Giving / Payments / Transactions | Offerings / Tithes / Stewardship / Contributions |
| Pledge | Financial pledge / commitment to the church |
| Deposit (church finance) | Offering deposit |
| Cart (people selection) | Selection / List |
| Family | Family — keep as-is |
Standard UI terms (Save, Cancel, Delete, etc.) → normal native-language UI translations.
Format specifiers (%d, %s, %1$s, etc.) are preserved verbatim.
| Country | Locale(s) | Denomination |
|---|---|---|
EG |
ar (Egyptian Arabic) |
Coptic Orthodox — كنيسة, قداس, رعية, تقدمة |
IT |
Italian | Roman Catholic — parrocchia, offertorio, fedeli |
ES, MX, CO, AR, SV |
Spanish variants | Roman Catholic — parroquia, ofrenda, feligreses |
FR |
French | Catholic / Ecumenical — paroisse, offrande, fidèles |
PT, BR |
Portuguese variants | Catholic / Mixed Evangelical |
PL |
Polish | Roman Catholic — parafia, ofiara, wierni |
RO |
Romanian | Orthodox / Catholic |
RU |
Russian | Russian Orthodox — приход, пожертвование, прихожане |
UA |
Ukrainian | Ukrainian Orthodox |
GR |
Greek | Greek Orthodox — ενορία, προσφορά, ενορίτες |
DE |
German | Protestant/Lutheran — Gemeinde, Spende |
SE, NO, FI, EE |
Scandinavian/Baltic | Lutheran |
NL |
Dutch | Protestant/Reformed |
KR |
Korean | Evangelical/Presbyterian — 교회, 헌금, 성도 |
TW |
Chinese Taiwan | Evangelical/Presbyterian |
CN |
Chinese China | Protestant/Three-Self — 教会, 奉献, 会众 |
GB, AU |
English variants | Anglican / Ecumenical |
ET |
Amharic | Ethiopian Orthodox / Protestant |
IN |
Hindi, Tamil, Telugu | Broadly Christian / Non-denominational |
ID |
Indonesian | Protestant/Catholic — jemaat, persembahan |
IL |
Hebrew | Messianic Jewish/Christian |
| default | All others | Broadly Christian, ecumenical |
Batch files use this shape for plural terms:
{ "%d person": { "one": "", "other": "" } }The skill provides grammatically correct singular and plural forms per the target language's rules:
{ "%d person": { "one": "1 personne", "other": "%d personnes" } }At every release that includes new UI strings:
- After
locale:buildhas updatedlocale/messages.json - Run
/locale-releasefor the full guided workflow - Upload translated batch files to POEditor
- Run
npm run locale:downloadand commitsrc/locale/i18n/
- i18n & Localization — term consolidation, adding new strings, locale rebuild
- Git Workflow — committing locale files before release
- Development Workflows — release checklist
Last updated: February 2026