Built with Chinaski

Translation & Multilingual

Multilingual is built in, not bolted on

Language is a first-class field in Chinaski's schema. Build English, Spanish, and Portuguese from one install — with an LLM translation pipeline and a human review queue in the admin.

View on GitHub

How multilingual works

Language as a schema field

Every page, post, and block has a language field. Content in different languages is stored separately but linked by a translation key. The CMS tracks what has been translated and what hasn't.

LLM-drafted translations

The pipeline extracts source content, sends it to Claude, Qwen, or a local Ollama model, and stages the result for review. You choose the model; the pipeline handles the plumbing.

Human review before publishing

Machine-drafted translations go into a review queue, not straight to publish. A reviewer can approve, edit, or reject each translation. Nothing goes live without a human sign-off.

The translation workflow

Step 1: Select content to translate

In the admin, open the translation panel and select the pages or posts you want to translate. Filter by language, publication status, or date. Choose a target language and a model.

Step 2: Draft with an LLM

The pipeline extracts translatable strings from the block content, sends them to the configured LLM with a structured prompt that preserves formatting, and stores the result in the review queue as a draft.

Step 3: Review and edit

Open the review queue and compare source and draft side by side. Edit any strings that need correction. Approve the translation when it's ready — or reject it and re-draft with a different model or prompt.

Step 4: Publish

Approved translations are published as full pages with their own URLs, metadata, and sitemap entries. The build includes all published languages. Hreflang tags are generated automatically.

Set up a multilingual site

Complete setup, theming, and API documentation lives at docs.chinaski.net.

Read the documentation