# HG changeset patch # User Thierry Florac # Date 1537198604 -7200 # Node ID d507481e1c13f9df9695f79acc9c198492a09777 # Parent 4146dbce4034ac76c5dad0e187ec227d15eb6ac8 Added I18n TALES extension diff -r 4146dbce4034 -r d507481e1c13 src/pyams_i18n/expr.py --- a/src/pyams_i18n/expr.py Thu Jun 28 08:39:51 2018 +0200 +++ b/src/pyams_i18n/expr.py Mon Sep 17 17:36:44 2018 +0200 @@ -15,12 +15,15 @@ # import standard library -# import interfaces -from pyams_i18n.interfaces import II18n - # import packages from chameleon.astutil import Symbol from chameleon.tales import StringExpr +from zope.interface import Interface + +# import interfaces +from pyams_i18n.interfaces import II18n +from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter +from pyams_utils.interfaces.tales import ITALESExtension from pyams_utils.tales import ContextExprMixin @@ -50,3 +53,18 @@ """i18n:context.attribute TALES expression""" transform = Symbol(render_i18n_expression) + + +@adapter_config(name='i18n', context=(Interface, Interface, Interface), provides=ITALESExtension) +class I18NTalesExtension(ContextRequestViewAdapter): + """extension:i18n(context, attribute, default=None) TALES extension + + Similar to standard i18n: TALES expression, but provides a default value. + """ + + def render(self, context, attribute, default=None): + try: + value = II18n(context).query_attribute(attribute, request=self.request) + except AttributeError: + value = default + return value