Arquitectura Multilingüe y Soporte Nativo RTL/LTR
Infraestructura robusta con next-intl que gestiona 7 idiomas globales con redirección automática y soporte de caché.
1. Gestión de Idiomas Basada en Rutas (Locale Routing)
Para un SEO internacional perfecto, cada URL incluye el prefijo del código de idioma (ej. /es o /en).
src/app/[countryCode]/layout.tsx
typescriptimport { NextIntlClientProvider } from "next-intl"import { getMessages } from "next-intl/server"import { isRtlLocale } from "@lib/util/is-rtl" export default async function StoreLayout({ children, params,}: { children: React.ReactNode params: Promise<{ countryCode: string }>}) { const { countryCode } = await params const messages = await getMessages() const isRtl = isRtlLocale() const dir = isRtl ? "rtl" : "ltr" return ( <html lang={countryCode} dir={dir}> <body className={isRtl ? "font-vazirmatn" : "font-inter"}> <NextIntlClientProvider messages={messages}> {children} </NextIntlClientProvider> </body> </html> )}2. Estrategia de Propiedades Lógicas en CSS (Logical Properties)
Se utilizan clases lógicas de Tailwind CSS (ms, me, start, end) para garantizar un flujo visual perfecto tanto en LTR como en RTL.
messages/fa.json
json{ "Index": { "title": "مستندات Loomix", "subtitle": "راهنمای جامع ساخت پلتفرمهای تجارت الکترونیک ماژولار." }, "Cart": { "title": "سبد خرید شما", "checkout": "ادامه فرآیند خرید" }}Configuración de Variables de Entorno (Environment Variables)
Para configurar el idioma y la región predeterminados en el proyecto Store, deben establecerse las siguientes variables en el archivo .env:
.env (Configuración de Idioma y Región)
bash# Región alternativa si no se detecta en los encabezadosNEXT_PUBLIC_DEFAULT_REGION=us # Idioma predeterminado de la tiendaDEFAULT_LOCALE=en-US- NEXT_PUBLIC_DEFAULT_REGION: Establece el código de país predeterminado si los encabezados de geolocalización (como
x-vercel-country) están ausentes (recomendado:uspara tiendas internacionales, oESpara España). - DEFAULT_LOCALE: Determina el idioma predeterminado del frontend (recomendado:
es-ESpara español, oen-USpara inglés).