Skip to content

Commit e8db584

Browse files
author
Alexander Smishlajev
committed
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.
1 parent 0febed8 commit e8db584

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

roundup/cgi/client.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
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
"""
@@ -10,7 +10,6 @@
1010

1111

1212
from roundup import roundupdb, date, hyperdb, password
13-
from roundup.i18n import _
1413
from roundup.cgi import templating, cgitb
1514
from roundup.cgi.actions import *
1615
from 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

Comments
 (0)