diff --git a/CLAUDE.md b/CLAUDE.md index a57ff76..87a277a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -29,6 +29,11 @@ Browser → Caddy ─┬─ dominio pubblico → Nuxt 4 (SSR) → REST Strapi Se aggiungi una vista, aggiungi l'endpoint lì e tipizza il ritorno in `shared/types/blog.ts`. - Il Markdown dell'articolo è convertito in HTML **nell'endpoint**, non nel componente: il contenuto è già nell'HTML SSR e `marked` resta fuori dal bundle client. +- L'**interfaccia** è tradotta in en/it/es/fr con `@nuxtjs/i18n`: stringhe in + `frontend/i18n/locales/*.json`, rotte `prefix_except_default` (inglese senza prefisso), + `hreflang` e `og:locale` generati da `useLocaleHead()` in `app.vue`. Nessuna stringa + visibile va scritta a mano in un componente: aggiungi la chiave nei quattro file. + I **contenuti** invece restano monolingua — la localizzazione di Strapi è disattivata. - `cms/src/index.ts` (`bootstrap`) dà al ruolo Public solo `find`/`findOne` su Article e Category, e disattiva la registrazione pubblica: non esistono utenti front-end, solo amministratori. Qualsiasi permesso in più va motivato. diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 53b5b03..d450a12 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -18,3 +18,4 @@ services: environment: NUXT_PUBLIC_SITE_URL: http://localhost:3000 NUXT_PUBLIC_STRAPI_URL: http://localhost:1337 + NUXT_PUBLIC_I18N_BASE_URL: http://localhost:3000 diff --git a/docker-compose.yml b/docker-compose.yml index cb680b4..56fe666 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -52,6 +52,8 @@ services: NUXT_STRAPI_URL: ${STRAPI_URL} NUXT_PUBLIC_SITE_URL: ${PUBLIC_SITE_URL} NUXT_PUBLIC_STRAPI_URL: ${PUBLIC_STRAPI_URL} + # Absolute origin for the alternate-language links. + NUXT_PUBLIC_I18N_BASE_URL: ${PUBLIC_SITE_URL} caddy: image: caddy:2-alpine diff --git a/frontend/app/app.vue b/frontend/app/app.vue index ed9e94c..e7aa252 100644 --- a/frontend/app/app.vue +++ b/frontend/app/app.vue @@ -1,3 +1,8 @@ + +