Skip to content

Complete Slovak i18n for the Monitor dashboard - #277

Merged
MacRimi merged 5 commits into
MacRimi:developfrom
Vaso73:feature/monitor-dashboard-i18n-v2
Aug 6, 2026
Merged

Complete Slovak i18n for the Monitor dashboard#277
MacRimi merged 5 commits into
MacRimi:developfrom
Vaso73:feature/monitor-dashboard-i18n-v2

Conversation

@Vaso73

@Vaso73 Vaso73 commented Aug 4, 2026

Copy link
Copy Markdown

Base: MacRimi/ProxMenux:develop
Compare: Vaso73/ProxMenux:feature/monitor-dashboard-i18n-v2

Summary

This PR completes Slovak localization for the ProxMenux Monitor dashboard in AppImage/.

It builds on the earlier Slovak i18n work from PR #273, which added Slovak support for the main CLI/scripts and the public documentation site. The Monitor dashboard already had an initial AppImage i18n seed, but Slovak was still marked as partial. This PR finishes that work and marks Slovak as complete for the Monitor dashboard.

What changed

  • Added/finished the Monitor dashboard client-side i18n infrastructure.
  • Extracted English Monitor UI text into AppImage/messages/en/common.json.
  • Completed the Slovak translation in AppImage/messages/sk/common.json.
  • Added fallback behavior so missing translations safely fall back to English.
  • Added/kept registered placeholder locales for future community translations.
  • Added a language selector in the Monitor settings UI.
  • Localized dynamic/runtime labels such as:
    • SMART / NVMe health labels
    • backup target labels
    • firewall interface type labels
    • generated health/security status text

Notes

web/ and AppImage/ are separate projects in this repository. This PR only changes the Monitor dashboard under AppImage/; it does not replace or regenerate the public documentation site under web/.

Testing

Tested against a real Proxmox VE host:

  • Proxmox VE: 9.2.6
  • Monitor deployed on an internal test Proxmox VE host
  • npm run build passes
  • en/common.json and sk/common.json have matching keys and placeholders:
    • 3600 English leaf keys
    • 3600 Slovak leaf keys
    • 0 missing keys
    • 0 placeholder mismatches
  • Live service check:
    • proxmenux-monitor.service active
    • /api/health healthy
    • main page returns HTTP 200
  • Verified English UI (persists across reload) and German fallback (falls back to English safely) via automated browser testing — no raw translation keys found in the UI.
  • Main areas covered:
    • Overview
    • VM & LXC
    • Node: Storage, Network, Hardware
    • Backup
    • Terminal
    • Admin: System Logs, Security, Settings, About
    • Health modal
    • Disk SMART modal
    • Backup create job modal

Commits

  • feat(monitor): add dashboard i18n infrastructure
  • i18n(monitor): extract English dashboard messages
  • i18n(monitor): add complete Slovak dashboard translation
  • fix(monitor): localize dynamic labels and generated status text

codex added 5 commits August 4, 2026 17:01
Add the Monitor dashboard i18n provider, supported language metadata, message catalogs, fallback behavior, and the initial language selector/wiring for the AppImage UI.
Move Monitor dashboard UI copy into translation keys and expand the English source catalog across the main pages, modals, and shared AppImage components.
Complete the Slovak Monitor dashboard catalog, mark Slovak as complete, and update the translation notes to reflect the finished AppImage UI coverage.
Localize runtime labels for SMART/NVMe details, backup target badges, firewall interface types, settings units, and generated health status copy while keeping the English and Slovak catalogs in key parity.
@MacRimi
MacRimi merged commit e581aa0 into MacRimi:develop Aug 6, 2026
@MacRimi

MacRimi commented Aug 6, 2026

Copy link
Copy Markdown
Owner

@Vaso73 this is genuinely fantastic work. Translating a live dashboard was already on my roadmap and something I was planning to tackle myself after the current LXC updates cycle — you've taken a huge chunk of that off my plate, and I'm deeply grateful for it. Contributions like this are what make maintaining the project sustainable.

The quality speaks for itself: 3603 leaf keys, 100% key parity between English and Slovak, zero placeholder mismatches. That level of discipline is rare and I want to call it out.

