Langues
Comment Kinora fonctionne en anglais et en arabe, comment modifier n'importe quel texte, et quoi changer pour ajouter une langue.
Pour le pack Full Stack
Les langues livrées
L'anglais et l'arabe, dans les deux applications. L'arabe dispose tout le tableau de bord de droite à gauche, avec sa propre police.
| Application | Anglais | Arabe |
|---|---|---|
| Tableau de bord | /en/… | /ar/… |
| API | Accept-Language: en | Accept-Language: ar |
L'anglais est la langue par défaut. Le contenu des catalogues (exercices, séances d'entraînement, programmes, plats, groupes, événements, défis, badges) est enregistré avec son nom et sa description dans les deux langues, saisis côte à côte dans les écrans Content.
Comment la langue est choisie
- La langue est la première partie de l'adresse. Un chemin sans langue redirige vers
/en; la langue du navigateur n'est pas détectée. - Le sélecteur de langue remplace cette partie de l'adresse et reste sur la même page.
- Le sens d'écriture est défini avant le premier affichage : une page arabe ne s'affiche donc jamais brièvement de gauche à droite.
- Le tableau de bord envoie la langue de la page à l'API dans
Accept-Language: ses messages reviennent donc dans la même langue.
Modifier un texte
Chaque mot visible se trouve dans messages/<namespace>/en.json et ar.json, dans le dossier du tableau de bord. Changez la valeur, gardez la clé, et faites la modification dans les deux fichiers.
| Namespace | Ce qu'il contient |
|---|---|
ai-assistant | La page de l'assistant |
auth | Les pages de connexion, d'inscription et de mot de passe |
common | Les mots des composants partagés : tableaux, filtres, envois de fichiers, recherche |
dashboard | Chaque page du tableau de bord et les notifications, avec un dossier par section (activity, workouts, nutrition, clients, content, settings et les autres) |
demo-credentials | Le panneau de la démo publique où un visiteur ajoute sa propre clé d'IA |
layouts | La barre de navigation, l'habillage de la barre latérale et la mention des données d'exemple |
- Une clé absente de
ar.jsons'affiche comme une erreur de message manquant côté arabe : gardez donc les deux fichiers alignés. - Les libellés de la barre latérale sont l'exception : ils sont écrits en anglais et en arabe dans
src/layouts/dashboard/sidebar/config/navigationData.ts, qui alimente aussi la recherche. - Le texte entre accolades
{curly}est rempli par l'application, par exemple{count}ou{name}. Gardez ces mots tels quels dans les deux langues. - Les notifications sont enregistrées comme ce qui s'est passé, jamais comme une phrase, et le tableau de bord écrit les mots à partir de ses propres fichiers de messages. Une nouvelle langue pour elles est une traduction, pas une modification de l'API.
Les libellés arabes propres au tableau de bord
Quand vous écrivez sur Kinora en arabe, utilisez les libellés qu'affichent ses écrans :
| Anglais | Arabe | Qui le voit |
|---|---|---|
Dashboard | لوحة التحكم | Tout le monde |
AI Assistant | المساعد الذكي | Tout le monde |
Activity | النشاط | Les membres |
Workouts | التمارين | Les membres |
Exercise Library | مكتبة التمارين | Les membres |
Nutrition | التغذية | Les membres |
Meal Planner | مخطط الوجبات | Les membres |
Sleep | النوم | Les membres |
Health | الصحة | Les membres |
Progress | التقدم | Les membres |
Progress Photos | صور التقدم | Les membres |
Community | المجتمع | Les membres |
My Clients | عملائي | Head Coach et Personal Trainers |
Gym | النادي | Personnel |
Content | المحتوى | Personnel |
Coaches | المدربون | Personnel |
Coach Roles | أدوار المدربين | Personnel |
Settings | الإعدادات | Tout le monde |
Sign In | تسجيل الدخول | La page de connexion |
Ce que l'API traduit
- Les messages d'erreur et le
messaged'une écriture réussie reviennent dans la langue de l'en-têteAccept-Language.ar-SAcompte comme de l'arabe ; toute langue que l'API ne possède pas se replie sur l'anglais. - Ses textes sont des fichiers JSON dans
back-end/src/i18n/translations/en/etar/, un par domaine :auth,coach,common,roles,settings,users. - Le contenu enregistré dans les deux langues revient sous la forme
{ "en": "…", "ar": "…" }, et le tableau de bord en choisit une.
Ajouter une langue au tableau de bord
Les deux langues sont écrites dans plusieurs fichiers : en ajouter une troisième touche donc chacun d'eux. Les chemins sont relatifs à dashboard/.
Ajoutez le code de langue
Ajoutez-le aux listes de langues dans
src/config/i18n.ts,src/proxy.ts,src/app/[locale]/layout.tsxetsrc/components/LanguageSwitcher.tsx.Traduisez les messages
Ajoutez un
<code>.jsonà côté de chaqueen.jsonsousmessages/, y compris dans les dossiers demessages/dashboard/.Traduire la barre latérale et la marque
Ajoutez votre langue à chaque libellé de
src/layouts/dashboard/sidebar/config/navigationData.ts, et aux textes desrc/config/brand.config.ts.Définissez le sens d'écriture
Pour une langue de droite à gauche, ajoutez-la à
RTL_LOCALESdanssrc/app/layout.tsxet àsrc/hooks/locale/useDirection.ts.
Le contenu des catalogues n'est enregistré qu'en anglais et en arabe. Une troisième langue demande aussi que les champs de contenu de l'API et les formulaires Content la prennent en charge.
Ajouter une langue à l'API
Ajoutez le code de langue
Ajoutez-le à
supportedLocalesdansback-end/src/i18n/i18n.service.ts.Traduisez les messages
Copiez
back-end/src/i18n/translations/en/vers un dossier portant le nom du code et traduisez les valeurs. Une clé que vous omettez se replie sur l'anglais.