Supported Languages
Fresh currently supports the following locales:English
en - English (default)Chinese (Simplified)
zh-CN - 简体中文Japanese
ja - 日本語Spanish
es - EspañolFrench
fr - FrançaisGerman
de - DeutschItalian
it - ItalianoPortuguese (Brazilian)
pt-BR - Português (Brasil)Russian
ru - РусскийKorean
ko - 한국어Vietnamese
vi - Tiếng ViệtThai
th - ไทยUkrainian
uk - УкраїнськаCzech
cs - ČeštinaThe complete list of locale files is available in the locales directory of the Fresh repository.
Setting Your Language
There are three ways to configure your preferred language:1. Using the Settings UI
The easiest method:2. Configuration File
Edit your~/.config/fresh/config.json:
3. Command-Line Flag
Override the locale for a single session:Locale Priority
Fresh determines the active locale using this priority order (highest to lowest):- Command-line flag:
--locale <LOCALE> - Configuration file:
"locale": "<LOCALE>"inconfig.json - System locale: Detected from
LANGenvironment variable - Default fallback:
en(English)
System Locale Detection
System Locale Detection
Fresh reads the The language code is extracted from the locale string (e.g.,
LANG environment variable to detect your system locale:ja from ja_JP.UTF-8).What Gets Translated
When you change the locale, the following UI elements are translated:- Menu bar - All menu labels and items
- Command palette - Command names and descriptions
- Status bar - Status messages and indicators
- Prompts - File open, save, search dialogs
- Error messages - User-facing error text
- Settings UI - Setting labels and descriptions
- Help text - In-app documentation
What doesn’t change:
- Your file contents (obviously!)
- Plugin-provided text (unless the plugin supports i18n)
- LSP messages from language servers
- Log files and debug output
Plugin Translations
Plugins can provide their own translations to match your selected locale.For Plugin Users
Plugins that support i18n will automatically use your configured locale. No additional setup required!For Plugin Developers
To add translations to your plugin:-
Create
.i18n.jsonfiles alongside your plugin: -
Structure your translation files:
-
Use translations in your plugin code:
Contributing Translations
Want to add or improve a translation?Find the Locale File
Locale files are in the Fresh repository:
crates/fresh-editor/locales/<locale>.jsonEdit or Create
- To improve existing: Edit the
.jsonfile - To add new language: Copy
en.jsonand translate all strings
Translation Guidelines
- Keep it concise - UI space is limited in a terminal
- Match tone - Fresh uses friendly, direct language
- Test in context - See how translations appear in menus and prompts
- Preserve placeholders - Variables like
{file}must remain unchanged - Check key bindings - Some terms reference keyboard shortcuts
Encoding vs. Locale
For file encoding support, see:- Text Encoding Guide - File encoding support (UTF-8, GBK, Shift-JIS, EUC-KR, UTF-16, etc.)
Examples
Troubleshooting
Translations Not Appearing
- Verify locale code - Check spelling (e.g.,
zh-CNnotzh-cn) - Restart Fresh - Locale changes require restart
- Check config syntax - Ensure
config.jsonis valid JSON - View effective config:
Mixed Language UI
If some parts are translated but others aren’t:- Normal: Some dynamic content (like plugin text) may not be translated
- LSP messages: Language servers send messages in their own language
- Incomplete translation: Some strings may not be translated yet - consider contributing!
See Also
- CLI Commands - Using
--localeflag - Configuration - Config file format
- Text Encoding - File encoding (different from UI locale)