Supported Languages
LibreChat currently supports the following languages:Western Europe
- English (en)
- Deutsch (de)
- Español (es)
- Français (fr)
- Italiano (it)
- Nederlands (nl)
- Português PT (pt-PT)
- Português BR (pt-BR)
- Català (ca)
Northern & Eastern Europe
- Polski (pl)
- Русский (ru)
- Svenska (sv)
- Čeština (cs)
- Dansk (da)
- Eesti (et)
- Suomi (fi)
- Magyar (hu)
- Latviešu (lv)
- Lietuvių (lt)
- Norsk (nn, nb)
- Slovenčina (sk)
- Slovenščina (sl)
- Українська (uk)
- Bosanski (bs)
- Íslenska (is)
Asia & Middle East
- 中文 (简体) (zh-Hans)
- 中文 (繁體) (zh-Hant)
- 日本語 (ja)
- 한국어 (ko)
- ไทย (th)
- Tiếng Việt (vi)
- Bahasa Indonesia (id)
- العربية (ar)
- עברית (he)
- فارسی (fa)
- ქართული (ka)
- Հայերեն (hy)
- Türkçe (tr)
- ئۇيغۇرچە (ug)
- བོད་ཡིག (bo)
Translation Management
LibreChat uses Locize for translation management, which provides:- Professional translation management tools
- Automated translation workflows
- Real-time translation updates
- Quality assurance for translations
We thank Locize for their translation management tools that support multiple languages in LibreChat.
Translation Progress
You can track the current translation progress for all languages:How to Contribute Translations
Check Current Progress
Review the Translation Guide to see which languages need improvement.
Join the Community
Join the Discord community to discuss translations and get guidance.
Access Locize Platform
Contact the maintainers through Discord to get access to the Locize translation platform.
Translation Files
Translation files are stored in JSON format in the following locations:Translation Key Structure
Translation keys use semantic prefixes to organize translations by feature:| Prefix | Purpose | Example |
|---|---|---|
com_ui_ | General UI elements | com_ui_submit, com_ui_cancel |
com_assistants_ | Assistants feature | com_assistants_create, com_assistants_delete |
com_nav_ | Navigation elements | com_nav_settings, com_nav_home |
com_auth_ | Authentication | com_auth_login, com_auth_signup |
com_endpoint_ | API endpoints | com_endpoint_openai, com_endpoint_anthropic |
com_error_ | Error messages | com_error_invalid_input, com_error_network |
Using Translations in Code
All user-facing text must be localized using theuseLocalize() hook:
React Components
With Variables
Adding New Translation Keys
When adding new features that require user-facing text:Use Appropriate Prefix
Choose the correct semantic prefix for your key:
- UI elements:
com_ui_ - Feature-specific:
com_[feature]_ - Errors:
com_error_
i18n Configuration
LibreChat usesi18next for internationalization with the following setup:
Configuration (client/src/locales/i18n.ts):
- Language Detection: Automatically detects user’s preferred language from browser settings
- Fallback Languages: Falls back to English if translation is missing
- Chinese Variants: Handles Traditional (zh-Hant) and Simplified (zh-Hans) Chinese
- Interpolation: Supports variables in translation strings
Translation Best Practices
Do:
- Use semantic key prefixes consistently
- Keep translations concise and user-friendly
- Maintain consistent terminology across the app
- Test translations in context before submitting
- Consider cultural nuances and regional differences
- Use gender-neutral language when possible
- Preserve formatting placeholders (e.g.,
{{variable}})
ESLint i18n Rules
The project enforces localization through ESLint rules: Configuration (ineslint.config.mjs):
- All JSX text content is localized
- Template literals are validated
- Prevents hardcoded strings in user-facing text
Language-Specific Considerations
Right-to-Left (RTL) Languages
For RTL languages like Arabic (ar), Hebrew (he), and Persian (fa):
- UI automatically adjusts text direction
- Icons and layouts mirror appropriately
- Test thoroughly in RTL mode
Chinese Variants
LibreChat supports both Chinese variants:- Simplified Chinese (
zh-Hans): Used in mainland China, Singapore - Traditional Chinese (
zh-Hant): Used in Taiwan, Hong Kong, Macau
zh-TW,zh-HK→zh-Hant→enzh→zh-Hans→en
Pluralization
Use i18next pluralization for count-dependent translations:Testing Translations
Local Testing
- Change language in browser settings or app settings
- Verify translations appear correctly
- Check layout doesn’t break with longer/shorter text
- Test RTL languages if applicable
Testing Checklist
Translation Testing Checklist
Translation Testing Checklist
- Text displays in correct language
- No hardcoded English strings visible
- UI layout accommodates text length
- Special characters display correctly
- RTL languages display properly (if applicable)
- Placeholders are replaced with actual values
- Pluralization works correctly
- Fallback to English works for missing keys
Contributing New Languages
To add support for a new language:Propose Language Addition
Open a discussion in the GitHub Discussions proposing the new language.
Setup Language Files
Work with maintainers to:
- Add language code to
i18n.ts - Create translation file structure
- Configure Locize for the new language
Translation Resources
Official Translation Guide
Detailed guide with current translation status
Discord Community
Join to discuss translations and get help
Locize Platform
Translation management platform used by LibreChat
i18next Documentation
Learn about the i18n framework used
Getting Help
If you need assistance with translations:- Join Discord: Ask in the translation channel on Discord
- GitHub Discussions: Post questions in Discussions
- Review Documentation: Check the official translation guide