Multilingual

Every language, side by side.

French and English next to each other in every field, what’s missing counted, and machine translations marked until a person has read them. Then the site asks for the language it needs.

In the Studio, an article is written in French and its English side is empty. One click translates both fields into English, each marked “machine translation, not yet read”. The editor marks the title as right, changes “eight thousand two hundred and forty-three” to “8,243” in the excerpt, and saves.

French and English side by side: one click translates, a person reads, then it’s saved.

Try it

Translate it, then read it

An article written in French, its English side empty. Translate it, then say which fields look right: until you do, they stay marked.

Show

2 fields not in English

Title

FR

La Liste d'Attente: Quatre Ans pour une COMPAGNON-9

EN

Excerpt

FR

La liste d'attente pour une COMPAGNON-9 compte actuellement huit mille deux cent quarante-trois noms. Le délai moyen est de quatre ans et deux mois. Certains attendent depuis…

EN

The demo project’s own machine translation, and the Studio’s own words. Translation help costs a credit or two, on every plan.

Everywhere

Every language, everywhere

From the model to the API, languages are part of the content, not an add-on.

  • Model

    Per field, not per page

    Each field is translatable or not: a title in every language, a price once.

    • Set in the model
    • As many languages as the project needs
  • Lists

    Counted, not hunted

    Lists count what isn’t in each language yet, and filter on it.

    • “Not in English” as a filter
    • On the board too
  • AI

    Marked until read

    Machine translations stay marked “not yet read” until a person says they look right.

    • In reviews too
    • Agents’ writing marked the same way
  • Roles

    Translators

    A translator edits the other languages and leaves the original as it is.

    • Their own role
    • Per project
  • Media

    Alt text in each language

    A picture’s alt text and caption in every language, for every place it’s used.

    • Written once per language
    • Suggested by AI when it’s on
  • API

    The language the site asks for

    Ask for a language, and fields come back as plain text in it. Leave it out, and you get them all.

    • ?locale=fr
    • Falls back to the project’s default

In the API

French, when the site asks for it

The same channel, asked for French: every field comes back as text in that language, ready to print.

  • One request per language, or all languages at once
  • Slugs in each language, when the model has them
  • An address per language, with hreflang in the sitemap

GET …/article/entries?locale=fr&sort=id&limit=1

[
  {
    "id": "issue-01-1",
    "type": "article",
    "data": {
      "title": "Nous Avons Commencé dans un Garage à Montréal",
      "slug": "nous-avons-commence-dans-un-garage-a-montreal",
      "excerpt": "L'hiver 1968 à Montréal était particulièrement brutal. Les rues du Plateau étaient désertes, la neige atteignait les genoux, et dans un garage de la rue Saint-Denis, trois hommes construisaient quelque chose que…",
      "author": "henri",
      "readingTime": 2
    }
  }
]

Questions about languages

An agency owner asksWhich languages can a project have?

MoteurAny: a default language and as many others as the site needs. The Studio itself is in English and French.

A client’s editor asksDo we need AI to translate?

MoteurNo. Writers and translators can fill in every language themselves. Translation help is there when an admin turns it on, and each translation costs a credit or two.

A developer asksWhat does the site get for a missing translation?

MoteurAsk for a language and a field that isn’t in it falls back to the project’s default language.

A translator asksCan I change the original?

MoteurNot as a translator: that role edits the other languages, and the original stays as the writer left it.

A marketer asksCan each language have its own address?

MoteurYes. A page has its own path in each language, like /pricing and /fr/tarifs. Links to it follow along, and when a live page moves, its old address redirects to the new one.

Start a project in two languages.

Add a second language to a free project, and see what’s missing.