diff options
author | Stephan Richter <stephan.richter@gmail.com> | 2005-11-02 22:11:10 +0000 |
---|---|---|
committer | Stephan Richter <stephan.richter@gmail.com> | 2005-11-02 22:11:10 +0000 |
commit | 5c8164388da1e64f8789f90a390b9b090b0bc069 (patch) | |
tree | 94a2558cc178ba47b3dc83750a663a047da102b0 | |
parent | 7c9343bc0f7287f61b66f461eba3e0bcdc1192cf (diff) | |
download | zope-tal-5c8164388da1e64f8789f90a390b9b090b0bc069.tar.gz |
The TALInterpreter methods called the engine's translate function
directly; this is a big no-no; the interpreter's methods should use the
interpreter's translate() method.
This fixes a bug in i18nextract, where the file positions were suddenly
not available anymore.
-rw-r--r-- | talgettext.py | 6 | ||||
-rw-r--r-- | talinterpreter.py | 21 |
2 files changed, 18 insertions, 9 deletions
diff --git a/talgettext.py b/talgettext.py index c6023bc..2a0d794 100644 --- a/talgettext.py +++ b/talgettext.py @@ -71,7 +71,9 @@ def usage(code, msg=''): class POTALInterpreter(TALInterpreter): - def translate(self, msgid, default, i18ndict=None, obj=None): + def translate(self, msgid, default=None, i18ndict=None, obj=None): + if default is None: + default = getattr(msgid, 'default', unicode(msgid)) # If no i18n dict exists yet, create one. if i18ndict is None: i18ndict = {} @@ -83,7 +85,7 @@ class POTALInterpreter(TALInterpreter): return None # TODO: We need to pass in one of context or target_language return self.engine.translate(msgid, self.i18nContext.domain, i18ndict, - position=self.position, default=default) + default=default, position=self.position) class POEngine(DummyEngine): diff --git a/talinterpreter.py b/talinterpreter.py index 80b7430..0a79f71 100644 --- a/talinterpreter.py +++ b/talinterpreter.py @@ -498,7 +498,7 @@ class TALInterpreter(object): if ok: if xlat: - translated = self.translate(msgid or value, value, {}) + translated = self.translate(msgid or value, value) if translated is not None: value = translated if value is None: @@ -631,7 +631,7 @@ class TALInterpreter(object): # Translate this now. # BBB: Deprecated. Will be removed in 3.3 self._i18n_deprecate() - text = self.engine.translate(text) + text = self.translate(text) self._writeText(text) def _i18n_deprecate(self): @@ -656,9 +656,9 @@ class TALInterpreter(object): self.interpret(stuff[1]) return if isinstance(text, I18nMessageTypes): - text = self.engine.translate(text) + text = self.translate(text) elif isinstance(text, (StringType, UnicodeType)): - text = self.engine.translate(text, domain=self.i18nContext.domain) + text = self.translate(text) self._writeText(text) def do_i18nVariable(self, stuff): @@ -696,7 +696,7 @@ class TALInterpreter(object): # Translate this now. # BBB: Deprecated. Will be removed in 3.3 self._i18n_deprecate() - value = self.engine.translate(value) + value = self.translate(value) if not structure: value = cgi.escape(unicode(value)) @@ -788,7 +788,7 @@ class TALInterpreter(object): self.interpret(block) return if isinstance(structure, I18nMessageTypes): - text = self.engine.translate(structure) + text = self.translate(structure) else: text = unicode(structure) if not (repldict or self.strictinsert): @@ -845,7 +845,14 @@ class TALInterpreter(object): self.interpret(block) bytecode_handlers["loop"] = do_loop - def translate(self, msgid, default, i18ndict, obj=None): + def translate(self, msgid, default=None, i18ndict=None, + obj=None, domain=None): + if default is None: + default = getattr(msgid, 'default', unicode(msgid)) + if i18ndict is None: + i18ndict = {} + if domain is None: + domain = getattr(msgid, 'domain', self.i18nContext.domain) if obj: i18ndict.update(obj) if not self.i18nInterpolate: |