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):
- On scan — server may fill Persian (
title_fa,description_fa) viaenrich.ts. - On locale change — client calls
POST /api/translatewith batches of missing items forfa,ar,ru,zh, orfr. - Results merge into
vulnerability.translations[locale]and display viavulnDisplay.ts. - 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