February 3, 2026 · Beerlesklopfer

Dev Log #2: 6 Languages on Day 12

Day 12 of development. The core widgets — Jobs, Clients, Storage — are taking shape. And already, Onesimus speaks six languages.

Why i18n This Early?

Most projects add translation as an afterthought. We did it on day 12, while the codebase was still small enough to do it right. Every string, every label, every tooltip — properly externalized from the start.

The supported languages:

  • English (base)
  • German (native)
  • French
  • Spanish
  • Portuguese
  • Italian

Qt’s translation system (QTranslator) detects your system language automatically on startup. But you can also switch languages live — no restart needed. The language selector shows native names (Deutsch, Français, Español) so you always know what you’re picking.

Dark Mode and Themes

While we were at the UI layer, we also built the theme system. Onesimus ships with a clean dark theme (default) and a light alternative. The themes use Qt stylesheets (QSS) with consistent color tokens — so every widget respects the theme, including custom-painted ones like the Gantt chart.

A toggle button in the toolbar switches themes instantly. No restart, no settings dialog.

Native Advantage

This is where Qt6 shines compared to web frameworks. Theme switching is instant — no FOUC, no CSS reloads, no hydration. Language switching is instant — no page reload, no state loss. The UI just updates.

Building a native app in 2026 is a deliberate choice. When your tool manages critical infrastructure, responsiveness matters.

Star on GitHub →