# Translations

> Both content and the data studio can be translated into multiple languages.

Localising content in Directus involves using translation strings, which are multilingual key-value pairs that you can use throughout the app. They enable you to translate things like dropdown options, placeholder text, field notes, and more.

![Translation strings](/img/d2348575-9fbb-4c38-9d9f-22e32799ded7.webp)

<callout icon="i-lucide-info">

**Data Studio Translations**<br />


This article refers to translating your content in Directus. Many parts of the Data Studio are already translated into multiple languages via community contribution on Crowdin.

<video-embed video-id="0ecac717-cbf2-4dbd-9d2b-aec232c10b0a">



</video-embed>
</callout>

## Create a Translation String

<video-embed video-id="b588e6c5-d031-4be6-aef4-e4f421f10cd5">



</video-embed>

![Form to create a translation string](/img/1ca1ec31-2263-4b69-b87b-95449ec98bbd.webp)

To create a translation string, navigate to Settings > Translation Strings and click on <icon name="material-symbols:add-circle-rounded">



</icon>

 in the page header and a drawer will open.

Add a key and click on "Create New" to open another drawer. Select the language and type in the corresponding translation. Click on <icon name="material-symbols:check-circle-outline">



</icon>

 to confirm and add the translation.

## Use a Translation String

![Using a translation string on a field](/img/c26df052-5b97-401d-97f8-5c7c7bc29952.webp)

Throughout the settings module, you will notice certain input fields have a <icon name="material-symbols:translate">



</icon>

 icon on them, meaning you have the option assign a translation string.

To assign a translation string, navigate to the input that you'd like to add a translation string to. There are two ways to assign a translation string:

- Click <icon name="material-symbols:translate">



</icon>

 and a dropdown menu with all translation strings will appear.
- Type `$t:translation-string-key` and hit enter.

Choose a translation string key as desired.

<callout icon="i-lucide-info">

**Switching Language**<br />


There are two ways to change the app language. Administrators can set the project's
[default language](/configuration/translations), while users can choose their own personal language preference.

</callout>

<callout icon="i-lucide-info">

**Adding New Translation Strings**<br />


You can also click ":icon{name="material-symbols:add-circle-rounded"} New Translation String" in the <icon name="material-symbols:translate">



</icon>

 dropdown menu to create a new translation string on the fly.

</callout>

## Content Translations

<video-embed video-id="0e2eaf09-d3e4-4cca-97c8-e38e833c731f">



</video-embed>

With Directus, you can localize your content into several languages using a [translations field](/guides/data-model/relationships) on a given collection. Directus provides a built-in wizard to automatically generate the full translations infrastructure, or you can set it up manually.

### Quick Setup with Generate Translations

Directus can automatically create all the collections, fields, and relationships needed for content translations.

![Translations section in collection settings showing Enable Translations button](/img/generate-translations-enable-button.png)

1. Navigate to **Settings > Data Model** and select the collection you want to translate.
2. In the collection settings, find the **Translations** section.
3. Click **Enable Translations**.
4. In the dialog, select the fields you want to make translatable.
5. Click **Enable** to generate the translations infrastructure.

![Generate Translations dialog with field picker](/img/generate-translations-field-picker.png)

This will automatically create:

- A **languages** collection (if one doesn't already exist), pre-populated with common languages (English, Arabic, German, French, Russian, Spanish, Italian, and Portuguese).
- A **translations junction collection** (e.g. `articles_translations`) containing the selected fields.
- The necessary **relationships** and a **translations alias field** on the source collection.

<callout icon="i-lucide-settings">

**Advanced Options**
Expand the advanced section in the dialog to customize the translations collection name, languages collection, and foreign key field names.

</callout>

#### Adding More Translatable Fields

Once translations are enabled, you can add more fields at any time.

1. Return to **Settings > Data Model** and select the collection.
2. In the **Translations** section, click **Add Fields**.
3. Select additional fields and save.

![Adding more translatable fields to an existing translations collection](/img/generate-translations-add-fields.png)

### Manual Setup

You can also set up translations manually by creating the required collections and relationships yourself.

![Creating a translations field](/img/3097a653-da4f-449a-a5d5-4dcf62da73bd.webp)

Add a translations O2M alias field to your collection. This will create a pre-populated `languages` collection, as well as a hidden `<collection>_translations` collection.

In the "Data Model" section of the settings module, navigate into the `<collection>_translations` collection and add the fields which you'd like to translate.

![Post translations collection showing it has a title and content field added](/img/ec059ce9-ece1-4353-8844-7e557a4556c4.webp)
Now, when [editing an item](/guides/content/editor) of that collection, you'll be able to add translations for those fields.

![Creating a post with a title in both Spanish and English](/img/774ac37b-1c9e-433b-80ba-deededd8e406.webp)

<callout icon="i-lucide-info">

**Default Language**<br />


When no explicit default language is set on a translation interface, the first language in the `languages` collection determines the default tab shown when editing translations. To control this order, add an integer field (e.g. `sort`) to the `languages` collection and set it as the collection's sort field.

</callout>

## AI Translations

Directus can automatically translate your content into multiple languages using AI. Configure an AI provider in [Settings > AI](/guides/ai/assistant/setup), then use the **Translate with AI** button in the translations interface to translate fields across all your configured languages at once.

<card icon="i-lucide-sparkles" title="AI Translations" to="/guides/ai/translations">

Learn how to set up and use AI-powered translations.

</card>

## RTL Support

Directus provides comprehensive Right-to-Left (RTL) language support for both content editing and the entire studio interface.

![Studio in RTL](/img/rtl-app.webp)

### Automatic RTL Detection

The studio automatically switches to RTL rendering mode when using languages that are commonly written in RTL direction, including:

- Arabic (`ar-SA`)
- Farci (`fa-IR`)
- Hebrew (`he-IL`)

### Manual RTL Override

To manually control the text direction regardless of selected language:

1. Navigate to your user profile
2. Look for the "Text Direction" option
3. Choose between:

- "Automatic" - Follows the language's natural direction
- "Left to Right" - Forces left-to-right direction
- "Right to Left" - Forces right-to-left direction
