¿Es posible usar Intlayer con Next.js sin [locale] en la ruta de la página?
Sí, es posible usar Intlayer con Next.js sin [locale] en la ruta de la página. Sin embargo, no se recomienda hacerlo, porque dividir tu página permite activar más palabras clave en los motores de búsqueda. Tu SSR también puede verse afectado.
Si quieres hacerlo, sigue los mismos pasos descritos en la guía Intlayer con Next.js,
- sin src/middleware.ts
- sin generateStaticParams
src/app/layout.tsx
Copiar código
Copiar el código al portapapeles
import type { FC, PropsWithChildren } from "react";const LocaleLayout: FC<PropsWithChildren> = ({ children }) => ( <html lang={undefined} dir={undefined}> <body className={inter.className}>{children}</body> </html>);export default LocaleLayout;src/app/page.tsx
Copiar código
Copiar el código al portapapeles
import type { FC } from "react";import { ClientComponentExample } from "@components/ClientComponentExample";import { ServerComponentExample } from "@components/ServerComponentExample";import { PageContent } from "@components/pageContent";import { type NextPageIntlayer, IntlayerClientProvider } from "next-intlayer";import { IntlayerServerProvider } from "next-intlayer/server";const Page: FC = () => { return ( <IntlayerServerProvider> <PageContent /> <ServerComponentExample /> <IntlayerClientProvider> <ClientComponentExample /> </IntlayerClientProvider> </IntlayerServerProvider> );};export default Page;src/component/pageContent.ts
Copiar código
Copiar el código al portapapeles
"use client";import { type FC } from "react";import { useIntlayer } from "next-intlayer";import { useHTMLLanguage } from "@hooks/htmlTextDir";const PageContent: FC = () => { useHTMLLanguage(); const content = useIntlayer("page"); return ( <> <p>{content.getStarted.main}</p> <code>{content.getStarted.pageLink}</code> </> );};src/hooks/htmlTextDir.ts
Copiar código
Copiar el código al portapapeles
"use client";import { useEffect } from "react";import { getHTMLTextDir } from "intlayer";import { useLocale } from "next-intlayer";export const useHTMLLanguage = () => { const { locale } = useLocale(); useEffect(() => { if (!document) return; document.documentElement.lang = locale; document.documentElement.dir = getHTMLTextDir(locale); }, [locale]);};