Nuxt i18n with lazy-loaded JSON files, localized routes, hreflang SEO tags, LanguageSwitcher component. Laravel SetLocale middleware, HasTranslations trait, API Resources and Controllers for projects/skills with Accept-Language support. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
61 lines
1.3 KiB
TypeScript
61 lines
1.3 KiB
TypeScript
export default defineNuxtConfig({
|
|
devtools: { enabled: true },
|
|
|
|
ssr: true,
|
|
|
|
future: {
|
|
compatibilityVersion: 4,
|
|
},
|
|
|
|
modules: [
|
|
'@nuxtjs/i18n',
|
|
'@pinia/nuxt',
|
|
'@nuxt/image',
|
|
'@nuxtjs/sitemap',
|
|
],
|
|
|
|
css: ['~/assets/css/main.css'],
|
|
|
|
postcss: {
|
|
plugins: {
|
|
tailwindcss: {},
|
|
autoprefixer: {},
|
|
},
|
|
},
|
|
|
|
i18n: {
|
|
locales: [
|
|
{ code: 'fr', iso: 'fr-FR', file: 'fr.json', name: 'Français' },
|
|
{ code: 'en', iso: 'en-US', file: 'en.json', name: 'English' },
|
|
],
|
|
defaultLocale: 'fr',
|
|
strategy: 'prefix_except_default',
|
|
lazy: true,
|
|
langDir: '../i18n/',
|
|
detectBrowserLanguage: false,
|
|
pages: {
|
|
'projets/index': { en: '/projects' },
|
|
'projets/[slug]': { en: '/projects/[slug]' },
|
|
'competences': { en: '/skills' },
|
|
'temoignages': { en: '/testimonials' },
|
|
'parcours': { en: '/journey' },
|
|
'contact': { en: '/contact' },
|
|
'resume': { en: '/resume' },
|
|
},
|
|
baseUrl: process.env.NUXT_PUBLIC_SITE_URL || 'https://skycel.fr',
|
|
},
|
|
|
|
app: {
|
|
pageTransition: { name: 'page', mode: 'out-in' },
|
|
},
|
|
|
|
runtimeConfig: {
|
|
public: {
|
|
apiUrl: process.env.NUXT_PUBLIC_API_URL || 'http://localhost:8000/api',
|
|
apiKey: process.env.NUXT_PUBLIC_API_KEY || '',
|
|
},
|
|
},
|
|
|
|
compatibilityDate: '2025-01-01',
|
|
})
|