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 |