Supported Languages
World Monitor is translated into:🇬🇧 English
Primary language, always loaded
🇫🇷 French
Français
🇪🇸 Spanish
Español
🇩🇪 German
Deutsch
🇮🇹 Italian
Italiano
🇵🇱 Polish
Polski
🇵🇹 Portuguese
Português
🇳🇱 Dutch
Nederlands
🇸🇪 Swedish
Svenska
🇷🇺 Russian
Русский
🇸🇦 Arabic
العربية (RTL)
🇨🇳 Chinese
中文 (Simplified)
🇯🇵 Japanese
日本語
🇹🇷 Turkish
Türkçe
🇹🇭 Thai
ไทย
🇻🇳 Vietnamese
Tiếng Việt
Changing Language
The language selector is located in the header bar (top-right corner):1
Click the language flag icon
Example: 🇬🇧 (English)
2
Select a language from the dropdown
Languages are listed with native names (e.g., “Français” not “French”).
3
Page reloads with new language
The app reloads to apply the new language across all components.
4
Preference is saved
Your language choice is stored in
localStorage and persists across sessions.Lazy Loading
To minimize bundle size, World Monitor uses lazy loading for language files:- English is always bundled (fallback language)
- All other languages are fetched on demand when selected
- Initial page load only downloads English (~30KB)
- Switching to French fetches
fr.json(~32KB) dynamically - Only the active language is ever loaded
- Language switch: ~100–200ms (network fetch + parse)
- Subsequent switches: instant (cached in
localStorage)
Right-to-Left (RTL) Support
World Monitor has native RTL layout support for:- Arabic (
ar) - Hebrew (planned, not yet implemented)
What Changes in RTL Mode
When you select Arabic:Text Direction
All text flows right-to-left:
- Headlines
- Panel content
- Button labels
- Tooltips
Layout Mirroring
UI elements flip horizontally:
- Navigation menus
- Panel order
- Icon positions
- Scroll bars
Map Controls
Globe controls mirror:
- Zoom buttons swap sides
- Layer toggles reposition
- Legend moves to left
Chart Labels
D3.js charts adapt:
- Y-axis moves to right
- X-axis labels flip
- Legends reposition
Technical Implementation
RTL is applied via the HTMLdir attribute:
All World Monitor components use logical CSS properties (
inline-start, inline-end, block-start, block-end) for automatic RTL support.Localized News Feeds
When you change the UI language, World Monitor automatically loads region-specific RSS feeds:Language-Specific Feed Sets
Seven locales have dedicated native-language news sources:- 🇫🇷 French
- 🇸🇦 Arabic
- 🇩🇪 German
- 🇪🇸 Spanish
- 🇹🇷 Turkish
- 🇵🇱 Polish
- 🇷🇺 Russian
- 🇹🇭 Thai
- 🇻🇳 Vietnamese
- Le Monde
- Jeune Afrique
- France24
- RFI (Radio France Internationale)
- Ouest-France
AI Translation
World Monitor includes LLM-powered translation for headlines and summaries:1
News arrives in source language
RSS feeds provide headlines in their original language (English, Arabic, French, etc.).
2
User changes UI language
Example: Switch from English to Spanish.
3
Translation request is sent to LLM
Headlines are batched and sent to your configured LLM provider (Ollama → Groq → OpenRouter).
4
Translated headlines appear in UI
Original: “Russia launches missile strikes”
Translated: “Rusia lanza ataques con misiles”
Translated: “Rusia lanza ataques con misiles”
World Brief Localization
The AI-generated World Brief adapts to your selected language:- English
- French
- Arabic (RTL)
Date & Number Formatting
World Monitor usesIntl APIs for locale-aware formatting:
Date Formatting
- English (en-US)
- French (fr-FR)
- Arabic (ar-SA)
- Chinese (zh-CN)
March 1, 20263/1/2026 2:30 PM2 hours ago
Number Formatting
- English (en-US)
- German (de-DE)
- Arabic (ar-SA)
1,234,567.89$1,234.5673.2%
Language Detection
On first load, World Monitor detects your preferred language using:- localStorage (if you’ve previously selected a language)
- Browser
Accept-Languageheader (browser/OS language) - Fallback to English (if detection fails)
- Browser reports
Accept-Language: fr-FR, fr;q=0.9, en;q=0.8 - World Monitor extracts
frand loads French - If French fails to load, falls back to English
Language preference is per-device. If you set French on your laptop, your phone will still default to its own browser language.
Translation Coverage
All UI text is localized, including:- ✅ Panel headers and labels
- ✅ Button text and tooltips
- ✅ Error messages and warnings
- ✅ Settings dialogs
- ✅ Command palette (Cmd+K)
- ✅ Country names (via
Intl.DisplayNames) - ✅ Time-relative labels (“2 hours ago”)
- ❌ News headlines (unless AI translation is enabled)
- ❌ External content (YouTube captions, Polymarket contracts)
Troubleshooting
Language selector missing
Language selector missing
The language selector only appears on screens ≥ 768px wide. On mobile, the selector is hidden — language is auto-detected from browser settings.
Page doesn't reload after language change
Page doesn't reload after language change
World Monitor requires a full page reload to apply the new language (i18n limitation). If the reload fails:
- Check browser console for errors
- Ensure JavaScript is enabled
- Try manually reloading (Cmd+R / Ctrl+R)
Some text remains in English
Some text remains in English
This indicates missing translation keys. Possible causes:
- The translation file (
fr.json,ar.json, etc.) is incomplete - A component isn’t using the
t()translation function - External content (news headlines) doesn’t support translation
RTL layout is broken
RTL layout is broken
RTL mode requires CSS logical properties. If the layout breaks:
- Check if your browser supports
inline-start/inline-end(IE11 doesn’t) - Try force-reloading (Cmd+Shift+R / Ctrl+Shift+R)
- Check browser zoom is 100%
AI translation not working
AI translation not working
Ensure:
- You have a configured LLM provider (Ollama, Groq, or OpenRouter)
- Your API key is valid (check Settings → LLMs)
- The LLM provider supports your target language
Localized news feeds not loading
Localized news feeds not loading
Localized feeds require specific language codes. Check:
- Your language is one of the 7 with native feeds (French, Arabic, German, Spanish, Turkish, Polish, Russian, Thai, Vietnamese)
- RSS sources are not blocked by your network/firewall
- Browser console for CORS or network errors
Related Features
- World Brief — AI summaries in your language
- Country Analysis — Localized country names and data
- Themes — Theme preferences persist across language changes