I live in Switzerland, where a painter in Bern may get customers who speak German, French or English. Most website templates for local businesses are English-only, and adding languages later usually means duplicated pages and broken SEO.
So I built Handwerk , a Nuxt 4 + Tailwind CSS v4 site for trades, with three languages from day one. Here is how it's put together, and what I'd do the same way again.
Live demo: https://handwerk-nuxt-demo.netlify.app
Free Lite version (MIT): https://github.com/polyastavreva/handwerk-nuxt-lite
1. i18n: one config, correct URLs, correct hreflang
I use @nuxtjs/i18n with the prefix_except_default strategy. English lives at / , German at /de , French at /fr :
// nuxt.config.ts i18n : { baseUrl : site .…