Par Maxime Pfrimmer, le 21 février 2024
Application mobileParlez 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.
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 :
Notre choix sâest portĂ© sur lâoutil de traduction React-i18next Ă cause de sa kyrielle dâavantages :
Sans transition, voyons ensemble comment traduire votre application en plusieurs langues Ă©trangĂšres de A Ă Z.
Afin de traduire votre application mobile, vous aurez besoin dâinstaller tous les packages qui suivent :
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.
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 :
Voici lâarchitecture que vous devriez normalement avoir :
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.
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.
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 :
Ă 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 đ).
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.
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).
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.
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.
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.
Actualité
Perplexity AI, une licorne qui promet de rendre Google âringardâ (ce sont les mots exacts de son PDG), câest fait prendre en plein scrapping de donnĂ©es. Et ce nâest pas la premiĂšre fois. Quâest-ce que Perplexity AI ? Si vous nâĂȘtes pas un abonnĂ© de la planĂšte tech, il y a des chances que …
Continue reading « Perplexity AI pris en flagrant délit de vol de données »
27 juin 2024
Actualité
18 ans. Câest le nombre dâannĂ©es qui sâest Ă©coulĂ© depuis la release de numpy 1.0. Numpy est un peu le couteau de suisse des mathĂ©matiques sous Pythons. GrĂące Ă cette bibliothĂšque, vous pouvez gĂ©rer simplement des matrices, des polynĂŽmes et toute une kyrielle de fonctions mathĂ©matiques. Tous ceux qui font des maths l’utilisent. Des statisticiens. …
Continue reading « NumPy 2.0 sort enfin aprÚs 18 ans, on fait le point »
26 juin 2024
Actualité
Mardi 18 juin 2024. Dans un billet de blog plutĂŽt discret, Google a annoncĂ© le lancement de lâapplication Gemini (ex Bard) en Inde. Cette version de Gemini est capable de comprendre neuf langues indiennes en plus de lâanglais : lâhindi ; le bengali ; le gujarati ; Le kannada ; Le malayalam ; le marathi …
Continue reading « Google Gemini sâinvite en Inde (et sâouvre enfin Ă tous) »
25 juin 2024