Files
blog/frontend/nuxt.config.ts
T
davide 33b49c5dbb Add hand-rolled English support (/en/*) alongside the Italian site
PocketBase gains optional, manually-authored English fields on articles
and categories (same record, same slug), and the frontend serves an /en
counterpart of every dynamic route via thin page wrappers around shared
view components — no i18n library, consistent with the project's existing
minimalism stance for a two-locale site with ~20 UI strings.

An article/category with no translation 404s cleanly on its own /en
detail page and is filtered out of /en listings, and the header's
language-switch link falls back to the English blog index rather than a
dead link; resolving that requires a global route middleware, since the
layout's header renders before the page content in document order and so
can't react to state a page component sets during its own async setup.
2026-09-11 13:53:17 +02:00

43 lines
1.3 KiB
TypeScript

import { SITE_NAME } from './shared/utils/site'
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
compatibilityDate: '2025-07-15',
devtools: { enabled: true },
css: ['~/assets/css/main.css'],
// Default auto-import prefixes nested component dirs with their path
// (e.g. `components/views/HomeView.vue` -> `<ViewsHomeView>`) — disabled so
// the it/en thin page wrappers can reference `<HomeView>` etc. directly.
components: [{ path: '~/components', pathPrefix: false }],
app: {
head: {
htmlAttrs: { lang: 'it' },
titleTemplate: `%s · ${SITE_NAME}`,
meta: [{ name: 'viewport', content: 'width=device-width, initial-scale=1' }],
link: [
{ rel: 'icon', href: '/favicon.ico', sizes: '16x16 32x32 48x48 64x64' },
{ rel: 'apple-touch-icon', href: '/apple-touch-icon.png' },
],
},
},
runtimeConfig: {
// Server-only: internal PocketBase address, never exposed to the browser.
pocketbaseUrl: 'http://localhost:8090',
public: {
// Canonical origin of the public website.
siteUrl: 'http://localhost:3000',
// Browser-reachable PocketBase origin, used to build absolute media URLs.
pocketbaseUrl: 'http://localhost:8090',
},
},
typescript: {
strict: true,
},
modules: ['@nuxt/eslint'],
})