Traduire un package Plone 3

15/50/2008 zope plone3

Je n'ai pas creusé plus que ça, mais apparemment il y a de beaux conflits entre zope.i18n et PlacelessTranslationService. Du coup, tant que l'on veut ajouter des traductions à un domaine non existant, se servir de zope.i18n ne pose pas de problème. Par contre, si l'on désire ajouter des traductions au domaine plone par exemple, ça ce complique.

Le seul moyen que j'ai pu trouver après quelques heures d'introspection est d'enregistrer un .po qui se trouve hors du répertoire locales (si vous le mettez dedans, ça casse tout) lors de l'initialisation du paquet. Cela donne un bout de code horrible qui me ferais presque honte... Voyez plutôt le contenu de mon __init__.py:

def initialize(context):
    """Initializer called when used as a Zope 2 product."""
    context._ProductContext__app.Control_Panel.TranslationService._load_i18n_dir(os.path.dirname(__file__)+'/i18n')

Alors, oui, c'est dégueulasse, mais ça marche.

Utiliser zope.sendmail dans Zope 2

11/50/2008 zope

Depuis que les sources de Zope3 sont incluse dans Zope2, il est vraiment dommage de ne pas utiliser au maximum ces possibilités.

Entre autre, il existe un package assez peu connu zope.sendmail qui permet d'envoyer des mails de façon asynchrone. Les mails sont stockés dans une mailbox puis envoyés par un thread séparé de Zope.

L'inconvénient de ce package est que tout est configurable, mais uniquement via du zcml. Le TODO indique que, oui, ça serait bien qu'un jour cela soit dans le zope.conf, mais en attendant...

Finalement, depuis qu'on a tendance à utiliser buildout (parce que quand même, ça arrache) il était super simple de créer une petite recette qui installe un bout de zcml dans le répertoire qui vas bien.

Le résultat est iw.recipe.sendmail. Simple, et efficace.

Un autre petit paquet, iw.mailhost, permet de patcher les produits MailHost et SecureMailHost afin d'utiliser zope.sendmail en lieu et place de smtplib. Il suffit de le placer dans un répertoire inclus dans le sys.path pour qu'il soit importé par le zcml généré par iw.recipe.sendmail

A noter que ceci a été éprouvé sous OSX, Linux et Windows. Enjoy !