Projet

Général

Profil

Development #477

Chargement de traduction par site

Ajouté par Benjamin Dauvergne il y a presque 13 ans. Mis à jour il y a plus de 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
09 juin 2011
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Planning:

Description

Apparemment certaines villes voudraient bien pouvoir modifier certains textes qui sortent directement des fichiers de traduction, une possibilité serait d'avoir des fichiers de traduction par domaine (dans <app_dir>/fr.po par exemple).

Ce patch implémente une telle foncionnalité.

Le cache est global (i.e. stoqué au niveau de la classe QommonPublisher et non pas des instances), mais ça n'a pas vraiment d'importance, vu qu'il n'y qu'une instance par processus du publisher.

http://perso.entrouvert.org/~bdauvergne/git/cgit.cgi?url=wcs-perso/commit/&h=per-site-translation&id=4053867e35cf0624df87f68b38fcd29846c4dc21

Révisions associées

Révision 7c6685c6 (diff)
Ajouté par Thomas Noël il y a presque 13 ans

can use a translation object for the given language and the current site (app_dir)

written by Benjamin Dauvergne
fix #477

Révision 2cbe6a6f (diff)
Ajouté par Thomas Noël il y a plus de 12 ans

get translation from the current theme

ticket #477

Historique

#1

Mis à jour par Frédéric Péters il y a presque 13 ans

Je pense que ce n'est pas vraiment utile de faire des patchs ainsi, sans discussion préalable.

#2

Mis à jour par Benjamin Dauvergne il y a presque 13 ans

Et sinon il fait beau à Bruxelles ?

#3

Mis à jour par Frédéric Péters il y a presque 13 ans

Deux points sur le patch, même si tu ne les demande pas :

  • à nouveau add_fallback, que je ne pense toujours pas une bonne idée ;
  • ça devrait avoir sa place dans l'admin, comme les textes et courriels paramétrables.

Et ensuite, de manière générale quand une demande est connue, encore plus quand Thomas écrit qu'il y a des réflexions en cours, je trouve pas mal de s'y intéresser.

#4

Mis à jour par Benjamin Dauvergne il y a presque 13 ans

écrivait:

  • ça devrait avoir sa place dans l'admin, comme les textes et
    courriels paramétrables.

C'était aussi ma première idée mais on s'est dit avec Thomas qu'il
fallait faire simple dans un premier temps, le besoin étant tout de même
très ponctuel.

#5

Mis à jour par Pierre Cros il y a presque 13 ans

Le jeudi 09 juin 2011 à 11:51 +0200, a écrit :

C'était aussi ma première idée mais on s'est dit avec Thomas qu'il
fallait faire simple dans un premier temps, le besoin étant tout de
même très ponctuel.

Travaillant avec Fred depuis longtemps, j'ai pu expérimenter de
nombreuses fois que son côté casse-couille sur la généricité et la
maintenabilité de ce qu'il fait, simplifie drôlement la donne à terme.
Donc la fausse simplicité, je m'en méfie.

#6

Mis à jour par Thomas Noël il y a presque 13 ans

Pierre Cros a écrit :

Le jeudi 09 juin 2011 à 11:51 +0200, a écrit :

C'était aussi ma première idée mais on s'est dit avec Thomas qu'il
fallait faire simple dans un premier temps, le besoin étant tout de
même très ponctuel.

Travaillant avec Fred depuis longtemps, j'ai pu expérimenter de
nombreuses fois que son côté casse-couille sur la généricité et la
maintenabilité de ce qu'il fait, simplifie drôlement la donne à terme.
Donc la fausse simplicité, je m'en méfie.

Moi je me souviens plutôt d'une discussion où je proposais de faire une interface de traduction dans l'admin pour aider Victor à être autonome, et où Fred m'a répondu "non on fera juste un fichier .mo à uploader et puis c'est tout"... C'est pour ça que j'ai dit à Benjamin que vas-y on s'en fout, si y'a un .mo on le charge, et voilà.

#7

Mis à jour par Victor Claudet il y a presque 13 ans

