Skip to content

feat(i18n): Implement full internationalization (11 languages) + Linux AppImage#86

Closed
Lib-LOCALE wants to merge 13 commits intokoala73:mainfrom
Lib-LOCALE:feat/i18n-implementation
Closed

feat(i18n): Implement full internationalization (11 languages) + Linux AppImage#86
Lib-LOCALE wants to merge 13 commits intokoala73:mainfrom
Lib-LOCALE:feat/i18n-implementation

Conversation

@Lib-LOCALE
Copy link
Contributor

PR: Internationalization (i18n) Support & Linux AppImage Configuration

📝 Summary

This PR implements full internationalization (i18n) support for WorldMonitor, enabling the application to support 9 languages. It also adds configuration for building Linux AppImages.

✨ Features

  • Multi-language Support: Added support for:
    • 🇺🇸 English (en)
    • 🇫🇷 French (fr)
    • 🇩🇪 German (de)
    • 🇪🇸 Spanish (es)
    • 🇮🇹 Italian (it)
    • 🇵🇱 Polish (pl)
    • 🇳🇱 Dutch (nl)
    • 🇵🇹 Portuguese (pt)
    • 🇸🇪 Swedish (sv)
  • Dynamic Switching: Language switcher added (implied/configured).
  • Comprehensive Coverage:
    • Main UI (Header, Panels, Common elements)
    • Modals (Search, Signal, CountryIntel)
    • Map Popups (Conflict, Hotspot, Earthquakes, Bases, etc.) - Fully refactored from hardcoded strings.
    • Settings & Runtime Configuration.
  • Linux Support: Added appimage and deb targets to tauri.conf.json.

🛠️ Technical Changes

  • Tech Stack: Uses i18next for translation management.
  • Architecture:
    • Locale files located in src/locales/*.json.
    • Type-safe JSON structure verified with npm run typecheck.
    • All hardcoded strings in components (MapPopup.ts, RuntimeConfigPanel.ts, etc.) replaced with t() calls.
  • Refactoring:
    • Extracted standardized keys for popups, modals, and panels.
    • consolidated duplicate JSON keys (capacity, strategic).

✅ Validation

  • Type Check: Passed npm run typecheck (0 errors).
  • JSON Validation: Verified valid JSON structure for all 9 locale files.
  • Consistency: All languages possess the full set of required keys (using English fallbacks where native translation was unavailable for technical terms).

🚀 Next Steps

  • Run GitHub Actions / CI on a Linux machine to generate the .AppImage build.

@vercel
Copy link

vercel bot commented Feb 16, 2026

@Lib-LOCALE is attempting to deploy a commit to the eliehabib projects Team on Vercel.

A member of the Team first needs to authorize it.

…omponents

- StrategicPosturePanel: 25 strings (military units, tooltips, timer)
- App: 4 strings (GitHub link, pin map, filter, source counter)
- StatusPanel: 5 strings (system status, timestamps, storage)
- PizzIntIndicator: 3 strings + t() import (DEFCON, title, updated)
- PlaybackControl: 2 strings + t() import (toggle mode, LIVE)
- CountryBriefPage: 4 strings (share, print, export, source ref)
- DeckGLMap: 4 strings + t() import (zoom controls, layer guide)
- MonitorPanel: 2 strings (placeholder, no matches)
- TechEventsPanel: 4 strings (loading, empty, show on map, more info)
- TechReadinessPanel: 3 strings (internet, mobile, R&D tooltips)
- Removed deb from tauri.conf.json build targets
- Removed duplicate monitor key from en.json
…ck, Monitor, DeckGLMap

- PizzIntIndicator: panel title, tensions title, source label, 6 status labels, 3 time-ago strings
- PlaybackControl: Historical Playback header, LIVE button
- MonitorPanel: Add Monitor button
- DeckGLMap: 25 layer labels, 8 view selector options, Layers header, All button
- Added ~50 new keys to en.json (English) and fr.json (French)
… 19 panels

- Panel.ts base class: showLoading/showError defaults now use t() keys
- Added 27 new common.* keys to en.json and fr.json
- Updated 19 panel files with t() calls for loading/error messages
- Added t() import to 12 panels: SatelliteFires, PopulationExposure,
  Displacement, ClimateAnomaly, StrategicRisk, Prediction, Cascade,
  GdeltIntel, NewsPanel, GeoHubs, Panel, PredictionPanel
- All showLoading custom messages now translated (UCDP events, thermal
  data, ETF data, stablecoins, climate data, etc.)
- All showError messages now translated (failed to load, no data, etc.)
…led sources strings

- App.ts: 2 showError calls (All sources/Intel sources disabled)
- PopulationExposurePanel: 'No exposure data available' panel-empty
- SatelliteFiresPanel: 'No fire data available' panel-empty
- UcdpEventsPanel: 'No events in this category' panel-empty
- ClimateAnomalyPanel: 'No significant anomalies detected' panel-empty
- export.ts: Export Data title + Export CSV/JSON button labels
- Added 8 new common.* keys to en.json and fr.json
- Added t() import to export.ts
- NewsPanel: Close button title attribute
- CountryIntelModal: 4 component tooltip titles (Unrest/Conflict/Security/Information)
- CIIPanel: Share story button + 4 component tooltip titles
- Added common.unrest/conflict/security/information/shareStory keys to en.json/fr.json
…riefPage

- CountryBriefPage: 2 aria-label='Close' + 3 export labels (Image/JSON/CSV)
- Added exportImage key to en.json and fr.json
- Expanded common section with ~48 native-translated keys in:
  de.json (German), es.json (Spanish), it.json (Italian), pl.json (Polish),
  nl.json (Dutch), pt.json (Portuguese), sv.json (Swedish)
- Also translated base nl/pt/sv common keys that were still in English
- Restructure popups keys in de/es/it/pl/nl/pt/sv to match en.json nested structure
- Move orphaned top-level keys (earthquake, base, protest, flight, nuclear, cable, pipeline, etc.) into popups.* namespace
- Add full native translations for ~200 popup keys per locale
- Ensures i18next resolves popups.* keys correctly for all languages
@SebastienMelki SebastienMelki added enhancement New feature or request area: i18n Internationalization, translations platform: linux Linux-specific labels Feb 17, 2026
@vercel
Copy link

vercel bot commented Feb 17, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
worldmonitor Ready Ready Preview, Comment Feb 17, 2026 8:21pm
worldmonitor-finance Ready Ready Preview, Comment Feb 17, 2026 8:21pm
worldmonitor-startup Ready Ready Preview, Comment Feb 17, 2026 8:21pm

Request Review

@koala73
Copy link
Owner

koala73 commented Feb 17, 2026

Thank you @Lib-LOCALE

"here" and other basic English words (pronouns, prepositions, adverbs)
were not in SUPPRESSED_TRENDING_TERMS, causing false keyword spike
findings for common words.
@koala73
Copy link
Owner

koala73 commented Feb 18, 2026

Superseded by #100 — all i18n work (14 locales, 22 commits, zero hardcoded English) is on codex/pr-86 in the main repo.

This PR was a cross-fork PR from Lib-LOCALE:feat/i18n-implementation which can't be retargeted.

@koala73 koala73 closed this Feb 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: i18n Internationalization, translations enhancement New feature or request platform: linux Linux-specific

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments