diff genshi/filters/i18n.py @ 483:5cc92db755c5 trunk

Fix for handling of interpolated attribute values in translation filter.
author cmlenz
date Sun, 20 May 2007 17:10:38 +0000
parents 9a658eeecf9e
children fb66fb3e4b49
line wrap: on
line diff
--- a/genshi/filters/i18n.py
+++ b/genshi/filters/i18n.py
@@ -8,7 +8,7 @@
 from opcode import opmap
 import re
 
-from genshi.core import Attrs, Namespace, QName, START, END, TEXT
+from genshi.core import Attrs, Namespace, QName, START, END, TEXT, _ensure
 from genshi.template.base import Template, EXPR, SUB
 from genshi.template.markup import EXEC
 
@@ -132,16 +132,17 @@
                 new_attrs = list(attrs)
                 changed = False
                 for name, value in attrs:
-                    if name in include_attrs:
-                        if isinstance(value, basestring):
+                    newval = value
+                    if isinstance(value, basestring):
+                        if name in include_attrs:
                             newval = self.translate(value)
-                        else:
-                            newval = list(self(value, ctxt,
-                                search_text=name in include_attrs)
-                            )
-                        if newval != value:
-                            value = newval
-                            changed = True
+                    else:
+                        newval = list(self(_ensure(value), ctxt,
+                            search_text=name in include_attrs)
+                        )
+                    if newval != value:
+                        value = newval
+                        changed = True
                     new_attrs.append((name, value))
                 if changed:
                     attrs = new_attrs
@@ -229,15 +230,15 @@
                     continue
 
                 for name, value in attrs:
-                    if name in self.include_attrs:
-                        if isinstance(value, basestring):
+                    if isinstance(value, basestring):
+                        if name in self.include_attrs:
                             text = value.strip()
                             if text:
                                 yield pos[1], None, text
-                        else:
-                            for lineno, funcname, text in self.extract(value,
-                                    gettext_functions):
-                                yield lineno, funcname, text
+                    else:
+                        for lineno, funcname, text in self.extract(
+                                _ensure(value), gettext_functions):
+                            yield lineno, funcname, text
 
             elif kind is TEXT:
                 text = data.strip()
Copyright (C) 2012-2017 Edgewall Software