A few things I want to highlight because they deserve it:

  • The i18n layer itself is a clean, dependency-free React Context with useT() / useI18n() — exactly the right size for this project. Silent 3-step fallback (locale → English → key literal) means no user ever sees a raw key even with future missing translations. The localStorage + cross-tab storage event sync is a thoughtful touch.
  • The messages README.md sets the contract explicitly for future contributors — "keep placeholders like {uptime} unchanged" is the exact guardrail that lets community translations stay safe.
  • The registered stubs for de/es/fr/it/pt are perfect scaffolding — anyone who wants to add their locale now knows exactly where to drop keys.
  • The Lynis parser hardening bundled in security_manager.py is also a good catch — the staleness check via mtime and the regex tolerance for the bracketed Hardening index fixes an edge case we hadn't seen surface yet. Nice.

Merging as-is. There are a few polish items we may want to iterate on in later PRs (dev-mode warning on missing keys so typos surface, plurals for Slavic/Romance targets, splitting the JSON catalogs so each locale is only loaded when active) — but none of those block this landing, and none of them take away from what you've done here.

I'll open a small follow-up to add the new "Apps" tab keys we're building for LXC containers into en/common.json so you can pick up the Slovak translations at your leisure.

Door's wide open for more collaboration — whether that's more locale completeness, plurals wiring, or anything else. Thank you again.

@Vaso73

Vaso73 commented Aug 6, 2026

Copy link
Copy Markdown
Author

@MacRimi Thank you so much for the thoughtful feedback, for merging the contributions, and also for your very generous sponsorship. I genuinely appreciate all of it. Your detailed review means a lot, especially because it shows that you took the time to understand not only the translations, but also the decisions behind the i18n layer and the related fixes.

I am very happy that the work has been useful to ProxMenux. I use and test the project on a real Proxmox environment, and I would be glad to continue contributing where it can help the project most.

So far, I have especially enjoyed working on Slovak localization, UI consistency, testing and reproducing issues, authentication, and security-related improvements. I would also be happy to help with the upcoming Apps tab translations, future locale work, documentation, testing on real Proxmox systems, or smaller focused features and fixes.

The follow-up ideas you mentioned — development warnings for missing keys, proper plural handling, and loading only the active locale catalog — all make sense to me. I would be glad to help with them when they fit the project roadmap.

Please feel free to point me toward areas or issues where an extra pair of hands would be most useful. For anything larger, I am happy to discuss the direction first so the work stays aligned with your plans and does not overlap with changes already in progress.

Thank you again for the warm welcome, the trust, and the support. I am looking forward to contributing more to ProxMenux.

MacRimi added a commit that referenced this pull request Aug 8, 2026
…EN only)

Extracts 212 hardcoded English strings from virtual-machines.tsx and
lxc-app-panel.tsx into AppImage/messages/en/common.json, matching the
i18n pattern established by PR #277.

Added namespaces under vmLxc:
- options (14 keys): Snapshot / Restart / Backup storage / Edit / Cancel / Save
- scheduled (22 keys): Scheduled updates, Frequency, Cron, target, Delete
- cronChip (6 keys): variants + scope for external cron detection
- cronPresets (6 keys): Hourly / Daily / Weekly / Monthly picker labels
- updates (58 keys): OS packages, Helper info, Apply buttons, custom
  command editor, footer combined buttons
- tabs (6 keys): tab labels
- appEditor (105 keys): app registration form — installed_via methods,
  upstream source selectors, ports, form field labels + placeholders

Other locales (sk/de/fr/it/pt/es) fall back to English via the provider's
built-in fallback until translations are contributed.

Follow-up: i18n coverage issue for translation work in the other locales.
MacRimi added a commit that referenced this pull request Aug 8, 2026
…EN only)

Extracts 212 hardcoded English strings from virtual-machines.tsx and
lxc-app-panel.tsx into AppImage/messages/en/common.json, matching the
i18n pattern established by PR #277.

Added namespaces under vmLxc:
- options (14 keys): Snapshot / Restart / Backup storage / Edit / Cancel / Save
- scheduled (22 keys): Scheduled updates, Frequency, Cron, target, Delete
- cronChip (6 keys): variants + scope for external cron detection
- cronPresets (6 keys): Hourly / Daily / Weekly / Monthly picker labels
- updates (58 keys): OS packages, Helper info, Apply buttons, custom
  command editor, footer combined buttons
- tabs (6 keys): tab labels
- appEditor (105 keys): app registration form — installed_via methods,
  upstream source selectors, ports, form field labels + placeholders

Other locales (sk/de/fr/it/pt/es) fall back to English via the provider's
built-in fallback until translations are contributed.

Follow-up: i18n coverage issue for translation work in the other locales.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants