# Internationalization

- Human documentation: [https://docs.univer.ai/guides/slides/getting-started/i18n](https://docs.univer.ai/guides/slides/getting-started/i18n)

- Agent Markdown: [https://docs.univer.ai/guides/slides/getting-started/i18n.md](https://docs.univer.ai/guides/slides/getting-started/i18n.md)

- Requested language: `en-US`

- Content language: `en-US`

- Documentation version: `1.0.0-rc.0`

- Source: [slides/getting-started/i18n.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/slides/getting-started/i18n.mdx)

---

> [!WARNING: Caution]
> Not all plugins include language packs. We will specify this in the documentation for each feature.

## `mergeLocales` Method

`mergeLocales` Method is used to merge multiple plugin or preset language packs into a complete language pack object. You can use it as follows:

#### Preset Mode

```typescript
import { mergeLocales } from '@univerjs/presets'

// You can pass multiple language pack objects to merge
const locales = mergeLocales(
  plugin1Locales,
  plugin2Locales,
  presetLocales,
)
// You can also pass an array of language pack objects
const locales = mergeLocales([
  plugin1Locales,
  plugin2Locales,
  presetLocales,
])
```

#### Plugin Mode

```typescript
import { mergeLocales } from '@univerjs/core'

// You can pass multiple language pack objects to merge
const locales = mergeLocales(
  plugin1Locales,
  plugin2Locales,
  presetLocales,
)
// You can also pass an array of language pack objects
const locales = mergeLocales([
  plugin1Locales,
  plugin2Locales,
  presetLocales,
])
```

## Custom Language Packs

Univer also supports custom language packs. You can assemble a language pack object as needed and pass it to the `Univer` instance. The preset language packs are generally stored in the `<rootDir>/packages/<PLUGIN_NAME>/locale` directory.

```typescript
const univer = new Univer({
  locale: 'ja-JP',
  locales: {
    'ja-JP': {
      ui: {
        shortcut: {
          undo: '元に戻す',
          redo: 'やり直す',
        },
      },
    },
  },
})
```

## Contributing Translations

Univer currently provides the following built-in language packs:

* `zh-CN`: Simplified Chinese
* `en-US`: English
* `zh-TW`: Traditional Chinese
* `zh-HK`: Traditional Chinese (Hong Kong)
* `ru-RU`: Russian
* `vi-VN`: Vietnamese
* `fa-IR`: Persian
* `fr-FR`: French
* `ja-JP`: Japanese
* `ko-KR`: Korean
* `es-ES`: Spanish
* `ca-ES`: Catalan
* `sk-SK`: Slovakian
* `ar-SA`: Arabic
* `de-DE`: German
* `id-ID`: Indonesian
* `it-IT`: Italian
* `pl-PL`: Polish
* `pt-BR`: Portuguese (Brazilian)

Univer is an open source project full of inclusiveness, and we welcome developers from all over the world to add or improve locales for Univer.
