---
title: "Localization options"
description: "These settings configure TinyMCE's language capabilities, including right-to-left support and language Localization."
canonical_url: "https://www.tiny.cloud/docs/tinymce/latest/ui-localization/"
md_url: "https://www.tiny.cloud/docs/tinymce/latest/ui-localization/index.md"
version: "latest"
last_updated: "2026-09-28T00:27:52Z"
tokens: 2205
---
# Localization options

There are two options for changing the language of the TinyMCE user interfaces: `language` and `language_url`.

- Use the `language` option when language packs are in the default location (for Tiny Cloud deployments, ZIP bundles, or when using NPM packages with bundling or file layering).
- Use the `language_url` option to specify a custom path to language packs, which is useful for community translations, custom language packs, or when using NPM packages without bundling. When using `language_url`, the `language` option is also required.

## `language`

This option specifies the language used for the TinyMCE user interface, such as menu items, dialogs, and tooltips. By default, TinyMCE user interface is set to US English.

Before changing the language option, ensure that the language pack is available to the TinyMCE instance. Tiny provides two collections of language packs:

- *Premium* language packs — Professionally localized language packs provided on Tiny Cloud and bundled with premium self-hosted bundles.
- *Community* language packs — Localizations provided by TinyMCE users through Crowdin. Community languages packs can be downloaded from [the Tiny Community Language Packs downloads page](/get-tiny/language-packages/).

For information on:

