Langues
Comment la boutique fonctionne en anglais et en arabe, comment modifier n'importe quel texte, et ce qu'il faut changer pour ajouter une langue.
Pour le pack Full Stack
Les langues livrées
Anglais et arabe, dans les trois applications. L'arabe dispose toute l'interface de droite à gauche, avec ses propres polices sur la boutique.
| Application | Anglais | Arabe |
|---|---|---|
| Boutique | /en/… | /ar/… |
| Tableau de bord admin | /en/… | /ar/… |
| API | Accept-Language: en | Accept-Language: ar |
L'anglais est la langue par défaut. Les produits et les catégories sont enregistrés avec un nom et une description dans les deux langues, saisis côte à côte dans le tableau de bord.
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.
- Sur la boutique, le sens d'écriture est défini avant le premier affichage : une page arabe ne clignote donc jamais de gauche à droite.
- Les deux frontends envoient la langue de la page à l'API, pour que ses messages reviennent dans la même langue.
Modifier un texte
Chaque mot visible se trouve dans messages/<namespace>/en.json et ar.json, dans le dossier de chaque frontend. Changez la valeur, gardez la clé, et faites la modification dans les deux fichiers.
| Application | Namespaces |
|---|---|
| Boutique | account, auth, cart, checkout, common, home, layouts, seo, store, support, tryon, wishlist |
| Tableau de bord admin | ai-assistant, auth, common, dashboard (avec un dossier par page), demo-credentials, layouts |
- 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 du tableau de bord admin font exception : ils sont écrits en anglais et en arabe dans
src/layouts/dashboard/sidebar/config/navigationData.ts. - Le texte entre accolades
{curly}est rempli par l'application, comme{brand}. Gardez ces mots tels quels dans les deux langues.
Les libellés arabes des applications
Quand vous écrivez sur la boutique en arabe, utilisez les libellés affichés par ses écrans :
| Anglais | Arabe | Emplacement |
|---|---|---|
Home | الرئيسية | Menu de la boutique |
Shop | المتجر | Menu de la boutique |
Cart | السلة | Boutique |
Checkout | إتمام الشراء | Boutique |
Wishlist | المفضلة | Boutique |
Sign In | تسجيل الدخول | Les deux applications |
Track Order | تتبع الطلب | Boutique |
Overview | نظرة عامة | Barre latérale admin |
AI Assistant | المساعد الذكي | Barre latérale admin |
Products | المنتجات | Barre latérale admin |
Categories | الفئات | Barre latérale admin |
Orders | الطلبات | Barre latérale admin |
Users | المستخدمين | Barre latérale admin |
Home Page | الصفحة الرئيسية | Barre latérale admin |
Admin Management | إدارة المسؤولين | Barre latérale admin |
Admin Roles | أدوار المسؤولين | Barre latérale admin |
Settings | الإعدادات | Barre latérale admin |
Notifications | الإشعارات | Barre supérieure admin |
La page des rôles et l'onglet des paramètres appellent le personnel المشرفين là où la barre latérale dit المسؤولين. Choisissez un mot et changez l'autre dans messages/dashboard/settings/ si la différence compte pour vous.
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 :admin,auth,category,common,countries,order,product,project,roles,settings,tasks,users. - Les produits et les catégories reviennent dans les deux langues, sous la forme
{ "en": "…", "ar": "…" }, et le frontend choisit l'une d'elles.
Ajouter une langue à la boutique
Les deux langues sont inscrites dans plusieurs fichiers : en ajouter une troisième touche donc chacun d'eux. Les chemins se trouvent dans storefront/.
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, ainsi qu'àsrc/lib/seo/ogLocales.ts.Traduisez les messages
Copiez
en.jsonvers<code>.jsondans chacun des 12 dossiers sousmessages/et traduisez les valeurs.Définissez le sens d'écriture
Pour une langue de droite à gauche, ajoutez-la à
RTL_LOCALESdanssrc/app/layout.tsxet àsrc/hooks/locale/useDirection.ts.Étendez la marque et le manifest
src/config/brand.config.tsetsrc/app/[locale]/manifest.tscontiennent une valeurenet une valeurarpar texte : ajoutez la vôtre. Cherchez"en" | "ar"danssrc/features/et étendez aussi ces types.Ajoutez une police pour son écriture
Si la langue a besoin de lettres absentes des polices livrées, ajoutez une police au lien Google Fonts dans
src/app/layout.tsxet utilisez-la danssrc/styles/base.css.
Les produits et les catégories ne sont enregistrés qu'en anglais et en arabe. Une troisième langue demande aussi que les champs du catalogue de l'API et le formulaire produit du tableau de bord la prennent en charge.
Ajouter une langue au tableau de bord admin
Les chemins se trouvent dans admin-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/.Traduisez la barre latérale
Ajoutez votre langue à chaque libellé de
src/layouts/dashboard/sidebar/config/navigationData.ts, ainsi qu'aux textes desrc/config/brand.config.tsetsrc/app/[locale]/manifest.ts.Définissez le sens d'écriture
Pour une langue de droite à gauche, ajoutez-la à
src/hooks/locale/useDirection.ts.
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.