RAG-Flex uses a dual-layer language mechanism to provide a truly multilingual experience:
1️⃣ Configuration UI Language (System Auto-detected)
Determined by system language
🔍 Auto-detection: Automatically detects system language when plugin starts
🎨 UI Display: All configuration labels use the detected language
🔄 How to Switch: Change your operating system language settings, then restart the plugin
Examples:
System language is Traditional Chinese → Configuration UI displays in Chinese
System language is English → Configuration UI displays in English
2️⃣ Message Language (User Selectable)
Selected by user in settings
⚙️ Configurable: Choose "Message Language" in plugin settings
💬 Scope: All runtime status messages, error messages, and LLM system prompts
🔄 Immediate Effect: Changes apply immediately to new operations
Examples:
System is English, but select "繁體中文 (zh-TW)"
Configuration UI: English ✅
Runtime messages: Traditional Chinese ✅
📊 Language Scope Comparison
Component
Language Used
How to Switch
When Applied
Configuration UI Labels
System Language
Change system language + restart plugin
Plugin startup
Message Language Selector
System Language
Change system language + restart plugin
Plugin startup
Other Config Labels
System Language
Change system language + restart plugin
Plugin startup
Status Messages
Message Language
Select in settings
Immediately
Error Messages
Message Language
Select in settings
Immediately
LLM System Prompts
Message Language
Select in settings
Immediately
🎯 Use Cases
Scenario 1: Fully Monolingual Environment
Situation: System is Traditional Chinese, want full Chinese experience
Setup:
✅ System Language: Traditional Chinese
✅ Message Language: Select "繁體中文 (zh-TW)"
Result:
Configuration UI: Traditional Chinese
Runtime Messages: Traditional Chinese
Scenario 2: Mixed Language Environment
Situation: System is English, but want Chinese messages
Setup:
✅ System Language: English
✅ Message Language: Select "繁體中文 (zh-TW)"
Result:
Configuration UI: English
Runtime Messages: Traditional Chinese
Scenario 3: Learning Mode
Situation: Want to see Chinese-English side-by-side for learning technical terms
Setup:
✅ System Language: Any
✅ Message Language: Switch to observe different language expressions
Result:
Can switch message language anytime for comparative learning
🔧 Technical Details
Why Can't Configuration UI Switch Dynamically?
This is an LM Studio SDK limitation, not a design flaw:
// Plugin lifecycleexport async function main(context: PluginContext) { // 1. Detect system language const systemLang = detectSystemLanguage(); // 2. Generate configuration UI (using system language) const config = createDynamicConfig(models, systemLang); // 3. Register with LM Studio (configuration UI is now fixed) context.withConfigSchematics(config); // ↑ // Cannot be changed after this}
SDK Limitations:
withConfigSchematics() can only be called once
Cannot dynamically update configuration UI after registration
No API provided for "configuration UI re-rendering"
Our Solution:
✅ Configuration UI: Follows system language (true localization)
✅ Runtime Messages: User selectable (flexibility)
✅ Combined: Achieves optimal user experience
🌐 System Language Detection Mechanism
Detection Order
Environment variable LANG (most common)
Environment variable LANGUAGE (fallback)
Environment variable LC_ALL (locale override)
Detection Logic
export function detectSystemLanguage(): SupportedLanguage { const envLang = process.env.LANG || process.env.LANGUAGE || process.env.LC_ALL || ""; // Traditional Chinese (Taiwan, Hong Kong, Macau) if (envLang.includes("zh_TW") || envLang.includes("zh-TW") || envLang.includes("zh_HK")) { return "zh-TW"; } // Japanese if (envLang.includes("ja") || envLang.includes("jp")) { return "ja"; } // Simplified Chinese (temporarily mapped to Traditional, future support) if (envLang.includes("zh_CN") || envLang.includes("zh-CN")) { return "zh-TW"; // TODO: Add zh-CN support } // Default to English return "en";}
🔄 How to Change System Language
Windows
Settings → Time & Language → Language
Add language or set as default
Restart application
Environment Variable Setup (Advanced):
set LANG=zh_TW.UTF-8set LANG=en_US.UTF-8set LANG=ja_JP.UTF-8