Community Translation SDK

Translate zero2claude.dev into any language. Download the English content, build your translation, validate with our QA engine, and submit for review.

REST API 13 UI Namespaces 148 Lessons

Overview

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.

1

Download

Fetch the English manifest, UI namespaces, and lesson content.

2

Translate

Build your translation payload preserving placeholders, HTML, and terminal commands.

3

Validate

Run a dry-run QA check. Fix any errors before submitting.

4

Submit

Submit your translation. QA runs automatically and the admin is notified.

5

Review

Admin reviews and approves. A GitHub PR with all translation files is created automatically.

Authentication

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.

API Reference

Base URL: https://zero2claude.dev/api/translate

Download Content

GET /base/manifest

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..."
}
GET /base/ui

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", ... },
  ...
}
GET /base/lessons

Returns all 148 English lesson files with protected fields stripped (game logic, answers, validation rules). Only translatable content is included.

Validate & Submit

POST /validate

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", ... },
    ...
  ]
}
POST /submit

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 Status

GET /submissions/:id

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

Payload Format

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

Translation Rules

Tip: Download the English content first, then use it as a template. The QA engine will catch most mistakes before you submit.

QA Checks

Every submission runs through 10 automated quality checks. Errors block approval; warnings are informational.

CheckSeverityWhat 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.

Full Workflow Example

1. Download the manifest

curl -H "Authorization: Bearer trn_..." \
  https://zero2claude.dev/api/translate/base/manifest

2. Download English content

# 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

3. Build your translation

Use the downloaded files as templates. Translate every string value while preserving placeholders, HTML, and terminal commands.

4. Validate (dry-run)

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.

5. Submit

curl -X POST \
  -H "Authorization: Bearer trn_..." \
  -H "Content-Type: application/json" \
  -d @payload.json \
  https://zero2claude.dev/api/translate/submit

6. Check status

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.

Submission Statuses

submitted qa_passed approved
submitted qa_failed
qa_passed rejected

Rate Limits

Need an API key? Contact the platform admin to get your translation API key. Include which language you plan to translate.