Skip to content

Latest commit

 

History

History
159 lines (118 loc) · 5.7 KB

File metadata and controls

159 lines (118 loc) · 5.7 KB
title intent tags prereqs complexity
AI Locale Translation
Translate missing ChurchCRM terms using Claude Code with church-specific vocabulary before each release
i18n
localization
ai
claude
translation
release
i18n-localization.md
intermediate

AI Locale Translation

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.


Overview

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:

  1. Reading empty batch files from locale/terms/missing/{locale}/*.json (generated by npm run locale:download)
  2. Translating missing values with Claude Code, applying denomination-aware church vocabulary
  3. Writing translated values back into the same batch files
  4. 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

Quick Start

# 1. Generate untranslated-term batches (and download translations)
npm run locale:download

# 2. Preview what needs translation
npm run locale:translate:list

Then in Claude Code:

/locale-translate --all

Then upload locale/terms/missing/**/*.json to POEditor, and pull back:

npm run locale:download

Claude Code Skills

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

npm Scripts (file operations only)

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

Church Vocabulary Rules

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.


Denomination Context by Locale

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

Plural Forms

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" } }

When to Run

At every release that includes new UI strings:

  1. After locale:build has updated locale/messages.json
  2. Run /locale-release for the full guided workflow
  3. Upload translated batch files to POEditor
  4. Run npm run locale:download and commit src/locale/i18n/

Related Skills


Last updated: February 2026