https://dev.entrouvert.org/https://dev.entrouvert.org/favicon.ico?15861920342020-07-16T17:20:06ZRedmine Entr’ouvertEOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2490262020-07-16T17:20:06ZFrédéric Pétersfpeters@entrouvert.com
<ul><li><strong>Lié à</strong> <i><a class="issue tracker-1 status-5 priority-4 priority-default closed" href="/issues/45183">Bug #45183</a>: Traductions manquantes sur l'ajout d'une plateforme de paiement</i> ajouté</li></ul> EOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2637472020-10-11T07:37:26ZBenjamin Dauvergne
<ul><li><strong>Priorité</strong> changé de <i>Normal</i> à <i>Bas</i></li></ul><p>On ne sais juste pas faire pour l'instant (intégration localisation Django avec localisation LC_MESSAGE), si quelqu'un a une solution propre et jolie qu'il la pose ici.</p> EOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2637572020-10-11T07:45:00ZBenjamin Dauvergne
<ul><li><strong>Dupliqué par</strong> <i><a class="issue tracker-2 status-5 priority-3 priority-lowest closed" href="/issues/10006">Development #10006</a>: corrections à la gestion des traductions</i> ajouté</li></ul> EOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2690482020-11-03T18:01:52ZBenjamin Dauvergne
<ul></ul><p>Commentaire recopié de <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Traductions manquantes sur l'ajout d'une plateforme de paiement (Fermé)" href="https://dev.entrouvert.org/issues/45183">#45183</a>,</p>
<blockquote>
<p>Je ne sais pas comment ça va marcher; Django ne change pas la locale globale (LANG) donc le un simple gettext.gettext ne marchera pas même si on installe le catalogue (et si on se met à utiliser deux APIs gettext, celle de Django qui utilise ses catalogues et celle de Python). L'autre possibilité c'est de passer explicitement la locale à une méthode get_description(lang=None) et que ça renvoie des descriptions déjà traduites (et en unicode).</p>
</blockquote>
<blockquote>
<p>J'ai cherché un peu la marche à suivre concernant des modules python pour les traductions mais ça suppose qu'on utilise les locales normalement pas comme Django.</p>
</blockquote>
Un plan pour qui n'en veut :
<ul>
<li>produire un fichier de traduction, s'arranger pour l'installer dans /usr/share/locale/<lang>/LC_MESSAGES/eopayment.mo (ou alors dans le code du projet comme Django, ça ne change pas grand chose), on doit pouvoir réutiliser <code>django-admin makemessages</code> en faisant un répertoire <code>eopayment/locale/fr/LC_MESSAGES/</code></li>
<li>ajouter un paramètre lang=None à <code>Payment.get_parameters()</code></li>
<li>si lang=None, on fait rien</li>
<li>sinon :
<ul>
<li>on obtient un objet de traduction via <code>gettext.translation('eopayment', [localedir=os.path.join(os.path.dirname(__file__), 'locale'])</code> (localedir si on utilise pas le répertoire système)</li>
<li>on traverse parameters en traduisant toutes les clés 'caption', 'help_text' et 'choices' aver trans.gettext(message) (où trans.ugettext(message) pour py2 mais on peut aussi se dire qu'on s'en fout)</li>
</ul></li>
</ul>
<p>PS: penser à ajouter des N_(..) partout</p> EOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2718162020-11-18T09:26:34ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><p>Proposition alternative pour marcher très facilement/rapidement avec combo, sans poser de problème ailleurs,</p>
<p>Taper dans common.py</p>
<pre>
+try:
+ from django.utils.translation import ugettext_lazy as _
+except ImportError:
+ from gettext import gettext as _ # compat avec un existant bidon, _ = lambda x: x ferait pareil.
</pre>
<p>Remplacer les <code>from gettext import gettext as _</code> par des <code>from .common import _</code>.</p>
<p>Ajouter un répertoire eopayment/locale/fr/LC_MESSAGES/. Ajouter un appel à <code>django-admin compilemessages -l fr</code> dans le setup.py.</p>
<p>Dans combo ajouter eopayment à l'INSTALLED_APPS.</p> EOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2718182020-11-18T09:26:51ZFrédéric Pétersfpeters@entrouvert.com
<ul><li><strong>Lié à</strong> <i><a class="issue tracker-2 status-5 priority-4 priority-default closed" href="/issues/48636">Development #48636</a>: afficher le help_text des paramètres d'un backend de paiement</i> ajouté</li></ul> EOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2719782020-11-18T17:51:40ZBenjamin Dauvergne
<ul></ul><p>Frédéric Péters a écrit :</p>
<blockquote>
<p>Taper dans common.py</p>
<p>[...]</p>
</blockquote>
<p>Ok mais ajouter en plus comme condition <code>'django' in sys.modules</code>. Sans cela on aura une trace dès que django est installé sur la machine mais n'est pas utilisé au moment où on charge eopayment (genre un test de paiement payfip_ws avec l'outil CLI intégré) :</p>
<pre>
Python 3.8.6 (default, Sep 25 2020, 09:36:53)
[GCC 10.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys.modules
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'sys.modules'; 'sys' is not a package
>>> import django.utils.translation
>>> from django.utils.translation import ugettext_lazy as _
>>> _('xxx')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/django/utils/functional.py", line 123, in __repr__
return repr(self.__cast())
File "/usr/lib/python3/dist-packages/django/utils/functional.py", line 168, in __cast
return self.__text_cast()
File "/usr/lib/python3/dist-packages/django/utils/functional.py", line 156, in __text_cast
return func(*self.__args, **self.__kw)
File "/usr/lib/python3/dist-packages/django/utils/translation/__init__.py", line 79, in gettext
return _trans.gettext(message)
File "/usr/lib/python3/dist-packages/django/utils/translation/__init__.py", line 54, in __getattr__
if settings.USE_I18N:
File "/usr/lib/python3/dist-packages/django/conf/__init__.py", line 79, in __getattr__
self._setup(name)
File "/usr/lib/python3/dist-packages/django/conf/__init__.py", line 60, in _setup
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
</pre> EOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2719812020-11-18T19:27:31ZFrédéric Pétersfpeters@entrouvert.com
<ul><li><strong>Statut</strong> changé de <i>Nouveau</i> à <i>En cours</i></li><li><strong>Assigné à</strong> mis à <i>Frédéric Péters</i></li></ul><p>(je viens de pousser une branche de test)</p> EOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2719822020-11-18T20:12:45ZFrédéric Pétersfpeters@entrouvert.com
<ul><li><strong>Fichier</strong> <a href="/attachments/49714">0001-add-support-for-translation-when-used-as-a-django-ap.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/49714/0001-add-support-for-translation-when-used-as-a-django-ap.patch">0001-add-support-for-translation-when-used-as-a-django-ap.patch</a> ajouté</li><li><strong>Statut</strong> changé de <i>En cours</i> à <i>Solution proposée</i></li><li><strong>Patch proposed</strong> changé de <i>Non</i> à <i>Oui</i></li></ul><p>Dans la branche un second patch, avec le .po de la traduction.</p>
<p>Dans le patch attaché ce que je décris ci-dessus, avec la remarque de Benjamin concernant <code>'django' in sys.modules</code>, ainsi qu'un tour des différents backends de paiement pour retirer le marqueur de traduction des chaines écrites en français.</p> EOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2719882020-11-18T22:26:41ZBenjamin Dauvergne
<ul><li><strong>Statut</strong> changé de <i>Solution proposée</i> à <i>Solution validée</i></li></ul> EOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2720082020-11-19T08:07:07ZFrédéric Pétersfpeters@entrouvert.com
<ul><li><strong>Statut</strong> changé de <i>Solution validée</i> à <i>Résolu (à déployer)</i></li></ul><pre>
commit 6fe18d4d58a67327cebb1b4707225dc1b086c3c7
Author: Frédéric Péters <fpeters@entrouvert.com>
Date: Wed Nov 18 20:16:46 2020 +0100
add support for translation when used as a django app (#43082)
</pre>
<p>(en local c'était correct mais contenu du .deb produit à vérifier quand même).</p> EOPayment - Development #43082: traductionshttps://dev.entrouvert.org/issues/43082?journal_id=2722602020-11-19T20:17:03ZFrédéric Pétersfpeters@entrouvert.com
<ul><li><strong>Statut</strong> changé de <i>Résolu (à déployer)</i> à <i>Solution déployée</i></li></ul>