Idiomas
Cómo funciona el panel 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 | Fuente |
|---|---|---|---|
| Inglés, el idioma por defecto | /en | De izquierda a derecha | Inter |
| Árabe | /ar | De derecha a izquierda | Noto Sans Arabic |
Cada etiqueta, botón, leyenda de gráfico, encabezado de tabla, mensaje de formulario y título de página existe en ambos idiomas.
Cómo se elige el idioma
- El idioma es la primera parte de cada dirección:
/en/dashboard/analytics,/ar/dashboard/analytics. - 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 idiomas del encabezado, una bandera con su código, cambia el idioma y mantiene al usuario en la misma página. En un teléfono está en el menú de usuario. Language en Settings, Preferences hace lo mismo.
De derecha a izquierda
En /ar, src/app/[locale]/layout.tsx fija lang="ar" y dir="rtl" en la página, así que todo el diseño se refleja: la barra lateral pasa a la derecha, y las tarjetas, tablas y menús 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.
Dónde están los textos
Los textos están divididos por página dentro de messages/, cada carpeta con un en.json y un ar.json:
| Carpeta | Qué contiene |
|---|---|
messages/common/ | El encabezado, la barra lateral, el selector de fechas, el pie de página, el selector de color, y el título y la descripción de cada página |
messages/auth/ | La página de inicio de sesión y la página de aterrizaje en /en |
messages/dashboard/overview/ | El resumen y sus widgets, la transferencia rápida y las notificaciones |
messages/dashboard/analytics/ | La página de analíticas |
messages/dashboard/transactions/ | La página de transacciones |
messages/dashboard/cards/ | La página de tarjetas |
messages/dashboard/settings/ | La página de ajustes |
messages/dashboard/ui-component/ | La página de componentes de interfaz |
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
{theme}, las rellena la app. Déjalas tal cual.
Las etiquetas en árabe del propio panel
Cuando escribas sobre el panel en árabe, usa las etiquetas que muestra:
| Inglés | Árabe |
|---|---|
Sign In | تسجيل الدخول |
Overview | نظرة عامة |
Your Cards | بطاقاتك |
Analytics | التحليلات |
Transactions | المعاملات |
UI Components | مكونات واجهة المستخدم |
Settings | الإعدادات |
Export | تصدير |
Add Transaction | إضافة معاملة |
Logout | تسجيل الخروج |
Añade un idioma
Añade su código al enrutamiento
Añade el código del idioma a
localesensrc/i18n/routing.ts. Por ejemplo, francés:src/i18n/routing.tslocales: ['en', 'ar', 'fr'],Añade sus archivos de mensajes
En cada una de las ocho carpetas de
messages/, copiaen.jsoncon el código nuevo y traduce los valores. Conserva cada clave y cada palabra entre llaves.src/i18n/request.tslos carga por el código del idioma, así que cada carpeta necesita el archivo. Para la carpeta common:Terminalendashboard-template-1cp messages/common/en.json messages/common/fr.jsonAñádelo al menú de idioma
Añádelo a
languageOptionsensrc/components/LanguageSelector.tsx, con su nombre, una etiqueta corta y una bandera decountry-flag-icons, como{ id: "fr", label: "Français", shortLabel: "FR", Flag: FR }conFRañadido a la importación de banderas.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/components/calendar.tsx,src/components/themeToggle.tsx,src/features/dashboard/overview/components/CardSection/CardStack/index.tsxy enQuickTransferSheet/index.tsxde la transferencia rápida. Para una escritura que Inter 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/login.