# LibreChat Localization Guide This guide explains how to add new languages to LibreChat's localization system. ## Adding a New Language To add a new language to LibreChat, follow these steps: ### 1. Add the Language to Locize Project - Navigate to the [LibreChat locize project](https://www.locize.app/cat/62uyy7c9), - Click the "ADD LANGUAGE" button, typically found within the "..." menu of the "Start to translate" card on the project overview page. ### 2. Update the Language Selector Component Edit `client/src/components/Nav/SettingsTabs/General/General.tsx` and add your new language option to the `languageOptions` array: ```typescript { value: 'language-code', label: localize('com_nav_lang_language_name') }, ``` Example: ```typescript { value: 'bo', label: localize('com_nav_lang_tibetan') }, { value: 'uk-UA', label: localize('com_nav_lang_ukrainian') }, ``` **Note:** Use the appropriate language code format: - Use simple codes (e.g., `bo`) for languages without regional variants - Use region-specific codes (e.g., `uk-UA`) when needed ### 3. Add Localization Keys In `client/src/locales/en/translation.json`, add the corresponding localization key for your language label: ```json "com_nav_lang_language_name": "Native Language Name", ``` Example: ```json "com_nav_lang_tibetan": "བོད་སྐད་", "com_nav_lang_ukrainian": "Українська", ``` **Best Practice:** Use the native language name as the value. ### 4. Create the Translation File Create a new directory and translation file: ```bash mkdir -p client/src/locales/[language-code] ``` Create `client/src/locales/[language-code]/translation.json` with an empty JSON object: ```json { } ``` Example: - `client/src/locales/bo/translation.json` - `client/src/locales/uk/translation.json` ### 5. Configure i18n Update `client/src/locales/i18n.ts`: 1. Import the new translation file: ```typescript import translationLanguageCode from './language-code/translation.json'; ``` 2. Add it to the `resources` object: ```typescript export const resources = { // ... existing languages 'language-code': { translation: translationLanguageCode }, } as const; ``` Example: ```typescript import translationBo from './bo/translation.json'; import translationUk from './uk/translation.json'; export const resources = { // ... existing languages bo: { translation: translationBo }, uk: { translation: translationUk }, } as const; ``` ### 6. Handle Fallback Languages (Optional) If your language should fall back to a specific language when translations are missing, update the `fallbackLng` configuration in `i18n.ts`: ```typescript fallbackLng: { 'language-variant': ['fallback-language', 'en'], // ... existing fallbacks }, ``` ## Translation Process After adding a new language: 1. The empty translation file will be populated through LibreChat's automated translation platform 2. Only the English (`en`) translation file should be manually updated 3. Other language translations are managed externally ## Language Code Standards - Use ISO 639-1 codes for most languages (e.g., `en`, `fr`, `de`) - Use ISO 639-1 with region codes when needed (e.g., `pt-BR`, `zh-Hans`) - Tibetan uses `bo` (Bodic) - Ukrainian uses `uk` or `uk-UA` with region ## Testing After adding a new language: 1. Restart the development server 2. Navigate to Settings > General 3. Verify your language appears in the dropdown 4. Select it to ensure it changes the UI language code ## Notes - Keep language options alphabetically sorted in the dropdown for better UX - Always use native script for language names in the dropdown - The system will use English as fallback for any missing translations