Skip to main content
World Monitor supports 16 languages with fully localized UI, region-specific news feeds, and native right-to-left (RTL) layout support.

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.
Language preference is detected automatically on first load from your browser’s Accept-Language header. You can override this by manually selecting a language.

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
This means:
  • Initial page load only downloads English (~30KB)
  • Switching to French fetches fr.json (~32KB) dynamically
  • Only the active language is ever loaded
Performance:
  • 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 HTML dir attribute:
CSS uses logical properties for automatic mirroring:
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:
  • Le Monde
  • Jeune Afrique
  • France24
  • RFI (Radio France Internationale)
  • Ouest-France
Other languages (English, Italian, Dutch, Swedish, Chinese, Japanese) continue to load English-language international feeds (BBC, Reuters, AP, etc.).

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”
Caching: Translations are cached for 24 hours to reduce API costs.
AI translation requires a configured LLM provider (Ollama, Groq, or OpenRouter). Without one, headlines appear in their original source language.

World Brief Localization

The AI-generated World Brief adapts to your selected language:
The LLM prompt instructs the model to generate summaries in the active UI language.

Date & Number Formatting

World Monitor uses Intl APIs for locale-aware formatting:

Date Formatting

  • March 1, 2026
  • 3/1/2026 2:30 PM
  • 2 hours ago

Number Formatting

  • 1,234,567.89
  • $1,234.56
  • 73.2%
Implementation:

Language Detection

On first load, World Monitor detects your preferred language using:
  1. localStorage (if you’ve previously selected a language)
  2. Browser Accept-Language header (browser/OS language)
  3. Fallback to English (if detection fails)
Example detection:
  • Browser reports Accept-Language: fr-FR, fr;q=0.9, en;q=0.8
  • World Monitor extracts fr and 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

The language selector only appears on screens ≥ 768px wide. On mobile, the selector is hidden — language is auto-detected from browser settings.
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)
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
Workaround: Report missing translations via GitHub issues.
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%
Workaround: Use a modern browser (Chrome 89+, Firefox 68+, Safari 12.1+).
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
Test: Generate a World Brief — if it’s in English regardless of UI language, translation is failing.
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
Workaround: Switch to English to load international feeds.