- Using the premium language packs, see: [Using the premium language packs](#using-the-premium-language-packs).
- Using the community language packs, see: [Using the community language packs](#using-the-community-language-packs).

**Type:** `String`

**Default value:** `'en'`

### Example: using `language`

In this example we will set the editor language to Swedish using the RFC5646 format:

```js
tinymce.init({
  selector: 'textarea',  // change this value according to your HTML
  language: 'sv-SE'
});
```

### Using the premium language packs

The following professionally localized language packs are provided to paid Tiny Cloud and premium self-hosted deployments. To use these language packs, set the `language` option to the corresponding language code in RFC5646 format.

For Tiny Cloud and ZIP-based deployments, no additional configuration is required. When using the `tinymce-premium` NPM package, see [Providing premium language packs from `tinymce-premium`](#premium-language-packs-npm) for configuration options.

The following table lists the available premium language packs:

#### Supported Languages

> **Important:** From TinyMCE 8, language codes use RFC5646 format with hyphens (-) instead of underscores (_). For backward compatibility, both formats are supported in TinyMCE 8, but underscore format will show console warning.
> 
> Example: "TinyMCE language code "en_US" is deprecated, please use "en-US" instead.".

| Language | Code |
| --- | --- |
| Arabic | ar |
| Basque | eu |
| Bulgarian (Bulgaria) | bg-BG |
| Catalan | ca |
| Chinese (China) | zh-CN |
| Chinese (Taiwan) | zh-TW |
| Croatian | hr |
| Czech | cs |
| Danish | da |
| Dutch | nl |
| Finnish | fi |
| French (France) | fr-FR |
| German | de |
| Greek | el |
| Hebrew (Israel) | he-IL |
| Hindi | hi |
| Hungarian (Hungary) | hu-HU |
| Indonesian | id |
| Italian | it |
| Japanese | ja |
| Kazakh | kk |
| Korean (Korea) | ko-KR |
| Malay | ms |
| Norwegian Bokmål (Norway) | nb-NO |
| Persian | fa |
| Polish | pl |
| Portuguese (Brazil) | pt-BR |
| Portuguese (Portugal) | pt-PT |
| Romanian | ro |
| Russian | ru |
| Slovak | sk |
| Slovenian (Slovenia) | sl-SI |
| Spanish | es |
| Swedish (Sweden) | sv-SE |
| Thai (Thailand) | th-TH |
| Turkish | tr |
| Ukrainian | uk |
| Vietnamese | vi |

#### Providing premium language packs from `tinymce-premium` (NPM)

The `tinymce-premium` NPM package ships all paid translations in `tinymce-premium/langs/`. Choose one of the following patterns depending on how TinyMCE is deployed:

**Bundling (recommended for modern build tools)**

- Import the required language files so the module bundler adds them to the application bundle. For example:

```js
import 'tinymce/langs/en_GB';
import 'tinymce-premium/langs/fi';
// ... other TinyMCE imports
```
- After bundling, set `language: 'fi'` (or any imported locale) and no extra HTTP requests are required.

**Non-bundling with file layering**

- When hosting directly from `node_modules`, copy `node_modules/tinymce-premium/langs/` into `node_modules/tinymce/langs/` as part of the build or deployment step (for example, in a `postinstall` script).
- Once copied, premium language packs live beside the core files, so setting `language` works without extra configuration.

**Non-bundling with `language_url`**

- Leave the premium packs in `node_modules/tinymce-premium/langs/` and configure [`language_url`](#language_url) to point at the required file.
- This approach avoids moving files and is useful when the `node_modules` directory is web-accessible (or when copying only the specific file to a public folder).

### Using the community language packs

To change the user interface language using a community language pack:

1. Download the language pack from [the Tiny Community Language Packages download page](/get-tiny/language-packages/).
2. Set the [`language`](#language) option in your TinyMCE configuration to the language code, matching the filename on the language pack. For example: If the language pack has the filename `sv_SE.js`, then set `language: 'sv_SE',`
3. Confirm that the language has been set successfully by loading TinyMCE.

> **Note:** The language code set in the TinyMCE configuration must match the filename of the language file. If the language file is not found, TinyMCE will not load.
If a language you need is not available, you may wish to translate TinyMCE yourself. To contribute to translating TinyMCE, go to our [Crowdin translation page](https://crowdin.com/project/tinymce) and sign up. Then request to join an existing team, or create a new team if your language are not listed.

## `language_url`

When using the [`language`](#language) option to set the user interface language you can place language pack(s) in a directory other than the default. If you do this, however, you must add the `language_url` option to your configuration and set this option to a path pointing to the language file(s) location.

We recommend the path URL be relative to the web application’s root. That is, begin with the absolute path reference character `/`. Avoid relying on application context for safe path resolution of language packs.

> **Important:** **Understanding `language_url` and `language` Together:**
> 
> When using `language_url`, you must also specify the `language` option:
> 
> - `language_url` - Tells TinyMCE **where** to find the language pack file.
> - `language` - Tells TinyMCE **which** language pack to use from the loaded file.
> **Example:**
> 
> ```js
> tinymce.init({
> selector: 'textarea',
> language_url: '/path/to/language_pack/fi.js', // Where to find it
> language: 'fi',  // Which language pack to use
> // ... other options
> });
> ```
**Type:** `String`

### Example: using `language_url`

```js
tinymce.init({
  selector: 'textarea', // change this value according to your HTML
  language_url: '/<path_to_language_pack>/fi.js', // path from the root of your web application — / — to the language pack(s)
  language: 'fi'  // the name of the language pack file
});
```
You can find and download languages [here](/get-tiny/language-packages/).

### Example: loading premium languages from `tinymce-premium` (NPM)

When installing the `tinymce-premium` NPM package, each translation is stored in `node_modules/tinymce-premium/langs/`. Configure `language_url` to point at the desired file.

Example
```js
tinymce.init({
  selector: 'textarea',
  language_url: '/<path_to_tinymce-premium>/langs/pt_BR.js',
  language: 'pt-BR'
});
```

> **Note:**
> - Ensure the language file is accessible in the application. Many projects copy the required file into a static assets folder (such as `/public/langs/pt_BR.js`) during their build step.
> - Combine this with the approaches listed in [Providing premium language packs from `tinymce-premium`](#premium-language-packs-npm) to match the deployment strategy.

## `language_load`

This option determines whether additional plugin or theme languages are loaded during TinyMCE editor initialization. By default, plugins which have support for languages other than English will automatically load the additional language packs.

**Type:** `boolean`

**Default value:** `true`

- When the `language_load` option is set to `true`, any available language packs can be loaded and used by TinyMCE and plugins that support multiple-languages.
- When set to `false`, only explicitly configured language packs will load.

> **Important:** Setting `language_load` option to `false` is not recommended unless loading local language packs.

### Example: using `language_load`

```js
tinymce.init({
  selector: 'textarea', // Change this value according to your HTML
  language_load: true, // Disables the automatic loading of additional plugin and theme language files.
});
```

> **Tip:** When bundling, it is advisable for plugins that support multiple languages to load the additional language packs locally, and to set this option to `false`. This will ensure that all required languages are available for the editor, and that no additional language packs will be retrieved by the plugins.
You can find and download languages [here](/get-tiny/language-packages/).
