# Internationalization

ElementPlus components are using English **by default**, if you wish you use other
languages, you can get you answer by keep reading.

## Global configuration

ElementPlus provides global configurations

```typescript
import ElementPlus from 'element-plus'
import zhCn from 'element-plus/es/locale/lang/zh-cn'

app.use(ElementPlus, {
  locale: zhCn,
})
```

## ConfigProvider

ElementPlus also provides a Vue component [ConfigProvider](/#/zh-CN/component/config-provider)
for globally configuring locale and other settings.

```html
<template>
  <el-config-provider :locale="locale">
    <app />
  </el-config-provider>
</template>

<script>
  import { defineComponent } from 'vue'
  import { ElConfigProvider } from 'element-plus'

  import zhCn from 'element-plus/lib/locale/lang/zh-cn'

  export default defineComponent({
    components: {
      ElConfigProvider,
    },
    setup() {
      return {
        locale: zhCn,
      }
    },
  })
</script>
```

## CDN Usage

If you are using ElementPlus via CDN, then you need to do this, let's again take
unpkg as an example

```html
<script src="//unpkg.com/element-plus/dist/locale/zh-cn">
  <script>
  app.use(ElementPlus, {
    locale: ElementPlus.lang.zhCn
  })
</script>
```

Full documentation refer to: [ConfigProvider](/#/zh-CN/component/config-provider)

[Supported Language List](https://github.com/element-plus/element-plus/tree/dev/packages/locale/lang)

<ul class="language-list">
  <li>Simplified Chinese (zh-cn)</li>
  <li>English (en)</li>
  <li>German (de)</li>
  <li>Portuguese (pt)</li>
  <li>Spanish (es)</li>
  <li>Danish (da)</li>
  <li>French (fr)</li>
  <li>Norwegian (nb-NO)</li>
  <li>Traditional Chinese (zh-tw)</li>
  <li>Italian (it)</li>
  <li>Korean (ko)</li>
  <li>Japanese (ja)</li>
  <li>Dutch (nl)</li>
  <li>Vietnamese (vi)</li>
  <li>Russian (ru)</li>
  <li>Turkish (tr)</li>
  <li>Brazilian Portuguese (pt-br)</li>
  <li>Farsi (fa)</li>
  <li>Thai (th)</li>
  <li>Indonesian (id)</li>
  <li>Bulgarian (bg)</li>
  <li>Polish (pl)</li>
  <li>Finnish (fi)</li>
  <li>Swedish (sv)</li>
  <li>Greek (el)</li>
  <li>Slovak (sk)</li>
  <li>Catalunya (ca)</li>
  <li>Czech (cs)</li>
  <li>Ukrainian (uk)</li>
  <li>Turkmen (tk)</li>
  <li>Tamil (ta)</li>
  <li>Latvian (lv)</li>
  <li>Afrikaans (af)</li>
  <li>Estonian (et)</li>
  <li>Slovenian (sl)</li>
  <li>Arabic (ar)</li>
  <li>Hebrew (he)</li>
  <li>Lithuanian (lt)</li>
  <li>Mongolian (mn)</li>
  <li>Kazakh (kk)</li>
  <li>Hungarian (hu)</li>
  <li>Romanian (ro)</li>
  <li>Kurdish (ku)</li>
  <li>Uighur (ug-cn)</li>
  <li>Khmer (km)</li>
  <li>Serbian (sr)</li>
  <li>Basque (eu)</li>
  <li>Kyrgyz (ky)</li>
  <li>Armenian (hy-am)</li>
  <li>Croatian (hr)</li>
  <li>Esperanto (eo)</li>
</ul>

If you need any other languages, [PR](https://github.com/element-plus/element-plus/pulls)
is always welcomed, you only need to add a language file at
[here](https://github.com/element-plus/element-plus/tree/dev/packages/locale/lang).

## FAQs

### If I want to replace the default language pack to reduce the size, how do I do?

When the default language of your app is not **English**, you will be going to need
to import another language file, which will increase the bundle size since you have
both **English** and **Your desired language** bundled,
you can use the plugin [NormalModuleReplacementPlugin](https://webpack.js.org/plugins/normal-module-replacement-plugin/#root)
provided by [webpack](https://webpack.js.org) to replace the default language file,
so that you will only get **1** language file bundled.
Add the code below into your `webpack.config.js` to get it work.

> webpack.config.js

```typescript
{
  plugins: [
    new webpack.NormalModuleReplacementPlugin(
      /element-plus[\/\\]lib[\/\\]locale[\/\\]lang[\/\\]en/,
      'element-plus/lib/locale/lang/zh-cn'
    ),
  ]
}
```
