Idiomas
Cómo funciona Kinora 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 dos aplicaciones. El árabe muestra todo el panel de derecha a izquierda, con su propia fuente.
| Aplicación | Inglés | Árabe |
|---|---|---|
| Panel | /en/… | /ar/… |
| API | Accept-Language: en | Accept-Language: ar |
El inglés es el idioma predeterminado. El contenido de los catálogos (ejercicios, entrenamientos, programas, platos, grupos, eventos, retos, insignias) se guarda con su nombre y su descripción en los dos idiomas, que se introducen uno al lado del otro en las pantallas de Content.
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.
- La dirección se fija antes del primer pintado, así que una página en árabe nunca aparece un instante de izquierda a derecha.
- El panel envía el idioma de la página a la API en
Accept-Language, 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 del panel. Cambia el valor, mantén la clave y cámbialo en los dos archivos.
| Namespace | Qué contiene |
|---|---|
ai-assistant | La página del asistente |
auth | Páginas de inicio de sesión, registro y contraseña |
common | Las palabras de los componentes compartidos: tablas, filtros, subidas, la búsqueda |
dashboard | Cada página del panel y las notificaciones, con una carpeta por sección (activity, workouts, nutrition, clients, content, settings y las demás) |
demo-credentials | El panel de la demostración pública donde un visitante añade su propia clave de IA |
layouts | La barra de navegación, el marco de la barra lateral y el aviso de datos de ejemplo |
- 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 son la excepción: están escritas en inglés y en árabe en
src/layouts/dashboard/sidebar/config/navigationData.ts, que también alimenta la búsqueda. - El texto entre llaves
{curly}lo rellena la aplicación, como{count}o{name}. Deja esas palabras tal cual en los dos idiomas. - Las notificaciones se guardan como lo que ocurrió, nunca como una frase, y el panel escribe las palabras a partir de sus propios archivos de mensajes. Un idioma nuevo para ellas es una traducción, no un cambio en la API.
Las etiquetas en árabe del propio panel
Cuando escribas sobre Kinora en árabe, usa las etiquetas que muestran sus pantallas:
| Inglés | Árabe | Quién lo ve |
|---|---|---|
Dashboard | لوحة التحكم | Todos |
AI Assistant | المساعد الذكي | Todos |
Activity | النشاط | Miembros |
Workouts | التمارين | Miembros |
Exercise Library | مكتبة التمارين | Miembros |
Nutrition | التغذية | Miembros |
Meal Planner | مخطط الوجبات | Miembros |
Sleep | النوم | Miembros |
Health | الصحة | Miembros |
Progress | التقدم | Miembros |
Progress Photos | صور التقدم | Miembros |
Community | المجتمع | Miembros |
My Clients | عملائي | Head Coach y Personal Trainer |
Gym | النادي | Personal |
Content | المحتوى | Personal |
Coaches | المدربون | Personal |
Coach Roles | أدوار المدربين | Personal |
Settings | الإعدادات | Todos |
Sign In | تسجيل الدخول | La página de inicio de sesión |
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:auth,coach,common,roles,settings,users. - El contenido guardado en los dos idiomas vuelve como
{ "en": "…", "ar": "…" }, y el panel elige uno.
Añade un idioma al panel
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 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 y la marca
Añade tu idioma a cada etiqueta de
src/layouts/dashboard/sidebar/config/navigationData.ts, y a los textos desrc/config/brand.config.ts.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.
El contenido de los catálogos se guarda solo en inglés y en árabe. Un tercer idioma también necesita que los campos de contenido de la API y los formularios de Content lo incluyan.
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.