Internationalisation
Installer un outil
Pour visualiser le code relatif à ce chapitre : git diff v1.4.6..v1.5.0.
Pour commencer, nous allons installer un outil : django-rosetta.
Pour cela, il existe deux options.
Pour la première, il faut démarrer une console, puis taper la commande :
$ make bash
$ poetry add django-rosetta
Normalement, le fichier pyproject.toml ainsi que le fichier poetry.lock sont tous deux mis à jour.
La seconde méthode consiste à rajouter directement la ligne suivante dans pyproject.toml :
django-rosetta = "^0.10.2"
Puis, il faut utiliser la commande suivante pour générer un fichier poetry.lock cohérent avec ce dernier :
$ make lock
Une fois ceci fait, quelle que soit la méthode, il faut modifier le fichier Dockerfile pour y ajouter une dépendance, gettext. Ensuite, il faut reconstruire le conteneur :
$ make build
Une fois que ceci est terminé, il faut modifier le fichier settings.py pour y ajouter l’application nouvellement installée.
INSTALLED_APPS = [
'app.apps.AppConfig',
'example.apps.ExampleConfig',
'rosetta',
'django.contrib.admin',
[...]
]
Il faut également configurer la liste des langues que notre...
Internationalisation
L’internationalisation consiste à préparer les chaînes de caractères pour qu’elles puissent être traduites. Cette étape relève nécessairement du développeur.
Comme vous avez pu le constater, dans tout le code python que l’on a écrit jusqu’ici, nous avons utilisé gettext à chaque fois que nous avions à écrire une chaîne de caractères en dur.
Par exemple dans les modèles :
score = models.PositiveSmallIntegerField(
verbose_name=gettext("score"),
default=0,
)
Ou encore dans les énumérations :
class GameStatus(models.TextChoices):
"""Statuses of a game"""
DRAFT = "draft", gettext("draft")
READY = "ready", gettext("ready")
ONGOING = "ongoing", gettext("ongoing")
DONE = "done", gettext("done")
Ou bien dans l’interface d’administration :
@admin.display(description=gettext("username"))
def...Régionalisation
La régionalisation consiste à adapter les chaînes de caractères à une langue ou à un contexte local donné. Elle peut être effectuée par le développeur, en particulier lorsque nous codons en anglais et que nous traduisons en français, ou par un traducteur de métier lorsque l’application est proposée dans plusieurs langues.
En effet, à partir de maintenant, il est possible à l’aide d’une commande spécifique d’aller extraire les différentes chaînes de caractères à traduire et de les regrouper dans un fichier PO.
Pour cela, il faudra créer dans chaque application ainsi que dans le répertoire du projet un répertoire nommé locale qui contiendra toutes les chaînes à traduire de l’application. Si nous ne le faisons pas, nous aurons le message suivant :
CommandError: Unable to find a locale path to store translations
for file app/__init__.py. Make sure the 'locale' directory exists
in an app or LOCALE_PATHS setting is set.
Nous pouvons maintenant générer ces fichiers en utilisant la commande :
$ make messages
Idéalement, la commande s’est terminée sans erreur. Si nous retournons sur notre IDE, nous verrons que chaque répertoire locale contient maintenant un répertoire fr/LC_MESSAGES...