Translate zero2claude.dev into any language. Download the English content, build your translation, validate with our QA engine, and submit for review.
The Translation SDK lets community developers translate the entire zero2claude.dev platform — UI strings and lesson content — via a simple REST API. Translations go through automated QA checks and admin review before being merged as a GitHub PR.
Fetch the English manifest, UI namespaces, and lesson content.
Build your translation payload preserving placeholders, HTML, and terminal commands.
Run a dry-run QA check. Fix any errors before submitting.
Submit your translation. QA runs automatically and the admin is notified.
Admin reviews and approves. A GitHub PR with all translation files is created automatically.
All endpoints require an API key. Keys are created by the platform admin and start with trn_. Include it as a Bearer token:
curl -H "Authorization: Bearer trn_your_api_key_here" \
https://zero2claude.dev/api/translate/base/manifest
Keep your key secret. API keys are shown only once when created. If compromised, ask the admin to revoke it and create a new one.
Base URL: https://zero2claude.dev/api/translate
Returns the content manifest: list of namespaces, lessons with keys/titles, and a content hash for change detection.
Auth: Bearer token required
// Response
{
"namespaces": ["achievements", "auth", "common", ...],
"lessons": [
{ "key": "level0/lesson-0.1", "title": "What Is a File?", ... }
],
"lessonCount": 148,
"namespaceCount": 13,
"contentHash": "90b822d2..."
}
Returns all 13 English UI namespace files as a single JSON object, keyed by namespace name.
// Response
{
"common": { "loading": "Loading...", "save": "Save", ... },
"nav": { "home": "Home", "dashboard": "Dashboard", ... },
...
}
Returns all 148 English lesson files with protected fields stripped (game logic, answers, validation rules). Only translatable content is included.
Dry-run QA check. Send your translation payload and get a detailed quality report without creating a submission. Use this to iterate before submitting.
// Response
{
"score": 97,
"passesReview": true,
"summary": "0 errors, 1 warning",
"checks": [
{ "name": "completeness", "status": "pass", "severity": "error", ... },
...
]
}
Submit your translation for review. QA runs automatically. Returns the submission ID, status, and QA score.
// Request body — see Payload Format section below
// Response (201 Created)
{
"id": "uuid-here",
"status": "qa_passed",
"qaScore": 97,
"qaSummary": "0 errors, 1 warning",
"createdAt": "2026-05-25T..."
}
Check the status of your submission. Returns QA results, admin feedback (if rejected), and the GitHub PR URL (if approved).
// Response
{
"id": "uuid-here",
"status": "approved",
"qaResults": { ... },
"adminFeedback": null,
"githubPrUrl": "https://github.com/...",
"reviewedAt": "2026-05-25T..."
}
Both /validate and /submit accept the same JSON payload:
{
"languageCode": "fr", // ISO 639-1 (2-3 letter code, optional region)
"languageName": "Français", // Native name of the language
"isRtl": false, // Right-to-left layout
"uiNamespaces": {
"achievements": { ... }, // All 13 namespaces required
"auth": { ... },
"common": { ... },
"dashboard": { ... },
"errors": { ... },
"feedback": { ... },
"forum": { ... },
"help": { ... },
"home": { ... },
"lesson": { ... },
"maintenance": { ... },
"nav": { ... },
"onboarding": { ... }
},
"lessonOverlays": {
"level0/lesson-0.1": { // Key from manifest
"title": "Qu'est-ce qu'un fichier ?",
"subtitle": "...",
"sections": [
{ "content": "..." },
{ "instruction": "...", "explanation": "..." }
]
},
... // All 148 lessons required
}
}
title, subtitle, content, instruction, explanation){{placeholder}} markers exactly as they appear in English<strong>, <code>, <br>, etc.)`cd Documents`)cat, ls, cd, grep, etc.)_one, _other)Tip: Download the English content first, then use it as a template. The QA engine will catch most mistakes before you submit.
Every submission runs through 10 automated quality checks. Errors block approval; warnings are informational.
| Check | Severity | What It Validates |
|---|---|---|
| completeness | error | All English UI keys are present in the translation |
| extra_keys | warning | No keys exist in translation that don't exist in English |
| placeholders | error | All {{variable}} placeholders preserved exactly |
| html_tags | error | HTML tags (<strong>, <code>, etc.) preserved |
| terminal_commands | error | Backtick-wrapped commands (`ls -la`) not translated |
| overlay_structure | error | No protected fields (answers, validation, game logic) in overlays |
| length_ratio | warning | Translated strings are within reasonable length range (0.5x–3x English) |
| utf8 | error | Clean UTF-8 encoding, no invisible characters or control bytes |
| pluralization | warning | Pluralization keys (_one, _other) are present when English uses them |
| untranslated_content | error | Detects lessons or UI strings that are still identical to English (not actually translated) |
A score of 90+ with zero errors means passesReview: true and the submission can be approved by the admin.
curl -H "Authorization: Bearer trn_..." \
https://zero2claude.dev/api/translate/base/manifest
# UI namespaces
curl -H "Authorization: Bearer trn_..." \
https://zero2claude.dev/api/translate/base/ui -o english_ui.json
# Lesson content
curl -H "Authorization: Bearer trn_..." \
https://zero2claude.dev/api/translate/base/lessons -o english_lessons.json
Use the downloaded files as templates. Translate every string value while preserving placeholders, HTML, and terminal commands.
curl -X POST \
-H "Authorization: Bearer trn_..." \
-H "Content-Type: application/json" \
-d @payload.json \
https://zero2claude.dev/api/translate/validate
Fix any errors reported and re-validate until passesReview: true.
curl -X POST \
-H "Authorization: Bearer trn_..." \
-H "Content-Type: application/json" \
-d @payload.json \
https://zero2claude.dev/api/translate/submit
curl -H "Authorization: Bearer trn_..." \
https://zero2claude.dev/api/translate/submissions/YOUR_SUBMISSION_ID
When approved, the response includes the GitHub PR URL with all your translation files.
adminFeedback for details, fix, and resubmit.fr, ja, pt-BR)Need an API key? Contact the platform admin to get your translation API key. Include which language you plan to translate.