Index: roundup/configuration.py =================================================================== RCS file: /cvsroot/roundup/roundup/roundup/configuration.py,v retrieving revision 1.27 diff -u -r1.27 configuration.py --- roundup/configuration.py 7 Oct 2005 04:42:13 -0000 1.27 +++ roundup/configuration.py 2 Dec 2005 12:52:35 -0000 @@ -474,6 +474,11 @@ "variables supplied by your web server (in that order).\n" "Set this option to 'no' if you do not wish to use HTTP Basic\n" "Authentication in your web interface."), + (BooleanOption, 'use_browser_language', "no", + "Whether to use HTTP Accept-Language, if present.\n" + "Browsers send a language-region preference list. It's usually set\n" + "in the client's browser or in his Operating System.\n" + "Set this option to 'no' if you want to ignore it."), )), ("rdbms", ( (Option, 'name', 'roundup', Index: roundup/cgi/client.py =================================================================== RCS file: /cvsroot/roundup/roundup/roundup/cgi/client.py,v retrieving revision 1.216 diff -u -r1.216 client.py --- roundup/cgi/client.py 18 Jul 2005 02:19:40 -0000 1.216 +++ roundup/cgi/client.py 2 Dec 2005 14:19:13 -0000 @@ -15,6 +15,7 @@ from roundup.cgi.exceptions import * from roundup.cgi.form_parser import FormParser from roundup.mailer import Mailer, MessageSendError +from roundup.cgi import accept_language def initialiseSecurity(security): '''Create some Permissions and Roles on the security object @@ -226,6 +227,8 @@ try: self.determine_charset() + self.determine_language() + # make sure we're identified (even anonymously) self.determine_user() @@ -386,6 +389,31 @@ value = re_charref.sub(_decode_charref, value) field.value = encoder(value)[0] + def determine_language(self): + ''' Determine the language + ''' + # look for language parameter + # then for language cookie + # last for the Accept-Language header + if self.form.has_key("@language"): + language = self.form["@language"].value + if language.lower() == "none": + language = "" + self.add_cookie("roundup_language", language) + elif self.cookie.has_key("roundup_language"): + language = self.cookie["roundup_language"].value + elif self.instance.config["WEB_USE_BROWSER_LANGUAGE"]: + hal = self.env['HTTP_ACCEPT_LANGUAGE'] + language = accept_language.parse(hal) + else: + language = "" + + self.language = language + if language: + self.setTranslator(TranslationService.get_translation( + language, + tracker_home=self.instance.config["TRACKER_HOME"])) + def determine_user(self): ''' Determine who the user is ''' Index: roundup/scripts/roundup_server.py =================================================================== RCS file: /cvsroot/roundup/roundup/roundup/scripts/roundup_server.py,v retrieving revision 1.79 diff -u -r1.79 roundup_server.py --- roundup/scripts/roundup_server.py 13 Apr 2005 06:12:12 -0000 1.79 +++ roundup/scripts/roundup_server.py 2 Dec 2005 12:00:41 -0000 @@ -230,6 +230,7 @@ env['HTTP_HOST'] = self.headers['host'] if os.environ.has_key('CGI_SHOW_TIMING'): env['CGI_SHOW_TIMING'] = os.environ['CGI_SHOW_TIMING'] + env['HTTP_ACCEPT_LANGUAGE'] = self.headers.getheader('accept-language') # do the roundup thing tracker = self.get_tracker(tracker_name)