Le but de l’internationalisation et de la régionalisation est de permettre à une seule application web de présenter son contenu dans des langues et des formats adaptés à ses visiteurs.
Django prend pleinement en charge la traduction de texte, la mise en forme de dates, d’heures et de nombres, et les fuseaux horaires.
Essentiellement, Django effectue deux choses :
La traduction dépend de la langue cible et la mise en forme dépend généralement du pays cible. Ces informations sont données par les navigateurs dans l’en-tête Accept-Language
. Cependant, le fuseau horaire n’est pas accessible de manière évidente.
Les mots « internationalisation » et « régionalisation » sont souvent sources de confusion. En voici une définition simplifiée :
Vous pouvez trouver de plus amples détails dans la FAQ W3C Web Internationalization, l”article Wikipédia ou la documentation de GNU gettext.
Avertissement
La traduction est contrôlée par le réglage USE_I18N
. Cependant, cela concerne à la fois l’internationalisation et la régionalisation. Le nom de ce réglage dans Django provient d’une malencontreuse origine historique.
Voici quelques autres termes qui vont nous aider à gérer une même langue :
ll
ou une combinaison de code langue et pays sous la forme ll_PP
. Exemples : it
, de_AT
, es
, pt_BR
, sr_Latn
. Le code de langue est toujours en minuscules. Le code pays en majuscules s’il comporte 2 caractères, ou seulement la première lettre s’il comporte plus de caractères. Le séparateur est un caractère soulignement.Accept-Language
avec ce format. Exemples : it
, de-at
, es
, pt-br
. Les codes de langue sont généralement représentés en minuscules, mais l’en-tête HTTP Accept-Language
n’est pas sensible à la casse. Le séparateur est un tiret..po
.août 06, 2024