---
title: Contribute a Translation
description: How to add a new language to LibreChat.
---

# How to add a new language to LibreChat 🌍

## Minimum Requirements:

1. Good knowledge of the language (some terms may undergo significant changes during translation)
2. A text editor is required. While options like Notepad or Notepad++ are available, it is recommended to use **[VSCode](https://code.visualstudio.com/download)** as it is more suitable for this task..

## Language Translation

### Preparation

Fork the [LibreChat repository](https://github.librechat.ai) and download it using git clone. See: [Getting Started - GitHub](/docs/development/get_started#github)

### Add your language to `Translation.ts`:

- Navigate to the `client\src\localization` folder and open the `Translation.ts` file

- At the beginning of the code, add your language below all the others in this format:

  `import Language-name from './languages/** ';`

  Example (English):`import English from './languages/Eng';`

- Further down in the code, add in the language mapping, the following:

  `'**-**': LanguageName,`

> Replace `**-**` with the local identifier of your language (ask ChatGPT or search it on Google).
> Replace `LanguageName` with the name of your language.

Example (English): `'en-US': English,`

### Create your new language file

- Go into the `client\src\localization\languages` folder and create a file named as follows: `**.tsx`

  Example: `Eng.tsx`

- Copy all the content from `Eng.tsx` into your file and modify it as follows:

  ```ts filename="Eng.tsx"
  // your-language-name phrases

  export default {
    com_ui_examples: 'Examples',
    // more translations here...
  ```

  **Translate only the part after the `:`.**
  Example:

  ```ts filename="**.tsx (new language)"
  // my-language phrases

  export default {
    com_ui_examples: 'This is a translated example',
    // Add more translations here
  }
  ```

<Callout type="warning" title="Note:">
  Do not modify the `com_...` part
</Callout>

<Callout type="success" title="Important:">
  - Delete the Language list after `com_nav_setting_general: 'General',` near the bottom of the file
  (You do not need to translate the individual language names) - Do not delete
  `com_nav_setting_data: 'Data controls'` (you need to translate it)
</Callout>

### Add your language to `Eng.tsx`

Open `Eng.tsx` and add your language to the language list in the bottom of the document.

### Add your language to the menu

- Navigate to the file `client\src\components\Nav\SettingsTabs\General\General.tsx`.
- Add your language to the `LangSelector` variable in the following way:

  ```ts filename="LangSelector"
  export const LangSelector = ({
    //other code
          <option value="en-US">{localize(lang, 'com_nav_lang_english')}</option>
          //other languages...
          <option value="**">{localize(lang, 'com_nav_lang_your-language-name')}</option>
        </select>
      </div>
    );
  };
  ```

<Callout type="note">
  `**-**` is the local identifier of your language and `com_nav_lang_your-language-name` stands for
  the name of your language. Example: `com_nav_lang_english` or `com_nav_lang_italian`
</Callout>

**You should only need to add one line of code:**

```ts
<option value="**-**">{localize(lang, 'com_nav_lang_your-language-name')}</option>
```

### Summary

If you followed everything you should have **one new file** and **3 modified files**:

```bash
  new file:   client/src/localization/languages/**.tsx                       <-----new language
  modified:   client/src/components/Nav/SettingsTabs/General/General.tsx
  modified:   client/src/localization/Translation.ts
  modified:   client/src/localization/languages/Eng.tsx
```

<Callout type="tip">You can confirm this by using the following command: `git status`</Callout>

### Commit and create a new PR

See: [Make a PR](/docs/development/get_started#create-a-pull-request-pr)

<Callout type="success" tytle="Pull Request">
  - Answer all the questions, and in the "Type of Change" section, check `- [x] Translation update`
  - **Delete irrelevant comments** from the PR template - Create a pull request 😎
</Callout>