Du coup on arrête tout ? parce que moi je trouve que se serait vachement cool de pouvoir intervenir là-dessus.

Genre remplacer "inscription" par "Créer mon compte citoyen".

Remplacer "statut", par "étape"...

#8

Mis à jour par Frédéric Péters il y a presque 13 ans

J'avais commencé à écrire un commentaire technique, pour l'oublier en route…

Mais avant tout, pour reprendre,

Genre remplacer "inscription" par "Créer mon compte citoyen".

Remplacer "statut", par "étape"...

Je dirais que des libellés ainsi, tu auras envie de les avoir sur tous les au quotidien, non ?

#9

Mis à jour par Thomas Noël il y a presque 13 ans

Frédéric Péters a écrit :

Je dirais que des libellés ainsi, tu auras envie de les avoir sur tous les au quotidien, non ?

On aimerait, mais genre sur Vincennes ils veulent "Créez votre compte ..." et sur [jesaispluslequel] ils veulent "Créer mon compte ...".

Donc vraiment, la possibilité d'avoir des po/.mo dans le /var/lib/wcs/site/ et/ou dans les themes, ça serait la solution pour permettre ça -- en attendant une solution jolie dans l'interface admin, un jour.

#10

Mis à jour par Frédéric Péters il y a presque 13 ans

On aimerait, mais genre sur Vincennes ils veulent "Créez votre compte ..." et sur [jesaispluslequel] ils veulent "Créer mon compte ...".

Et le jour où on décide de modifier une chaîne de caractère, leur chaîne spéciale elle reviendra sur la valeur native, et le joli "Créez votre compte citoyen eChirolles" il redeviendra "Inscription", et ce sera du support.

Parce que la demande, et je ne m'en rends compte que maintenant, elle signifie soit ces problèmes, soit qu'on considère les textes comme une API stable.

#11

Mis à jour par Thomas Noël il y a presque 13 ans

Frédéric Péters a écrit :

Et le jour où on décide de modifier une chaîne de caractère, leur chaîne spéciale elle reviendra sur la valeur native, et le joli "Créez votre compte citoyen Echirolles" il redeviendra "Inscription", et ce sera du support.

Ah. Oui. Zut. Aie.

Décider que les textes sont "API stable", effectivement : je ne vois pas trop d'autre issue.

Faut voir avec le release manager s'il a envie de s'embêter avec ça (=> indiquer dans un fichiers NEWS les changements de textes entre deux releases).

PS : peut-être ne pas forcément "stabiliser" absolument tous les textes... (par exemple laisser de côté les textes des EmailsDirectory et TextsDirectory...).

#12

Mis à jour par Frédéric Péters il y a presque 13 ans

EmailsDirectory et TextsDirectory fournissent justement un mapping vers une chaine fixe, genre top-of-profile, qui nous laisse latitude dans les modifications au texte contenu.

Pour info côté Plone le problème est invité de la manière suivante, leur équivalent gettext(x) est gettext(identifier, default), ça donne donc dans le code des trucs genre _("current-deputies", "Current Deputies"), et c'est le "current-deputies" qui se retrouve dans le .po. Mais ça a une certiane lourdeur, et ce n'est vraiment pas utilisé de manière systématique.

#13

Mis à jour par Thomas Noël il y a presque 13 ans

Frédéric Péters a écrit :

Pour info côté Plone le problème est invité de la manière suivante, leur équivalent gettext(x) est gettext(identifier, default), ça donne donc dans le code des trucs genre _("current-deputies", "Current Deputies"), et c'est le "current-deputies" qui se retrouve dans le .po. Mais ça a une certiane lourdeur, et ce n'est vraiment pas utilisé de manière systématique.

Si on pourrait adopter ça (ou un genre de), ça permettrait en plus de voir clairement les phrases jugées "stables". Moi j'aime bien.

#14

Mis à jour par Frédéric Péters il y a presque 13 ans

