Langues
Comment le tableau de bord fonctionne en anglais et en arabe, où se trouve chaque texte, et quoi changer pour ajouter une langue.
Pour le pack Front + Back
Les langues livrées
| Langue | Adresse | Sens d'écriture | Police |
|---|---|---|---|
| Anglais, par défaut | /en | De gauche à droite | La police du système |
| Arabe | /ar | De droite à gauche | IBM Plex Sans Arabic |
Chaque libellé, bouton, titre de tableau, légende de graphique, message de formulaire et titre de page existe dans les deux langues, et l'interface de l'assistant IA aussi.
Comment la langue est choisie
- La langue est la première partie de chaque adresse :
/en/dashboard/users/all,/ar/dashboard/users/all. - Une adresse sans langue, comme
/, est envoyée vers sa page dans la dernière langue utilisée, ou en anglais la première fois, et/lui-même vers le tableau de bord.src/proxy.tss'en charge, et mémorise la langue dans un cookie. - Le menu de langue dans l'en-tête, un drapeau avec son code, change de langue et vous garde sur la même page.
- Le tableau de bord envoie la langue avec chaque requête, donc les messages de l'API, comme une erreur de connexion, reviennent dans la même langue.
De droite à gauche
Sur /ar, un petit script dans src/app/layout.tsx définit lang="ar" et dir="rtl" sur la page avant son affichage, si bien que toute la mise en page est inversée dès la première image : la barre latérale passe à droite, et les cartes, tableaux et menus se lisent de droite à gauche.
Les composants utilisent des classes Tailwind logiques qui suivent le sens d'écriture, comme ms-2, pe-4, start-0 et text-start. Quand vous ajoutez du code, utilisez-les à la place de ml-*, pr-*, left-* ou text-left, sinon la page arabe s'affiche mal.
Où se trouvent les textes
Dans le dossier du tableau de bord, les textes sont répartis par zone sous messages/, chaque dossier avec un en.json et un ar.json :
| Dossier | Ce qu'il contient |
|---|---|
messages/layouts/ | La barre latérale, l'en-tête, le pied de page et l'avis de données d'exemple, chargés sur chaque page |
messages/auth/ | La page de connexion |
messages/common/ | Mots et messages partagés |
messages/metadata/ | Le titre de l'onglet du navigateur de chaque page |
messages/dashboard/ | Les textes partagés du tableau de bord, avec un dossier par écran : overview, users, projects, ui-component, et settings avec ses propres profile, security, appsettings, adminmanagement et adminroles |
messages/ai-assistant/ | L'assistant IA, sa boîte de dialogue de clé et les cartes qu'il affiche |
Les messages de l'API
L'API répond dans la langue de l'en-tête Accept-Language de la requête, anglais ou arabe, et en anglais pour toute autre. Ses textes sont dans back-end/src/i18n/translations/en/ et ar/, un fichier par module. Les pays, les permissions et les paramètres d'application portent les deux langues dans la base de données.
Modifier un texte
- Changez la valeur dans le fichier anglais et celle qui lui correspond dans le fichier arabe. Gardez les mêmes clés dans les deux.
- Une clé absente d'un fichier affiche son nom à la place du texte sur la page de cette langue.
- Les mots entre accolades, comme
{count}, sont remplis par l'application. Gardez-les tels quels.
Les libellés arabes du tableau de bord
Quand vous écrivez sur le tableau de bord en arabe, utilisez les libellés qu'il affiche :
| Anglais | Arabe |
|---|---|
Sign In | تسجيل الدخول |
Overview | نظرة عامة |
AI Assistant | المساعد الذكي |
Users | المستخدمين |
Projects | المشاريع |
Admin Management | إدارة المسؤولين |
Admin Roles | أدوار المسؤولين |
Settings | الإعدادات |
UI Component | مكونات واجهة المستخدم |
Logout | تسجيل الخروج |
Ajouter une langue
Ajouter son code dans les trois listes de langues
Ajoutez le code de la langue à
localesdanssrc/config/i18n.ts, danssrc/proxy.tset danssrc/app/[locale]/layout.tsx. Pour le français :src/config/i18n.tsexport const locales = ['en', 'ar', 'fr'] as constAjoutez ses fichiers de messages
Dans chaque dossier sous
messages/qui contient unen.json, copiez-le sous le nouveau code et traduisez les valeurs. Gardez chaque clé et chaque mot entre accolades.Ajoutez-la au menu de langue
Ajoutez-la à
languagesdanssrc/components/LanguageSwitcher.tsx, avec son code et un drapeau decountry-flag-icons, comme{ code: "fr", country: "FR" as const, Flag: FR }avecFRajouté à l'import des drapeaux.Définir son sens d'écriture, si nécessaire
Seul l'arabe est traité comme une langue de droite à gauche. Pour une autre langue de droite à gauche, ajoutez son code à
RTL_LOCALESdanssrc/app/layout.tsxet étendez les vérificationslocale === "ar", en commençant parsrc/hooks/locale/useDirection.ts.
Redémarrez yarn dev, ou reconstruisez, et la nouvelle langue répond à sa propre adresse. L'API continue de lui répondre en anglais tant que vous n'avez pas ajouté ses traductions dans back-end/src/i18n/, où supportedLocales dans i18n.service.ts liste les langues qu'elle charge.