---
title: "Interface languages | Rigel CMS docs"
url: "https://rigelcms.dev/docs/languages"
description: "Choose Rigel editor languages, keep English as the fallback and leave unused translation catalogs out of your build."
---

Interface translations and the `languages` option are available since Rigel 1.1.0. Follow [Getting started](/docs/getting-started/) to install or upgrade.

Rigel’s interface can use the languages below. This changes editor controls and built-in messages, not your website’s content or HTML language.

## Choose languages for your site

Set `languages` inside the existing `rigel()` call in `astro.config.mjs`. Preserve your schema, collections and other options:

```
import { defineConfig } from "astro/config";
import { rigel } from "@rigel-cms/rigel";

export default defineConfig({
  integrations: [
    rigel({ languages: ["es"] }),
  ],
});
```

This includes English and Spanish. It does not also include French: an explicit list replaces the default list of additional languages. English is always included and remains the initial language and fallback.

| Configuration | Languages included |
| --- | --- |
| rigel() | English and French |
| rigel({ languages: ["es"] }) | English and Spanish |
| rigel({ languages: ["fr", "de"] }) | English, French and German |
| rigel({ languages: [] }) | English only |

Repeated codes are deduplicated. Restart the development server after changing configuration, and rebuild the site before deploying the new selection.

## Supported languages

| Code | Language | Selector label |
| --- | --- | --- |
| en | English | English |
| fr | French | Français |
| es | Spanish | Español |
| ru | Russian | Русский |
| zh | Simplified Chinese | 中文（简体） |
| ja | Japanese | 日本語 |
| it | Italian | Italiano |
| de | German | Deutsch |
| nl | Dutch | Nederlands |

Use these exact base codes in configuration. Regional codes such as `es-ES` or `zh-CN`, unsupported codes and non-array values are configuration errors. `zh` provides Simplified Chinese, not a separate Traditional Chinese translation.

The starter explicitly enables all nine languages:

```
rigel({
  languages: ["en", "fr", "es", "ru", "zh", "ja", "it", "de", "nl"],
});
```

Remove languages your editors do not need. The integration defaults and the starter’s explicit example are different: omitting `languages` includes English and French, not all nine.

## Switch the editor interface

Open Settings and choose Language. The selector lists only the languages included in that site’s build. Rigel remembers the selection in that browser. If a later build excludes the saved language, the editor returns to English.

Missing translated messages also fall back to English. Counted built-in messages use the selected language’s plural rules.

## Keep the browser bundle small

Rigel’s package contains all translation catalogs, but the integration imports only the selected catalogs into the generated browser and server bundles. Removing a language from configuration excludes that catalog from those bundles; it does not remove files from the installed npm package.

The exact size difference depends on the selected languages and the build. Language selection does not remove the editor’s other features.

## What stays unchanged

Interface translations do not translate page copy, article bodies, schema labels supplied by your project, custom extension labels or content. JSON keys, document identifiers, URLs and Git branch names stay unchanged too.

To publish a multilingual website, model and render that content in your Astro project. The `languages` option controls the CMS interface only. For custom controls and widgets, see [Svelte extensions](/docs/extensions/).

Documentation

On this page