KoboToolbox Translation & Localization
Overview
Translate KoboToolbox content from English to Arabic with consistent terminology, appropriate tone, and cultural adaptation.
For Video Subtitles: Use the kobo-translation-srt skill extension for subtitle-specific guidelines.
Translation approach:
- NEW FILES: Translate complete document with consistent terminology
- UPDATES: Translate only changed content (diff-based to reduce translation noise)
CRITICAL: Pre-Translation Checklist
BEFORE translating, check these reference files:
- brand-terminology.md - Server names, Question Library, Formbuilder
- ui-terminology.md - Button names, tabs, capitalization
- article-titles.md - Official article titles in all languages (OFFICIAL — verbatim)
Translation Types
- OFFICIAL - Use EXACT translation (brand terms, UI elements, XLSForm)
- PREFERRED - Adapt for context (general terminology, courses)
XLSForm Terms
- Never translate: worksheet names, column names, type values, appearances, functions
- Written content: English + translation in parentheses
- Subtitles: English only
Example: `list_name` (nom de la liste / nombre de la lista)
Formatting Rules
- Convert HTML headings to markdown:
<h1>→#,<h2>→##,<h3>→### - Malformed hierarchy fix: If the source has
<h3>directly under<h1>with no<h2>in between, render it as##— not###. Example: source is# Titlethen<h3>Section</h3>→ output must be# Titlethen## Section. Do NOT output### Sectionin this case. - Keep other HTML tags intact
- Internal links: keep as-is (auto-resolve)
- Cross-language links: use
../en/,../fr/,../es/,../ar/ - Images/URLs: don't translate paths
- YouTube embeds: update
cc_lang_prefandhlparameters
🚨 CRITICAL: Article H1 Heading
The article's own # H1 must be a faithful translation of the English H1 — do not invent a shorter or restructured variant.
The article-titles.md file lists the official titles for each article. The H1 of the article being translated must match its entry in article-titles.md exactly. If no entry exists, translate faithfully and flag it.
Article Title Consistency
When translating any article that references another article by title:
- Look up the target article's filename in article-titles.md
- Use the exact title listed for the target language — never translate it yourself
- If a title is missing from the file, flag it rather than guessing
This is critical: articles cross-reference each other, and titles must be identical across all languages.
Terminology References
OFFICIAL — Must Use Verbatim
- article-titles.md - Article titles for all languages (OFFICIAL — verbatim for cross-references)
- brand-terminology.md - Brand terms (OFFICIAL)
- ui-terminology.md - UI elements (OFFICIAL)
- form-building-terms.md - XLSForm terms (OFFICIAL)
PREFERRED — Can Adapt for Context
- question-types.md - Question types/appearances
- data-collection-terms.md - Data collection
- course-terminology.md - Academy/courses
- documentation-terminology.md - Help Center
- sentence-structures.md - Recurring sentence patterns (e.g. "Set to", "Both … support")
Quality Checklist
Brand & UI:
- [ ] Server names with correct articles
- [ ] Capital L on Question Library (see brand-terminology.md)
- [ ] UI terms match exact capitalization
Formatting:
- [ ] HTML headings → markdown (h3 under h1 with no h2 → rendered as ##)
- [ ] Cross-language links updated
- [ ] Image paths unchanged
- [ ] YouTube language parameters set
Language:
- [ ] Gender-inclusive language throughout — every mention
- [ ] XLSForm terms in English + translation
- [ ] Natural word order
Article titles:
- [ ] Article H1 matches the article-titles.md entry exactly
- [ ] Cross-referenced article titles match article-titles.md exactly
Updating This Skill
Source files in sources/:
glossary.xlsx- Cached copy of the Google Sheet (offline fallback)style-guide.md- Style guidelinesworkflow-rules.md- Workflow/checklistslanguage-rules.md- Language-specific rules
To refresh from the live Google Sheet:
python scripts/fetch_glossary.py # pull latest xlsx from Google Sheets
python scripts/regenerate_skill.py # rebuild skill from cached copy
Or combined:
python scripts/sync_and_update.py --fetch