src/pyams_i18n/expr.py
changeset 31 65e4710b699f
parent 30 e82b56583f65
child 73 d507481e1c13
equal deleted inserted replaced
30:e82b56583f65 31:65e4710b699f
    23 from chameleon.tales import StringExpr
    23 from chameleon.tales import StringExpr
    24 from pyams_utils.tales import ContextExprMixin
    24 from pyams_utils.tales import ContextExprMixin
    25 
    25 
    26 
    26 
    27 def render_i18n_expression(econtext, name):
    27 def render_i18n_expression(econtext, name):
    28     """Render an I18n expression"""
    28     """Render an I18n expression
       
    29 
       
    30     Value can be given as a single attribute name (for example: "i18n:title"), in which case value
       
    31     is extracted from current "context".
       
    32     But value can also be given as a dotted name, for example "i18n:local_var.property.title".
       
    33     """
    29 
    34 
    30     name = name.strip()
    35     name = name.strip()
    31     if '.' in name:
    36     if '.' in name:
    32         names = name.split('.')
    37         names = name.split('.')
    33         context = econtext.get(names[0])
    38         context = econtext.get(names[0])
    34         for name in names[1:-1]:
    39         for name in names[1:-1]:
    35             context = getattr(context, name)
    40             context = getattr(context, name)
    36         attr = names[-1]
    41         attr = names[-1]
    37     else:
    42     else:
    38         context_name = 'context',
    43         context = econtext.get('context')
    39         context = econtext.get(context_name)
       
    40         attr = name
    44         attr = name
    41     request = econtext.get('request')
    45     request = econtext.get('request')
    42     return II18n(context).query_attribute(attr, request=request)
    46     return II18n(context).query_attribute(attr, request=request)
    43 
    47 
    44 
    48