1- # $Id: client.py,v 1.178 2004-05-27 21:51:43 richard Exp $
1+ # $Id: client.py,v 1.179 2004-06-15 09:19:49 a1s Exp $
22
33"""WWW request handler (also used in the stand-alone server).
44"""
1010
1111
1212from roundup import roundupdb , date , hyperdb , password
13- from roundup .i18n import _
1413from roundup .cgi import templating , cgitb
1514from roundup .cgi .actions import *
1615from roundup .cgi .exceptions import *
@@ -103,7 +102,7 @@ class Client:
103102 # columns, sort, sortdir, filter, group, groupdir, search_text,
104103 # pagesize, startwith
105104
106- def __init__ (self , instance , request , env , form = None ):
105+ def __init__ (self , instance , request , env , form = None , translator = None ):
107106 # re-seed the random number generator
108107 random .seed ()
109108 if __debug__ :
@@ -112,6 +111,7 @@ def __init__(self, instance, request, env, form=None):
112111 self .instance = instance
113112 self .request = request
114113 self .env = env
114+ self .setTranslator (translator )
115115 self .mailer = Mailer (instance .config )
116116
117117 # save off the path
@@ -154,6 +154,22 @@ def __init__(self, instance, request, env, form=None):
154154 # parse cookies (used in charset and session lookups)
155155 self .cookie = Cookie .SimpleCookie (self .env .get ('HTTP_COOKIE' , '' ))
156156
157+ def setTranslator (self , translator = None ):
158+ """Replace the translation engine
159+
160+ 'translator'
161+ is i18n module or one of gettext translation classes.
162+ It must have attributes 'gettext' and 'ngettext',
163+ serving as translation functions.
164+
165+ If omitted, use templating.translationService.
166+ """
167+ if translator is None :
168+ translator = templating .translationService
169+ self .translator = translator
170+ self ._ = self .gettext = translator .gettext
171+ self .ngettext = translator .ngettext
172+
157173 def main (self ):
158174 ''' Wrap the real main in a try/finally so we always close off the db.
159175 '''
@@ -257,7 +273,7 @@ def inner_main(self):
257273 # pass through
258274 raise
259275 except FormError , e :
260- self .error_message .append (_ ('Form Error: ' ) + str (e ))
276+ self .error_message .append (self . _ ('Form Error: ' ) + str (e ))
261277 self .write_html (self .renderContext ())
262278 except :
263279 # everything else
@@ -307,7 +323,7 @@ def determine_charset(self):
307323 try :
308324 codecs .lookup (charset )
309325 except LookupError :
310- self .error_message .append (_ ('Unrecognized charset: %r' )
326+ self .error_message .append (self . _ ('Unrecognized charset: %r' )
311327 % charset )
312328 else :
313329 self .charset = charset .lower ()
0 commit comments