# Translate your content

> Offer entries in more than one language, translate them with the language pills, find what is missing and let an AI assistant do the typing.

Spatibase can keep every entry in more than one language. You write each text once per language, publish everything with one **Publish**, and your website or app asks for the language it needs. This page shows owners and editors how to turn languages on, translate entries, find what is still missing and let an AI assistant help. Developers read the languages in the API on [Content Delivery API: Languages](https://spatibase.com/docs/reference/delivery-api/#languages).

## Turn languages on

Only an Owner can change languages. A project has no languages until you turn them on, and then works exactly as before.

1. Open **Content model** and choose **Languages**.
2. Choose **Turn on languages**. A window opens.
3. **Default language** already shows your own language (from your browser's settings, English if Spatibase doesn't list it). If your entries are written in another language, open the list and pick it: type to search, by the English name, the language's own name (**Deutsch**, **čeština**) or its code.
4. Choose **Turn on languages** in the window.
5. Under **Add a language**, pick another one the same way, and repeat for every language you want.

The default language is the one your existing titles and texts are already in. It is the fallback everywhere: whatever isn't translated yet is shown in the default language. You can have up to 20 languages.

> **Note:** The default language can't be changed yet. Pick it with care. To add, remove or turn off the other languages you can go back to **Languages** at any time.

## What gets translated

Only text changes per language:

- the entry **Title**
- **Text** fields (except the ones set to the JSON editor)
- **Rich text** fields
- the labels of **Choice** options (see [below](https://spatibase.com/docs/content/translations/#translate-choice-options))

Everything else is the same in all languages: numbers, dates, yes/no switches, links, images and files, references, colors, phone numbers, and the location on the map. You don't switch anything on per field: every title and text field can be translated as soon as the project has languages. A **Choice** keeps one stored value in every language, so filters and links keep working.

## Translate an entry

With two or more languages, the editor shows **pills** at the top of the entry, for example **EN**, **CS**, **DE**. The first one is the default language.

1. Open an entry and click a pill, for example **DE**.
2. The **Title** and every **Text** and **Rich text** field now hold the German text. Under each one you see the default text in grey, so you can translate from it.
3. Type the translations. Everything else on the entry is shown dimmed with **Same in all languages**, and a note at the top says: **Only text fields change per language. Everything else is shared.**
4. Saving works like always. The entry shows **Unpublished changes** until you mark it ready and publish.

A pill with a small number, such as **DE 3**, tells you that three texts of this entry still have no German version. A text you leave empty simply isn't translated: visitors see the default language there.

A new entry that hasn't been saved yet is always in the default language. The language you picked is remembered per project in your browser. [Collect](https://spatibase.com/docs/content/collect/) works in the default language only, and never overwrites translations that exist.

## Find what is missing

In **Entries**, the **Missing** filter (next to **Status**, **Type** and **Group**) lists the entries that still lack a translation: choose **Missing German (de)**, for example. An entry counts as missing when its title, or any filled-in text in the default language, has no translation yet. **All entries** turns the filter off.

Open entries from that list one by one, or let an assistant do them all, as described next. When you fix an entry, it leaves the list.

## Let an AI assistant translate

Spatibase has no translate button of its own. Instead, an AI assistant connected to your project does the typing, and you stay in control. With the **Missing** filter on, a note says how many entries are missing in that language, with a button **Copy prompt**.

1. [Connect an AI assistant](https://spatibase.com/docs/ai/connect-an-assistant/) to the project, with permission to edit drafts.
2. In **Entries**, choose the **Missing** filter for the language.
3. Click **Copy prompt**, and paste it into the assistant.
4. The assistant finds the entries, translates the title and texts and saves the translations as **drafts**. It leaves them unpublished.
5. Read the results, fix what you want, mark the entries ready and publish.

The prompt names your project and the language, and tells the assistant to keep the meaning, the tone and the formatting, and not to publish. The same job works for any language you add later. See [What assistants can do](https://spatibase.com/docs/ai/what-assistants-can-do/#translating-your-content).

## Translate choice options

Choices have a label per option (for example "Easy"). In **Content model → Elements**, open a **Choice** element: each option has a **Translations** section where you type its name in the other languages. A language you leave empty shows the main label.

## Import translations

A spreadsheet can carry translations in extra columns named after the field and the language, such as `title_de` and `description_de`. See [Import your data](https://spatibase.com/docs/content/import/#import-translations).

## Publish all languages at once

Translations are part of the entry's draft. Marking an entry **Ready to publish** and then pressing **Publish** puts every language live together, and **Unpublish** takes every language away. An entry that you only translated shows **Unpublished changes**, so nothing goes live by accident. The checks before an entry can be marked ready (such as a required field) apply to the default language only.

Visitors never see an empty field because of a missing translation: the default language fills the gap, field by field. Developers can see which fields fell back in `missingTranslations`.

## Remove or turn off languages

- **Remove one language:** in **Languages**, click **Remove** next to it and confirm. Its translations are **kept but hidden**. Add the language again and they come back.
- **Turn off languages:** click **Turn off languages**. Entries go back to a single language and the translations stay saved. To get them back, turn languages on again with the **same default language** as before. Spatibase suggests it when saved translations exist.

## Related

- [Content Delivery API: Languages](https://spatibase.com/docs/reference/delivery-api/#languages)
- [Elements](https://spatibase.com/docs/model/elements/)
- [Draft and published](https://spatibase.com/docs/publish/draft-and-published/)
- [Import your data](https://spatibase.com/docs/content/import/)
- [What AI assistants can do](https://spatibase.com/docs/ai/what-assistants-can-do/)
