У сайта должен быть стандартные языки, а затем en. < /p>
У меня проблема с библиотекой следующего инла, и я не могу понять, что я не могу понять. JSON FILES для двух языков IT и EN < /li>
[*] Это следующий.
Код: Выделить всё
import createNextIntlPlugin from "next-intl/plugin";
const withNextIntl = createNextIntlPlugin();
const nextConfig = {};
export default withNextIntl(nextConfig);
- Это @/i18n/request.js файл:
export default getRequestConfig(async ({ locale }) => {
const l = locale ?? "it"; // fallback
return {
locale: l,
messages: (await import(`../messages/${l}.json`)).default,
};
});
< /code>
Это корневой файл Middleware.js < /li>
< /ul>
import createMiddleware from "next-intl/middleware";
export default createMiddleware({
locales: ["it", "en"],
defaultLocale: "it",
localePrefix: "always",
});
// Escludi asset, api, ecc.
export const config = {
matcher: ["/((?!api|_next|.*\\..*).*)"],
};
< /code>
Это корневая макет в [locale] < /li>
< /ul>
// app/[locale]/layout.js
import localFont from "next/font/local";
import { Montserrat } from "next/font/google";
import "../globals.css";
import Header from "@/components/header/header";
import Footer from "@/components/footer/footer";
import Script from "next/script";
import { notFound } from "next/navigation";
import { getMessages, setRequestLocale } from "next-intl/server";
import { NextIntlClientProvider } from "next-intl";
export const dynamic = "force-static"; // opzionale, se tutto è statico
const operetta = localFont({
src: [
{
path: "../../public/fonts/Operetta12-Regular.otf",
weight: "400",
style: "normal",
},
{
path: "../../public/fonts/Operetta12-ExtraLight.otf",
weight: "300",
style: "normal",
},
{
path: "../../public/fonts/Operetta12-SemiBold.otf",
weight: "600",
style: "normal",
},
],
variable: "--fontHeading",
display: "swap",
});
const montserrat = Montserrat({
variable: "--fontBody",
subsets: ["latin"],
weight: "400",
});
export function generateStaticParams() {
return ["en", "it"].map((l) => ({ locale: l }));
}
export const metadata = {
title: {
default: "Cantina Scrinzi Saltarius",
template: "%s | Cantina Scrinzi Saltarius",
},
description:
"Saltarius Trento Doc: eleganza e complessità da Chardonnay e Pinot Nero, oltre 60 mesi di affinamento e una tradizione familiare tramandata da generazioni.",
icons: {
icon: [
{ rel: "icon", url: "/favicon.ico" },
{ rel: "icon", type: "image/svg+xml", url: "/favicon.svg" },
{
rel: "icon",
type: "image/png",
sizes: "96x96",
url: "/favicon-96x96.png",
},
],
apple: [
{
rel: "apple-touch-icon",
sizes: "180x180",
url: "/apple-touch-icon.png",
},
],
},
manifest: "/site.webmanifest",
openGraph: {
title: "Cantina Scrinzi Saltarius",
description:
"Saltarius Trento Doc: eleganza e complessità da Chardonnay e Pinot Nero, oltre 60 mesi di affinamento e una tradizione familiare tramandata da generazioni.",
url: "https://scrinzi.com",
siteName: "Cantina Scrinzi Saltarius",
images: [
{
url: "https://scrinzi.com/og-image.webp",
width: 1200,
height: 630,
alt: "Cantina Scrinzi Saltarius",
},
],
locale: "it_IT",
type: "website",
},
twitter: {
card: "summary_large_image",
title: "Cantina Scrinzi Saltarius",
description:
"Saltarius Trento Doc: eleganza e complessità da Chardonnay e Pinot Nero, oltre 60 mesi di affinamento e una tradizione familiare tramandata da generazioni.",
images: ["https://scrinzi.com/og-image.webp"],
},
};
export const viewport = { width: "device-width", initialScale: 1 };
export default async function RootLayout({ children, params }) {
const { locale } = await params;
if (!["en", "it"].includes(locale)) {
return notFound();
}
console.log("Requested Locale: ", locale);
setRequestLocale(locale);
const messages = await getMessages();
console.log("Layout Messages: ", messages);
console.log("Layout Locale: ", locale);
return (
{children}
);
}
< /code>
Это компонент заголовка, где мне пришлось изменить только одно слово: < /li>
< /ul>
import Link from 'next/link';
import styles from './header.module.css';
import Image from 'next/image';
import { useTranslations } from 'next-intl';
import { getTranslations } from 'next-intl/server';
export default async function Header({ locale }) {
const t = await getTranslations('Header');
console.log("Header Messages: ", t('contacts'));
return (
Saltarius
{t('contacts')}
);
}
< /code>
Я не могу понять, почему, однако, даже если я посещаю /it или /en, языки всегда взяты из /It, если я не удаляю запасную часть, но в этом случае это говорит мне, что он не может найти не определенный файл.Requested Locale: en
Layout Messages: {
Header: { contacts: 'Contatti' },
Intro: {
leftTitle: 'L’eleganza di un Metodo Classico Trento Doc',
leftText: '**Saltarius** nasce da un perfetto equilibrio tra **Chardonnay (60%)** e **Pinot Nero (40%)**, coltivati con cura nelle colline roveretane. Le uve, allevate a pergola semplice trentina e raccolte a rese contenute, riposano oltre 60 mesi sui lieviti, sviluppando complessità, finezza e grande eleganza. **Un Trento Doc capace di raccontare la sua terra in ogni sorso.**',
rightTitle: 'Una passione di famiglia tramandata da generazioni',
rightText: 'Saltarius è molto più di un vino: è la storia di una famiglia che da quattro generazioni custodisce l’arte della viticoltura. Dal bisnonno Achille al nipote Andrea, giovane enotecnico, ogni generazione ha portato avanti con dedizione un sogno fatto di tradizione e innovazione. Il primo raccolto del 2019, realizzato insieme al nonno Franco, ha segnato l’inizio di una missione: preservare un sapere artigianale sempre più raro e valorizzare un territorio unico.'
},
Pills: [
{
title: 'Territorio unico',
text: 'Uve allevate sulle colline roveretane, accarezzate dal sole e dal vento dell’Ora del Garda.'
},
{
title: 'Metodo artigianale',
text: 'Oltre 60 mesi di affinamento sui lieviti per un Trento Doc di rara complessità.'
},
{
title: 'Tradizione di famiglia',
text: 'Quattro generazioni di passione e dedizione, unite dall’amore per la viticoltura.'
}
]
}
Layout Locale: en
Header Messages: Contatti
< /code>
(как вы можете видеть, что локаль имеет /en, но данные взяты на итальянском языке) < /p>
Может ли кто -нибудь еще пролить свет на это? Я что -то делаю не так?
Заранее
Подробнее здесь: https://stackoverflow.com/questions/797 ... th-next-js
Мобильная версия