changeset 2467:76ead526113d

client instances may be used as translation engines. any backend translator may be passed as constructor argument or via setTranslator() method. by default, templating.translationService is used. use this engine to translate client messages.
author Alexander Smishlajev <a1s@users.sourceforge.net>
date Tue, 15 Jun 2004 09:19:49 +0000
parents 7b248ea0a2e5
children 7d5bf9cbd75d
files roundup/cgi/client.py
diffstat 1 files changed, 21 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/roundup/cgi/client.py	Tue Jun 15 09:15:14 2004 +0000
+++ b/roundup/cgi/client.py	Tue Jun 15 09:19:49 2004 +0000
@@ -1,4 +1,4 @@
-# $Id: client.py,v 1.178 2004-05-27 21:51:43 richard Exp $
+# $Id: client.py,v 1.179 2004-06-15 09:19:49 a1s Exp $
 
 """WWW request handler (also used in the stand-alone server).
 """
@@ -10,7 +10,6 @@
 
 
 from roundup import roundupdb, date, hyperdb, password
-from roundup.i18n import _
 from roundup.cgi import templating, cgitb
 from roundup.cgi.actions import *
 from roundup.cgi.exceptions import *
@@ -103,7 +102,7 @@
     # columns, sort, sortdir, filter, group, groupdir, search_text,
     # pagesize, startwith
 
-    def __init__(self, instance, request, env, form=None):
+    def __init__(self, instance, request, env, form=None, translator=None):
         # re-seed the random number generator
         random.seed()
         if __debug__:
@@ -112,6 +111,7 @@
         self.instance = instance
         self.request = request
         self.env = env
+        self.setTranslator(translator)
         self.mailer = Mailer(instance.config)
 
         # save off the path
@@ -154,6 +154,22 @@
         # parse cookies (used in charset and session lookups)
         self.cookie = Cookie.SimpleCookie(self.env.get('HTTP_COOKIE', ''))
 
+    def setTranslator(self, translator=None):
+        """Replace the translation engine
+
+        'translator'
+           is i18n module or one of gettext translation classes.
+           It must have attributes 'gettext' and 'ngettext',
+           serving as translation functions.
+
+           If omitted, use templating.translationService.
+        """
+        if translator is None:
+            translator = templating.translationService
+        self.translator = translator
+        self._ = self.gettext = translator.gettext
+        self.ngettext = translator.ngettext
+
     def main(self):
         ''' Wrap the real main in a try/finally so we always close off the db.
         '''
@@ -257,7 +273,7 @@
             # pass through
             raise
         except FormError, e:
-            self.error_message.append(_('Form Error: ') + str(e))
+            self.error_message.append(self._('Form Error: ') + str(e))
             self.write_html(self.renderContext())
         except:
             # everything else
@@ -307,7 +323,7 @@
             try:
                 codecs.lookup(charset)
             except LookupError:
-                self.error_message.append(_('Unrecognized charset: %r')
+                self.error_message.append(self._('Unrecognized charset: %r')
                     % charset)
             else:
                 self.charset = charset.lower()

Roundup Issue Tracker: http://roundup-tracker.org/