Idiomas
Cómo funciona la tienda en inglés y en árabe, cómo cambiar cualquier texto y qué cambiar para añadir un idioma.
Para el paquete Full Stack
Los idiomas incluidos
Inglés y árabe, en las tres aplicaciones. El árabe dispone toda la interfaz de derecha a izquierda, con sus propias fuentes en la tienda.
| Aplicación | Inglés | Árabe |
|---|---|---|
| Tienda | /en/… | /ar/… |
| Panel de administración | /en/… | /ar/… |
| API | Accept-Language: en | Accept-Language: ar |
El inglés es el idioma por defecto. Los productos y las categorías se guardan con un nombre y una descripción en ambos idiomas, que se introducen uno al lado del otro en el panel.
Cómo se elige el idioma
- El idioma es la primera parte de la dirección. Una ruta sin idioma va a
/en; no se detecta el idioma del navegador. - El selector de idioma cambia esa parte de la dirección y mantiene la página.
- En la tienda, la dirección del texto se fija antes del primer pintado, así que una página en árabe nunca aparece un instante de izquierda a derecha.
- Ambos frontends envían a la API el idioma de la página, así que sus mensajes vuelven en el mismo idioma.
Cambia un texto
Cada palabra visible está en messages/<namespace>/en.json y ar.json, en la carpeta de cada frontend. Cambia el valor, conserva la clave y cámbialo en ambos archivos.
| Aplicación | Espacios de nombres |
|---|---|
| Tienda | account, auth, cart, checkout, common, home, layouts, seo, store, support, tryon, wishlist |
| Panel de administración | ai-assistant, auth, common, dashboard (con una carpeta por página), demo-credentials, layouts |
- Una clave que falta en
ar.jsonaparece como un error de mensaje ausente en la parte árabe, así que mantén los dos archivos coordinados. - Las etiquetas de la barra lateral del panel son la excepción: están escritas en inglés y en árabe en
src/layouts/dashboard/sidebar/config/navigationData.ts. - El texto entre llaves
{curly}lo rellena la aplicación, como{brand}. Conserva esas palabras tal cual en ambos idiomas.
Las etiquetas en árabe de las propias aplicaciones
Cuando escribas sobre la tienda en árabe, usa las etiquetas que muestran sus pantallas:
| Inglés | Árabe | Dónde |
|---|---|---|
Home | الرئيسية | Menú de la tienda |
Shop | المتجر | Menú de la tienda |
Cart | السلة | Tienda |
Checkout | إتمام الشراء | Tienda |
Wishlist | المفضلة | Tienda |
Sign In | تسجيل الدخول | Ambas aplicaciones |
Track Order | تتبع الطلب | Tienda |
Overview | نظرة عامة | Barra lateral del panel |
AI Assistant | المساعد الذكي | Barra lateral del panel |
Products | المنتجات | Barra lateral del panel |
Categories | الفئات | Barra lateral del panel |
Orders | الطلبات | Barra lateral del panel |
Users | المستخدمين | Barra lateral del panel |
Home Page | الصفحة الرئيسية | Barra lateral del panel |
Admin Management | إدارة المسؤولين | Barra lateral del panel |
Admin Roles | أدوار المسؤولين | Barra lateral del panel |
Settings | الإعدادات | Barra lateral del panel |
Notifications | الإشعارات | Barra superior del panel |
La página de roles y la pestaña de ajustes llaman al personal المشرفين, mientras que la barra lateral dice المسؤولين. Elige una palabra y cambia la otra en messages/dashboard/settings/ si la diferencia te importa.
Qué traduce la API
- Los mensajes de error y el
messagede una escritura correcta vuelven en el idioma de la cabeceraAccept-Language.ar-SAcuenta como árabe; cualquier idioma que la API no tenga recurre al inglés. - Sus textos son archivos JSON en
back-end/src/i18n/translations/en/yar/, uno por área:admin,auth,category,common,countries,order,product,project,roles,settings,tasks,users. - Los productos y las categorías vuelven con ambos idiomas, como
{ "en": "…", "ar": "…" }, y el frontend elige uno.
Añade un idioma a la tienda
Los dos idiomas están escritos en varios archivos, así que añadir un tercero toca cada uno de ellos. Las rutas están dentro de storefront/.
Añade el código del idioma
Añádelo a las listas de idiomas de
src/config/i18n.ts,src/proxy.ts,src/app/[locale]/layout.tsxysrc/components/LanguageSwitcher.tsx, y asrc/lib/seo/ogLocales.ts.Traduce los mensajes
Copia
en.jsona<code>.jsonen cada una de las 12 carpetas demessages/y traduce los valores.Configura la dirección del texto
Para un idioma de derecha a izquierda, añádelo a
RTL_LOCALESensrc/app/layout.tsxy asrc/hooks/locale/useDirection.ts.Amplía la marca y el manifiesto
src/config/brand.config.tsysrc/app/[locale]/manifest.tstienen un valoreny unoarpor texto: añade el tuyo. Busca"en" | "ar"ensrc/features/y amplía también esos tipos.Añade una fuente para su sistema de escritura
Si el idioma necesita letras que no tienen las fuentes incluidas, añade una fuente al enlace de Google Fonts en
src/app/layout.tsxy úsala ensrc/styles/base.css.
Los productos y las categorías solo se guardan en inglés y en árabe. Un tercer idioma también necesita que lo admitan los campos del catálogo de la API y el formulario de producto del panel.
Añade un idioma al panel de administración
Las rutas están dentro de admin-dashboard/.
Añade el código del idioma
Añádelo a las listas de idiomas de
src/config/i18n.ts,src/proxy.ts,src/app/[locale]/layout.tsxysrc/components/LanguageSwitcher.tsx.Traduce los mensajes
Añade un
<code>.jsonjunto a cadaen.jsondentro demessages/, incluidas las carpetas demessages/dashboard/.Traduce la barra lateral
Añade tu idioma a cada etiqueta de
src/layouts/dashboard/sidebar/config/navigationData.ts, y a los textos desrc/config/brand.config.tsysrc/app/[locale]/manifest.ts.Configura la dirección del texto
Para un idioma de derecha a izquierda, añádelo a
src/hooks/locale/useDirection.ts.
Añade un idioma a la API
Añade el código del idioma
Añádelo a
supportedLocalesenback-end/src/i18n/i18n.service.ts.Traduce los mensajes
Copia
back-end/src/i18n/translations/en/a una carpeta con el nombre del código y traduce los valores. Una clave que omitas recurre al inglés.