Parlez la langue de vos clients ou mourez
20 %.
Câest le nombre de conversions que vous ratez lorsque votre app dâe-commerce nâest pas disponible dans la langue maternelle dâun segment dâutilisateurs đ„Č (source).
Et mĂȘme si votre app est gĂ©nialissime, il y a trĂšs peu de chances quâun internaute aille apprendre une langue nouvelle juste pour lâutiliser.
Si vous souhaitez augmenter votre CA, une application bilingue, multilingue ou disponible dans toutes les langues est un atout de taille.
Et heureusement, traduire une application mobile est assez simple grĂące Ă lâinternationalisation.
Lâinternationalisation, ou i18N, consiste Ă concevoir des logiciels facilement adaptables aux diffĂ©rentes langues. Cerise sur le gĂąteau : lâi18N ne nĂ©cessite pas de modifier le code source de votre app.
Alors pourquoi sâen priver ?
On vous a concoctĂ© un guide complet sur comment traduire votre application Ă lâaide du framework i18N.
Letâs go.
Pourquoi i18N et pas une autre librairie dâinternationalisation ?
Soyons dâaccord : vous pouvez traduire automatiquement vos contenus avec un logiciel de traduction automatique comme Google Traduction.
Câest rapide et pas cher.
Par contre, les résultats sont parfois assez douteux.
Raison pour laquelle les développeurs optent pour une autre solution : les frameworks React.
Il y en a deux :
- React-intl
- React-i18next.
Notre choix sâest portĂ© sur lâoutil de traduction React-i18next Ă cause de sa kyrielle dâavantages :
- câest une bibliothĂšque est intĂ©gralement Ă©crite en JavaScript ;
- React-i18N abrite un systÚme de traduction automatique complet pour plusieurs langues différentes ;
- câest une bibliothĂšque aisĂ©ment scalable grĂące Ă sa capacitĂ© de sĂ©parer chaque traduction en plusieurs fichiers et de les charger Ă la demande.
Sans transition, voyons ensemble comment traduire votre application en plusieurs langues Ă©trangĂšres de A Ă Z.
5 Ă©tapes pour traduire intĂ©gralement les textes dâune application en plusieurs langues
1 â Installez les packages
Afin de traduire votre application mobile, vous aurez besoin dâinstaller tous les packages qui suivent :
- I18N, la star du jour ;
- React-i18n, qui vous permet dâutiliser toutes les fonctionnalitĂ©s dâi18N dans votre application mobile react ;
- I18next-browser-languagedetector, qui permet de dĂ©tecter la langue de lâutilisateur depuis son navigateur ;
- I18next-http-backend, que lâon utilisera pour charger les fichiers de traductions.
Pour les installer, rien de plus simple : copiez-collez la commande suivante dans votre invite de commande.
npm install i18next react-i18next i18next-browser-languagedetector i18next-http-backend
Ps : nâoubliez pas de dĂ©marrer votre serveur node.js avant de saisir cette instruction, sinon ça ne fonctionnera pas. Si vous ne savez pas ce quâest node.js, on vous en parle en dĂ©tail ici.
2 â CrĂ©ez les fichiers de traduction
Vos textes à traduire ne seront pas rédigés directement dans le code source.
Vous pouvez le faire, mais câest une trĂšs mauvaise idĂ©e.
Ă la place, voici ce quâon vous propose : crĂ©er des fichiers pour chaque langue de traduction.
Suivez les instructions suivantes à la lettre pour que ça fonctionne :
- Allez dans le répertoire « public » de votre app » ;
- Créez-y un dossier « locales » ;
- Pour chaque langue-cible que vous voulez intégrer, créer un nouveau fichier dans le dossier « locales ». Nommez chaque fichier selon les codes correspondants desdites langues (EN, FR, SP, etc.) ;
- Enfin, dans chacun des dossiers de langues, créez un fichier « translation.json ».
Voici lâarchitecture que vous devriez normalement avoir :

