Blog ENI : Toute la veille numérique !
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
  1. Livres et vidéos
  2. Django
  3. Internationalisation
Extrait - Django Développez vos applications web en Python (fonctionnalités essentielles et bonnes pratiques)
Extraits du livre
Django Développez vos applications web en Python (fonctionnalités essentielles et bonnes pratiques)
3 avis
Revenir à la page d'achat du livre

Internationalisation

Propos

Au tout début de la création d’un site, avec l’idée qu’il est destiné à des personnes francophones, on peut naturellement avoir tendance à faire l’impasse sur l’aspect linguistique. Cette attitude est effectivement valable si une véritable réflexion a été menée en amont pour aboutir à la conclusion que le site n’a pas et n’aura jamais vocation à s’adresser à des personnes de langue étrangère. Elle l’est beaucoup moins dans deux autres postures, à l’opposé l’une de l’autre :

  • 1. Se douter que ce sera à faire, mais repousser l’implémentation pour une version future.

  • 2. Dans le doute, le faire par principe.

Dans le cas du « On fera plus tard », la raison usuelle invoquée est : « Ce n’est pas la priorité, démarrons d’abord le site en français et on s’occupera du marché international après ». Le raisonnement n’est pas absurde en soi, mais le risque est de constater après coup que certains choix, par exemple d’architecture, du modèle de la base de données, de répartition des ressources graphiques, de composants tiers, sont difficilement voire pas du tout compatibles avec une déclinaison multilingue. Rien n’est...

Configuration

Abordons le sujet par un examen des paramètres de configuration qui ont une influence incontournable en rapport avec le thème.

settings.py 

MIDDLEWARE = [ 
   # ... 
   'django.middleware.locale.LocaleMiddleware', 
   # ... 

Il est nécessaire d’ajouter ce composant pour qu’il soit tenu compte des préférences de langues communiquées par le navigateur de l’utilisateur. En son absence, le positionnement des paramètres suivants paraîtront sans effet, sauf cas particulier où la langue est positionnée par programmation.

USE_I18N = True 

Ce paramètre a par défaut la valeur True, considérant qu’il est plus probable de vouloir construire un site à visée internationale. Cependant, si rien n’est fait dans le restant du travail pour gérer effectivement le contenu en plusieurs langues, toute la mécanique mobilisée dans la détermination de la langue à servir est inutile. Certains diront que le site fonctionne tout autant, alors pourquoi s’en préoccuper ? Il est vrai que les pages seront servies apparemment sans différence.

Le bénéfice de la présence de ce paramètre est de permettre un gain en performances en désactivant les traitements dont on peut se passer. Les pages seront ainsi servies plus rapidement.

Ceux qui ne sont pas sensibles à l’aspect des performances, au sens consommation de temps, ne devraient pas pour autant ignorer un autre aspect sensible : celui de la consommation...

Détermination de la langue de l’utilisateur

Lorsque le paramètre USE_I18N est à True, on cherche à servir le contenu dans la langue de l’utilisateur. Le serveur détermine la langue préférentielle en déroulant un algorithme qui va balayer plusieurs sources potentielles, dans un ordre de priorité. La première source qui donne l’information établit la langue pour le traitement de la requête. Si vraiment aucune source ne convient, il y a repli sur le paramètre global LANGUAGE_CODE.

Dans le cas ordinaire, lorsqu’on ne fait rien de particulier dans la configuration ou le code, la source d’information est l’en-tête HTTP Accept-Language.

Exemple

Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.5,en;q=0.3 

Si on considère que la valeur numérique donnée à l’élément q exprime un poids de préférence, cette syntaxe exprime ceci de la part de l’utilisateur : « Je préfère avant tout le français de France, mais je veux bien les autres formes de français (Canada, Suisse, Belgique, etc.), sinon de l’anglais américain avant tout autre anglais ».

Il est possible d’employer d’autres techniques, plus impératives, pour fixer la langue sans tenir compte de la liste préférentielle du navigateur.

Elles sont brièvement...

Limitation de la quantité de langues supportées

En interne, la plateforme supporte plus de 90 langues et variantes. Par ailleurs, dans l’élaboration d’un site, il est souvent intégré des modules applicatifs tiers qui supportent eux-mêmes un certain nombre de langues, selon le choix de leurs concepteurs. Vous allez aussi décliner vos contenus dans une collection limitée de langues.

Tout ceci peut mener à une cacophonie si on n’y prend pas garde. Imaginons un site construit pour être bilingue, en français et en anglais. Un module applicatif tiers y est intégré pour gérer une section d’actualités. Ce module est capable de présenter des libellés de titrage dans une dizaine de langues.

Que se passe-t-il pour un visiteur espagnol, par exemple ? Il peut lui être présenté un mélange à la fois d’espagnol et d’anglais, ce qui risque d’engendrer un inconfort de lecture. Il vaut souvent mieux faire un repli complet sur la langue par défaut, en anglais dans ce cas.

La déclaration des langues supportées se réalise par l’intermédiaire du paramètre de configuration LANGUAGES. Par défaut, il cite toutes les langues de la plateforme. Il est alors utile de le spécifier explicitement de façon à restreindre les langues supportées....