Commit ce42367f authored by Antoine Bernard's avatar Antoine Bernard

Moar explanation.

parent 08e458f3
......@@ -7,7 +7,6 @@ Sous Debian:
* gettext -> Pour la traduction
TODO
Comment enrichir la traduction
------------------------------
......@@ -17,7 +16,7 @@ c'est à dire à l'emplacement de ce README ou dans le sous-dossier note/.
En effet, l'utilitaire Django parcourt uniquement l'arborescence descendante.
Ensuite, deux méthodes s'offre à vous:
Pour détecter toutes les chaînes de textes à traduire, il suffit d'utiliser la commande '''makemessages'''.
django-admin makemessages
......@@ -25,15 +24,19 @@ ou
python manage.py makemessages
makemessages parcours les fichiers ( par défaut *.py, *.html, *.txt ) à la rehcherche
de
makemessages parcours les fichiers ( par défaut .py, .html, .txt ) à la rehcherche de chaîne de textes à traduire.
L'utilitaire va régenérer le fichier contenant toutes les traductions.
Ce dernier se nomme django.po et se situe dans locale/code_langue/LC_MESSAGES/.
Il vous suffit ensuite d'ajouter la traduction de la chaine en dessous, dans le msgstr.
Dans les fichiers python
------------------------
Ajouter en import du fichier
from django.utils.translation import ugettext_lazy as _
'from django.utils.translation import ugettext_lazy as _ '
Pour comprendre ce que fait cette fonction, et découvrir ses dérivés :
https://docs.djangoproject.com/fr/1.9/topics/i18n/translation/
......@@ -43,9 +46,9 @@ Pour déclarer une chaine de texte ou une variable comme à traduire
Original À traduire
"ma chaine de texte" -> _(u"ma chaine de texte")
Lorsque que vous faites ceci, cela informe l'utilitaire Django que
Lorsque que vous faites ceci, cela informe l'utilitaire Django que vous souhaitez traduire cette chaine de texte.
Notez que vous pouvez aussi
Notez que vous pouvez aussi mettre des variables, ou des expressions non encore évalués.
Quand vous créer un nouveau template
------------------------------------
......@@ -54,11 +57,11 @@ Pensez à ajouter la ligne suivante :
{% load i18n %}
Cela chargera les outils de traduction fourni par Django.
Pour des textes simples, vous pourrez utilisez le tag trans :
Pour des textes simples, vous pourrez utilisez le '''tag trans''' :
{% trans "Mon texte ici" %}
où "Mon texte ici" est le texte à traduire
Pour des textes plus compliqués :
Pour des textes plus compliqués, on utilisera '''blocktrans''' :
{% blocktrans %}
Le texte,
sur plusieurs lignes.
......@@ -71,19 +74,39 @@ Mon nom est {{ newvar }}.
Dans un fichier javascript
--------------------------
https://docs.djangoproject.com/fr/1.9/topics/i18n/translation/#internationalization-in-javascript-code
Do no do it. please.
srsly
Pour déclarer du texte à traduire dans un fichier javascript, on utilise
Original À traduire
"ma chaine de texte" -> gettext("ma chaine de texte")
Pour détecter les chaînes de textes en javascript, il faut les lignes de commandes suivantes où se trouvent les fichiers à traduire -- mais je ne sais pas pourquoi-- :
django-admin makemessages --domain=djangojs
ou
python manage.py makemessages --domain=djangojs
La commande va alors générer un djangojs.po, qui fonctionne comme les django.po.
Remarque:
La ligne suivante a été rajoutée dans la base.html. On a besoin, sur toutes les pages où des scripts sont appelés, d'appeler en parallèle le dictionnaire contenant les traductions javacript. Pour éviter de malheureux oubli...
<script type="text/javascript" src="{% url 'javascript_catalog' %}"></script>
Appliquer vos traductions
-------------------------
Un fois que vous traduit et complétez le django.po, il faut encore compilez le fichier.
Pour cela
Pour cela:
django-admin compilemessages
Cette commande va créer un django.mo qui servira effctivement de traduction.
Cette commande va créer un django.mo qui sera lu lors de la traduction par le serveur.
Comment ajouter une nouvelle langue à traduire
----------------------------------------------
......@@ -117,4 +140,4 @@ django-admin makemessages --locale=pt_BR
Django devrait créer l'arborescence et le fichier django.po nécéssaire
dans le dossier locale/
Si ce n'est pas le cas, vous pouvez la créer à la main.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment