Langues
Comment le site fonctionne en anglais et en arabe, où se trouve chaque texte, et quoi changer pour ajouter une langue.
Les langues livrées
| Langue | Adresse | Sens d'écriture | Polices |
|---|---|---|---|
| Anglais, par défaut | /en | De gauche à droite | DM Sans, avec Clash Display pour les titres |
| Arabe | /ar | De droite à gauche | Noto Sans Arabic, avec Almarai pour les titres |
Chaque texte, libellé de bouton, description d'image, message de formulaire et titre de page existe dans les deux langues.
Comment la langue est choisie
- La langue est la première partie de chaque adresse :
/en/pricing,/ar/pricing. - Un visiteur qui ouvre
/est envoyé vers/arquand son navigateur préfère l'arabe, et vers/ensinon. C'estsrc/proxy.tsqui s'en charge. - Le menu de langue de l'en-tête passe à l'autre langue et garde le visiteur sur la même page.
- Chaque langue a son propre titre, sa propre description et sa propre adresse canonical, et chaque page indique aux moteurs de recherche où se trouve l'autre langue.
De droite à gauche
Sur /ar, src/app/[locale]/layout.tsx définit lang="ar" et dir="rtl" sur la page, si bien que toute la mise en page est inversée : le menu, les cartes, les flèches et les tableaux 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.
L'aperçu du tableau de bord dans le hero garde une mise en page de gauche à droite dans les deux langues, comme le ferait une vraie capture d'écran de produit. Ses libellés sont traduits.
Où se trouvent les textes
Les textes sont répartis par page dans sept dossiers sous messages/, chacun avec un en.json et un ar.json :
| Dossier | Ce qu'il contient |
|---|---|
messages/home/ | Les sections de la page d'accueil et l'aperçu du tableau de bord |
messages/layout/ | L'en-tête, le pied de page, les pages d'erreur, ainsi que le nom, le titre et la description du site |
messages/pricing/ | La page de tarifs |
messages/blog/ | Les pages du blog et les articles eux-mêmes |
messages/contact/ | La page de contact |
messages/auth/ | Les pages de connexion, d'inscription et de mot de passe oublié |
messages/legal/ | Les pages des conditions, de la confidentialité, des cookies et du RGPD |
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
{year},{count}et{planName}, sont remplis par le site. Gardez-les tels quels.
Les libellés arabes du site
Quand vous écrivez sur le site en arabe, utilisez les libellés qu'il affiche :
| Anglais | Arabe |
|---|---|
Pricing | الأسعار |
Blog | المدونة |
Contact | اتصل بنا |
Sign Up Now | سجّل الآن |
Get Started Free | ابدأ مجانًا |
Most Popular | الأكثر شعبية |
Frequently Asked Questions | الأسئلة الشائعة |
Send Message | إرسال الرسالة |
Sign In | تسجيل الدخول |
Subscribe | اشترك |
Ajouter une langue
Ajoutez son code au routage
Ajoutez le code de la langue à
localesdanssrc/i18n/routing.ts, ainsi qu'àLocale,localesetlocaleNamesdanssrc/config/i18n.ts. Par exemple, le français :src/i18n/routing.tslocales: ["en", "ar", "fr"],Ajoutez ses fichiers de messages
Dans chacun des sept dossiers sous
messages/, copiezen.jsonsous le nouveau code et traduisez les valeurs. Gardez chaque clé et chaque mot entre accolades. Pour le dossier home :TerminaldansNextjs-landing-page-template-2cp messages/home/en.json messages/home/fr.jsonAjoutez-la au menu de langue
Ajoutez-la à la liste
languagesdanssrc/components/LanguageSwitcher.tsx, avec le pays du drapeau affiché, par exemple{ code: "fr", country: "FR" }.Définissez son sens d'écriture et sa police, si besoin
Seul l'arabe est traité de droite à gauche. Pour une autre langue de droite à gauche, étendez les vérifications
locale === "ar"danssrc/app/[locale]/layout.tsx,src/hooks/locale/useDirection.ts,src/features/home/TestimonialsSection/hooks/useTestimonialsCarousel.tsetsrc/features/auth/forgot-password/components/ForgotPasswordForm/components/BackToSignInLink.tsx. Pour une écriture que DM Sans ne couvre pas, ajoutez une police avecnext/fontdanslayout.tsx.
Redémarrez yarn dev, ou reconstruisez, et la nouvelle langue répond à sa propre adresse, ici /fr. Les liens canoniques, les liens de langue et le sitemap la prennent en compte d'eux-mêmes.