Landing page + all five apps · August 25, 2026

Five languages, one afternoon: i18n across every app

English, Spanish, French, German, and Brazilian Portuguese — added to Notes, Todos, Calendar, Share, Maps, and this landing page in a single pass, not one app at a time.

Every boring by design app shared one thing before this: English-only UI text. Rather than bolt translations onto each app separately whenever someone asked, I did it once, everywhere, in the same pass — five languages (English, Español, Français, Deutsch, Português (BR)) landed across all five PWAs and the landing page together.

How it's built

No translation service, no account, no server round-trip. Every piece of UI copy gets a data-i18n-key, resolved against a small per-language dictionary shipped with the app itself. The language you pick is remembered locally, the same way theme preference already was — pick it once, and it's there next time you open the app, on that device.

A consistent switcher

Rather than a plain dropdown, the language picker is the same icon-button + modal pattern used for theme switching: click the globe icon, pick a language from a short list, done. It looks and behaves the same whether you're in Notes, Todos, Calendar, Share, Maps, or on this site.

One exception, on purpose: this blog and other long-form pages stay English-only for now — translating prose well needs more than a key/value dictionary, and I'd rather ship that properly later than machine-translate it today.

Try it in your language

Open any app, tap the globe icon in the header, and switch — no reload, no account.

See the apps