Je reste sûr qu'il faut laisser cette fonctionnalité dans l'obscurité, parce que ce soucis de chaînes considérées API, il est présent et important. Mais en gardant la fonctionnalité cachée, en en connaissant les soucis, nous, et à partir du moment où je n'aurai pas à me soucier, moi, de surveiller les sites où cette fonctionnalité serait utilisée, je pense que ça peut être intégré (une fois la gestion de cache virée).

#15

Mis à jour par Thomas Noël il y a presque 13 ans

Frédéric Péters a écrit :

Je reste sûr qu'il faut laisser cette fonctionnalité dans l'obscurité, parce que ce soucis de chaînes considérées API, il est présent et important. Mais en gardant la fonctionnalité cachée, en en connaissant les soucis, nous, et à partir du moment où je n'aurai pas à me soucier, moi, de surveiller les sites où cette fonctionnalité serait utilisée, je pense que ça peut être intégré

Perfect.

(une fois la gestion de cache virée).

Si on le fait pas, ça veut dire relancer wcs à chaque mise à jour d'un .mo d'un des sites. Sur un wcs mutualisé, c'est dommage.

#16

Mis à jour par Frédéric Péters il y a presque 13 ans

(une fois la gestion de cache virée).

Si on le fait pas, ça veut dire relancer wcs à chaque mise à jour d'un .mo d'un des sites. Sur un wcs mutualisé, c'est dommage.

Si on le fait pas on doit recharger le .mo à chaque fois, plutôt; avoir un petit coup sur les perfs, ça me satisfait dans mon intention de dissuader l'usage.

#18

Mis à jour par Frédéric Péters il y a presque 13 ans

C'est ok; tu commiterais après un rebase, histoire de n'avoir qu'un seul commit ?

#19

Mis à jour par Thomas Noël il y a presque 13 ans

  • Statut changé de Nouveau à Solution déployée
  • % réalisé changé de 0 à 90

Appliqué par commit r2157.

#20

Mis à jour par Thomas Noël il y a presque 13 ans

  • Projet changé de Au quotidien à w.c.s.
  • Catégorie Client supprimé
  • Statut changé de Solution déployée à Fermé
#21

Mis à jour par Thomas Noël il y a plus de 12 ans

  • Statut changé de Fermé à En cours
  • Version cible mis à Vincennes - v1 : compte citoyen et téléservices

Un patch pour que les traductions soient prises dans le thème plutôt que dans l'app_dir (objectif : permettre à Victor de gérer cette partie en autonomie)

Index: publisher.py
===================================================================
--- publisher.py    (revision 2182)
+++ publisher.py    (working copy)
@@ -259,8 +259,11 @@
         return template.decorate(output, response)

     def get_translation(self, lang):
-        '''Retrieve a translation object for the given language and the current site.'''
-        app_translation_path = os.path.join(self.app_dir, '%s.mo' % lang)
+        '''Retrieve a translation object for the given language and
+        the current theme site.'''
+        current_theme = self.cfg.get('branding', {}).get('theme', 'default')
+        app_translation_path = os.path.join(self.app_dir, 'themes',
+                current_theme, '%s.mo' % lang)
         if os.path.exists(app_translation_path):
             trans = gettext.GNUTranslations(file(app_translation_path))
             trans.add_fallback(self.translations[lang])

Testé sur vincennes.au-quotidien.com, ça marche.

et committé dans le svn : r2183

#22

Mis à jour par Victor Claudet il y a plus de 12 ans

  • Version cible changé de Vincennes - v1 : compte citoyen et téléservices à Au-quotidien 2012.1
#23

Mis à jour par Thomas Noël il y a plus de 12 ans

  • Statut changé de En cours à Solution déployée
  • % réalisé changé de 90 à 100
#24

Mis à jour par Thomas Noël il y a plus de 12 ans

  • Statut changé de Solution déployée à Résolu (à déployer)
#25

Mis à jour par Frédéric Péters il y a plus de 10 ans

  • Statut changé de Résolu (à déployer) à Fermé
#26

Mis à jour par Thomas Noël il y a plus de 8 ans

  • Version cible Au-quotidien 2012.1 supprimé

Formats disponibles : Atom PDF