3 â Initialiser i18next
Maintenant que les packages et les fichiers de traduction sont prĂȘts, initialisons i18N.
Pour cela, créez un nouveau fichier i18n.js dans le répertoire src et ajoutez-y le code suivant :
import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; import Backend from 'i18next-http-backend'; i18n .use(Backend) .use(LanguageDetector) .use(initReactI18next) .init({ debug: true, fallbackLng: 'en', }); export default i18n;
Parmi toutes ces lignes, une est assez intéressante :
fallbackLng :âenâ;
ConcrĂštement, elle dit Ă lâapplication : « si tu ne trouves pas de fichier de traduction pour la langue de recherchĂ©e par lâinternaute, affiche les contenus en anglais. ».
Sachant quâun quart des internautes au monde comprennent lâanglais, câest un choix judicieux dâen faire la langue par dĂ©faut.
Une fois que vous avez crĂ©Ă© ce fichier, allez dans le fichier index.js, lui aussi situĂ© dans le rĂ©pertoire âsrcâ. Rajoutez les lignes suivantes :
import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; import './i18n'; // <--- add this // ... other code ...
GrĂące au composant « Suspense », nous allons pouvoir charger les traductions de maniĂšre asynchrone. Sans lui, si une ressource nâest pas disponible, votre app va afficher un vilain message dâerreur Ă lâutilisateur.
Ouvrez le fichier App.js et rajoutez les importations suivantes :
import { Suspense } from 'react'; import { useTranslation} from 'react-i18next'; // ...
Maintenant, modifions la fonction App()Â :
import { Suspense } from 'react'; import { useTranslation } from 'react-i18next'; function App() { Â Â const { t, i18n } = useTranslation(); Â Â return ( Â Â Â Â <div> Â Â Â Â Â Â <h1></h1> Â Â Â Â </div> Â Â ); } export default function WrappedApp() { Â Â return ( Â Â Â Â <Suspense fallback="...loading"> Â Â Â Â Â Â <App /> Â Â Â Â </Suspense> Â Â ) }
PrĂȘtez attention Ă la ligne :
const { t, i18n } = useTranslation() ;
‘T’ est la fonction que nous allons utiliser pour traduire nos textes.
‘I18n’ est lâobjet que nous allons utiliser pour charger la liste des langues et les interchanger.
4 â Traduisons nos textes pleins avec i18N
Enfin, le moment tant attendu est arrivé : traduisons nos textes.
Pour ça, commencez (logiquement) par ajouter des traductions dans chacun de vos fichiers translation.json.
Voici comment faire avec la version anglaise.
{ Â Â "main": { Â Â Â Â "header": "Welcome to the app!" Â Â } }
« header » ici est la clĂ© de traduction que lâon va utiliser.
Si vous souhaitez traduire dâautres contenus, changez juste la clĂ© et reprenez le mĂȘme processus.
Refaite la mĂȘme chose avec les autres langues et câest bon.
Maintenant, il est temps de les utiliser.
Rien de plus simple : nous allons passer les noms des clĂ©s des textes Ă traduire Ă la fonction « t ». Au moment oĂč le mobinaute voudra charger les contenus, ce sera la valeur de la clĂ© qui sera affichĂ©e automatiquement.
Maintenant, allez dans le fichier src/App.js et ajoutez une traduction pour la balise h1Â :
// ... imports ... function App() { const { t, i18n } = useTranslation(); return ( <div> <h1>{t('main.header')}</h1> </div> ); } // ... other code ...
Ensuite, rebootez lâapplication en entrant la commande npm start dans votre invite de commande. Puis rendez-vous sur votre serveur local (http://localhost:3000) et vĂ©rifiez : tada, vos textes sont traduits.
Pour afficher la traduction de votre choix, allez dans le fichier i18n.js et ajoutez la commande :
i18n.changeLanguage('ES');
ES ici signifie espagnol. Mais si vous avez une autre langue en tĂȘte, remplacez ES par ladite langue.
Ăa y est ! Vous venez de crĂ©er votre premier contenu traduit. Vous nâaurez plus quâĂ insĂ©rer les traductions de chaque contenu dans les fichiers translation.js correspondants.
5 â Faire appel Ă une agence de dĂ©veloppement web ou Ă des traducteurs freelances
Ok.
Vous savez maintenant comment traduire votre app.
Sauf que vous vous en doutez, si votre app comporte plusieurs interfaces remplies de textes⊠créer votre dictionnaire multilingue va vous prendre des mois.
Sans compter la gestion des balises đ€Ż
Vous avez 2 options :
- soit vous mobilisez votre équipe pendant plusieurs semaines sur ça ;
- soit vous faites appel à des traducteurs professionnels en freelance ou à une agence de développement web et économisez du temps.
Ă vous de voir.
Mais si vous voulez en discuter, nâhĂ©sitez pas Ă faire un message Ă notre chef de projet informatique. En fonction de votre situation, il vous aiguillera vers la meilleure solution (et câest sans engagement đ).
3+1 Fails rĂ©currents de traduction dâapp Ă Ă©viter Ă tout prix
Avant de nous séparer, parlons des menaces qui planent sur vos tentatives de traduction.
Et ils sont plus nombreux et plus vicieux que vous ne pouvez le croire.
On vous en a sélectionné les 4 plus dangereux.
1 â Oublier le formatage et la culture des pays visĂ©s
Aux USA, ils nâaffichent pas le temps comme nous.
Tandis que nous sommes habitué·e·s au format jour/mois/années, les américains préfÚrent le format jour/année/mois.
Pareil pour le calendrier. Pour nous, la semaine commence le lundi, contre dimanche chez lâOncle Sam.
Pourquoi je vous parle de tout ça ? Pour vous mettre la puce Ă lâoreille sur les erreurs de formatage et de mĂ©triques.
Et elles ne concernent pas que lâheure. La monnaie, les fuseaux horaires, les unitĂ©s de mesure⊠tout peut varier.
Ps : mĂ©fiez vous des rĂšgles de grammaire (You đŹđ§ = Tu et Vous en français).
2 â Les symboles bizarres face aux caractĂšres non latins
Vous les avez sûrement déjà vus.
Ces symboles qui ne veulent humainement rien dire, mais qui sont parfaitement logiques pour les logiciels.
Câest ce quâil se passe quand vous essayez dâafficher des caractĂšres non latins â chinois, hindi, arabe, etc. – avec un formatage purement latin (ex : ASCII).
Heureusement, la solution ici est assez simple : utilisez le format unicode autant que possible.
3 â Des boutons calibrĂ©s au millimĂštre
Dans notre article sur les 32 lois de lâUX design, on vous avait parlĂ© des dangers de ne pas laisser de marge autour de vos contenus.
Et ça revient encore. Car si votre Ă©quipe de dĂ©veloppement est anglophone et quâelle prĂ©voit des espaces adaptĂ©s uniquement Ă lâanglais, vous courrez Ă la catastrophe.
Pourquoi ? Parce que toutes les langues nâont pas besoin du mĂȘme nombre de mots/caractĂšres pour exprimer la mĂȘme idĂ©e.
âBonjourâđ«đ· (7 caractĂšres) = âHelloâđŹđ§ (5 caractĂšres) = âGuten Morgenâđ©đȘ (12 caractĂšres).
Certaines, comme lâanglais, sont trĂšs concises. Dâautres, Ă lâinstar du français et de lâallemand, nĂ©cessitent beaucoup plus de caractĂšres.
Fatalement, si ça nâa pas Ă©tĂ© pris en compte, vos textes vont dĂ©border de vos Ă©lĂ©ments graphiques. Idem lorsque vos utilisateurs utilisent des extensions sur leurs moteurs de recherche pour vous comprendre.
Pour éviter ça, prévoyez toujours 30 % de marge autour des textes lorsque vous concevez la mise en page de vos interfaces.
4 â Des designs pensĂ©s pour une seule langue.
Vous lisez ce texte de gauche Ă droite.
Si je le traduis en japonais, vous ne le ferez plus de droite Ă gauche, mais de haut en bas. Et si jâopte pour lâarable, vous lirez de droite Ă gauche.
En conclusion : vĂ©rifiez toujours que vos textes traduits puissent ĂȘtre lus par toutes les audiences et dans tous les sens.