Idiomas
Cómo funciona el sitio en inglés y árabe, dónde está cada texto y qué cambiar para añadir un idioma.
Los idiomas incluidos
| Idioma | Dirección | Dirección del texto | Fuentes |
|---|---|---|---|
| Inglés, el idioma por defecto | /en | De izquierda a derecha | DM Sans, con Clash Display para los títulos |
| Árabe | /ar | De derecha a izquierda | Noto Sans Arabic, con Almarai para los títulos |
Cada texto, etiqueta de botón, descripción de imagen, mensaje de formulario y título de página existe en los dos idiomas.
Cómo se elige el idioma
- El idioma es la primera parte de cada dirección:
/en/pricing,/ar/pricing. - Un visitante que abre
/es enviado a/arcuando su navegador prefiere el árabe, y a/enen caso contrario. Lo hacesrc/proxy.ts. - El menú de idioma del encabezado cambia al otro idioma y mantiene al visitante en la misma página.
- Cada idioma tiene su propio título, descripción y dirección canonical, y cada página indica a los buscadores dónde está el otro idioma.
De derecha a izquierda
En /ar, src/app/[locale]/layout.tsx define lang="ar" y dir="rtl" en la página, así que todo el diseño se refleja: el menú, las tarjetas, las flechas y las tablas se leen de derecha a izquierda.
Los componentes usan clases lógicas de Tailwind que siguen la dirección, como ms-2, pe-4, start-0 y text-start. Cuando añadas código, usa estas en lugar de ml-*, pr-*, left-* o text-left, o la página en árabe se verá mal.
La vista previa del panel en el hero mantiene un diseño de izquierda a derecha en los dos idiomas, como lo haría una captura real de un producto. Sus etiquetas están traducidas.
Dónde están los textos
Los textos se dividen por página en siete carpetas dentro de messages/, cada una con un en.json y un ar.json:
| Carpeta | Qué contiene |
|---|---|
messages/home/ | Las secciones de la página de inicio y la vista previa del panel |
messages/layout/ | El encabezado, el pie de página, las páginas de error y el nombre, el título y la descripción del sitio |
messages/pricing/ | La página de precios |
messages/blog/ | Las páginas del blog y los propios artículos |
messages/contact/ | La página de contacto |
messages/auth/ | Las páginas de inicio de sesión, registro y recuperación de contraseña |
messages/legal/ | Las páginas de términos, privacidad, cookies y RGPD |
Cambia un texto
- Cambia el valor en el archivo en inglés y el correspondiente en el archivo en árabe. Mantén las mismas claves en ambos.
- Si falta una clave en un archivo, la página de ese idioma muestra su nombre en lugar del texto.
- Las palabras entre llaves, como
{year},{count}y{planName}, las rellena el sitio. Déjalas como están.
Las etiquetas propias del sitio en árabe
Cuando escribas sobre el sitio en árabe, usa las etiquetas que muestra:
| Inglés | Árabe |
|---|---|
Pricing | الأسعار |
Blog | المدونة |
Contact | اتصل بنا |
Sign Up Now | سجّل الآن |
Get Started Free | ابدأ مجانًا |
Most Popular | الأكثر شعبية |
Frequently Asked Questions | الأسئلة الشائعة |
Send Message | إرسال الرسالة |
Sign In | تسجيل الدخول |
Subscribe | اشترك |
Añade un idioma
Añade su código al enrutamiento
Añade el código del idioma a
localesensrc/i18n/routing.ts, y aLocale,localesylocaleNamesensrc/config/i18n.ts. Por ejemplo, francés:src/i18n/routing.tslocales: ["en", "ar", "fr"],Añade sus archivos de mensajes
En cada una de las siete carpetas dentro de
messages/, copiaen.jsoncon el código nuevo y traduce los valores. Conserva todas las claves y todas las palabras entre llaves. Para la carpeta de inicio:TerminalenNextjs-landing-page-template-2cp messages/home/en.json messages/home/fr.jsonAñádelo al menú de idioma
Añádelo a la lista
languagesensrc/components/LanguageSwitcher.tsx, con el país de la bandera que muestra, como{ code: "fr", country: "FR" }.Configura su dirección y su fuente, si las necesita
Solo el árabe se trata como de derecha a izquierda. Para otro idioma de derecha a izquierda, amplía las comprobaciones
locale === "ar"ensrc/app/[locale]/layout.tsx,src/hooks/locale/useDirection.ts,src/features/home/TestimonialsSection/hooks/useTestimonialsCarousel.tsysrc/features/auth/forgot-password/components/ForgotPasswordForm/components/BackToSignInLink.tsx. Para una escritura que DM Sans no cubre, añade una fuente connext/fontenlayout.tsx.
Reinicia yarn dev, o construye de nuevo, y el idioma nuevo responde en su propia dirección, aquí /fr. Los enlaces canónicos, los enlaces de idioma y el sitemap lo incorporan solos.