Skip to content

Internationalization and translation

The panel separates UI language (labels, dates, layout direction) from CVE content language (titles and descriptions from feeds, usually English). This chapter explains locales, RTL, Jalali dates, and auto-translation.

UI locales

Six interface languages are defined in src/i18n/messages/:

Code Direction Notes
fa RTL Persian digits/dates via formatLocale
en LTR Default source labels
ar RTL Arabic UI strings
ru LTR Russian UI strings
zh LTR Chinese UI strings
fr LTR French UI strings

Changing language updates <html lang dir>, persists cve-radar:locale, and retriggers CVE text translation when auto-translate is enabled.

CVE content translation

When auto-translate is on (Infrastructure settings):

  1. On scan — server may fill Persian (title_fa, description_fa) via enrich.ts.
  2. On locale change — client calls POST /api/translate with batches of missing items for fa, ar, ru, zh, or fr.
  3. Results merge into vulnerability.translations[locale] and display via vulnDisplay.ts.
  4. English subtitle under title shows original source text when translation differs.

Translation chain (server): MyMemory → LibreTranslate (if configured) → Ollama for Persian fallback. Responses are cached in server memory by text hash.

Font and readability

Font scale is independent of locale — operators with vision needs can enlarge all UI text without browser zoom side effects on layout.

Operator checklist

  • Enable auto-translate if non-English readers consume CVE narratives daily.
  • Expect first locale switch after a large scan to take time (batched API calls).
  • Keep English source links (NVD/GitHub) as authority for ticketing.

Next: API reference