def _test_get_console_locale_with_babel(self): locales = get_available_locales() en_US = Locale.parse('en_US') de = Locale.parse('de') def unset_locale_envs(): for name in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'): if name in os.environ: del os.environ[name] if 'de' in locales: unset_locale_envs() self.assertIsNone(get_console_locale(None, None)) self.assertEqual(de, get_console_locale(None, 'de_DE.UTF8')) self.env.config.set('trac', 'default_language', 'de') self.assertEqual(de, get_console_locale(self.env, None)) self.assertEqual(de, get_console_locale(self.env, 'C')) self.env.config.set('trac', 'default_language', 'en_US') self.assertEqual(en_US, get_console_locale(self.env, None)) self.assertEqual(en_US, get_console_locale(self.env, 'C')) self.assertEqual(de, get_console_locale(self.env, 'de_DE.UTF8')) self.env.config.set('trac', 'default_language', 'de') os.environ['LANG'] = 'POSIX' # unavailable locale in Trac self.assertIsNone(get_console_locale()) self.assertEqual(de, get_console_locale(self.env)) os.environ['LANG'] = '****' # invalid locale self.assertIsNone(get_console_locale()) self.assertEqual(de, get_console_locale(self.env)) os.environ['LANG'] = 'en_US.utf-8' self.assertEqual(en_US, get_console_locale()) self.assertEqual(en_US, get_console_locale(self.env)) os.environ['LC_MESSAGES'] = 'de_DE.utf-8' self.assertEqual(de, get_console_locale()) self.assertEqual(de, get_console_locale(self.env)) os.environ['LC_ALL'] = 'en_US.utf-8' self.assertEqual(en_US, get_console_locale()) self.assertEqual(en_US, get_console_locale(self.env)) os.environ['LANGUAGE'] = 'de_DE:en_US:en' self.assertEqual(de, get_console_locale()) self.assertEqual(de, get_console_locale(self.env)) if not locales: # compiled catalog is missing unset_locale_envs() self.assertIsNone(get_console_locale(None, 'de_DE.UTF8')) self.env.config.set('trac', 'default_language', 'de') self.assertIsNone(get_console_locale(self.env, None)) self.assertIsNone(get_console_locale(self.env, 'C')) self.assertIsNone(get_console_locale(self.env, 'de_DE.UTF8')) os.environ['LANG'] = 'en_US.utf-8' os.environ['LC_MESSAGES'] = 'de_DE.utf-8' os.environ['LC_ALL'] = 'en_US.utf-8' os.environ['LANGUAGE'] = 'de_DE:en_US' self.assertEqual(en_US, get_console_locale()) self.assertEqual(en_US, get_console_locale(self.env))
def render_preference_panel(self, req, panel): if req.method == 'POST': if Locale and \ req.args.get('language') != req.session.get('language'): # reactivate translations with new language setting # when changed del req.locale # for re-negotiating locale deactivate() make_activable(lambda: req.locale, self.env.path) _do_save(req, panel, self._form_fields) data = { 'timezones': all_timezones, 'timezone': get_timezone, 'localtz': localtz, 'has_babel': False, } if Locale: locale_ids = get_available_locales() locales = [Locale.parse(locale) for locale in locale_ids] # use locale identifiers from get_available_locales() instead # of str(locale) to prevent storing expanded locale identifier # to session, e.g. zh_Hans_CN and zh_Hant_TW, since Babel 1.0. # see #11258. languages = sorted((id_, locale.display_name) for id_, locale in zip(locale_ids, locales)) data['locales'] = locales data['languages'] = languages data['has_babel'] = True return 'prefs_localization.html', data
def render_preference_panel(self, req, panel): if req.method == 'POST': if 'restore' in req.args: self._do_load(req) else: self._do_save(req) req.redirect(req.href.prefs(panel or None)) data = { 'settings': {'session': req.session, 'session_id': req.session.sid}, 'timezones': all_timezones, 'timezone': get_timezone, 'localtz': localtz, 'has_babel': False } if Locale: locale_ids = get_available_locales() locales = [Locale.parse(locale) for locale in locale_ids] # use locale identifiers from get_available_locales() instead # of str(locale) to prevent storing expanded locale identifier # to session, e.g. zh_Hans_CN and zh_Hant_TW, since Babel 1.0. # see #11258. languages = sorted((id, locale.display_name) for id, locale in zip(locale_ids, locales)) data['locales'] = locales data['languages'] = languages data['has_babel'] = True return 'prefs_%s.html' % (panel or 'general'), data
def render_preference_panel(self, req, panel): if req.method == 'POST': if 'restore' in req.args: self._do_load(req) else: self._do_save(req) req.redirect(req.href.prefs(panel or None)) data = { 'settings': { 'session': req.session, 'session_id': req.session.sid }, 'timezones': all_timezones, 'timezone': get_timezone, 'localtz': localtz, 'has_babel': False } if Locale: locale_ids = get_available_locales() locales = [Locale.parse(locale) for locale in locale_ids] # use locale identifiers from get_available_locales() instead # of str(locale) to prevent storing expanded locale identifier # to session, e.g. zh_Hans_CN and zh_Hant_TW, since Babel 1.0. # see #11258. languages = sorted((id, locale.display_name) for id, locale in zip(locale_ids, locales)) data['locales'] = locales data['languages'] = languages data['has_babel'] = True return 'prefs_%s.html' % (panel or 'general'), data
def render_admin_panel(self, req, cat, page, path_info): valid_default_handlers = [ handler.__class__.__name__ for handler in self.request_handlers if is_valid_default_handler(handler) ] if Locale: locale_ids = get_available_locales() locales = [Locale.parse(locale) for locale in locale_ids] # don't use str(locale) to prevent storing expanded locale # identifier, see #11258 languages = sorted((id, locale.display_name) for id, locale in zip(locale_ids, locales)) else: locale_ids, locales, languages = [], [], [] if req.method == 'POST': for option in ('name', 'url', 'descr'): self.config.set('project', option, req.args.get(option)) default_handler = req.args.get('default_handler') self.config.set('trac', 'default_handler', default_handler) default_timezone = req.args.get('default_timezone') if default_timezone not in all_timezones: default_timezone = '' self.config.set('trac', 'default_timezone', default_timezone) default_language = req.args.get('default_language') if default_language not in locale_ids: default_language = '' self.config.set('trac', 'default_language', default_language) default_date_format = req.args.get('default_date_format') if default_date_format != 'iso8601': default_date_format = '' self.config.set('trac', 'default_date_format', default_date_format) _save_config(self.config, req, self.log) req.redirect(req.href.admin(cat, page)) default_handler = self.config.get('trac', 'default_handler') default_timezone = self.config.get('trac', 'default_timezone') default_language = self.config.get('trac', 'default_language') default_date_format = self.config.get('trac', 'default_date_format') data = { 'default_handler': default_handler, 'valid_default_handlers': sorted(valid_default_handlers), 'default_timezone': default_timezone, 'timezones': all_timezones, 'has_pytz': pytz is not None, 'default_language': default_language.replace('-', '_'), 'languages': languages, 'default_date_format': default_date_format, 'has_babel': Locale is not None, } Chrome(self.env).add_textarea_grips(req) return 'admin_basics.html', data
def render_admin_panel(self, req, cat, page, path_info): if Locale: locale_ids = get_available_locales() locales = [Locale.parse(locale) for locale in locale_ids] # don't use str(locale) to prevent storing expanded locale # identifier, see #11258 languages = sorted((id, locale.display_name) for id, locale in zip(locale_ids, locales)) else: locale_ids, locales, languages = [], [], [] if req.method == 'POST': for option in ('name', 'url', 'descr'): self.config.set('project', option, req.args.get(option)) default_timezone = req.args.get('default_timezone') if default_timezone not in all_timezones: default_timezone = '' self.config.set('trac', 'default_timezone', default_timezone) default_language = req.args.get('default_language') if default_language not in locale_ids: default_language = '' self.config.set('trac', 'default_language', default_language) default_date_format = req.args.get('default_date_format') if default_date_format != 'iso8601': default_date_format = '' self.config.set('trac', 'default_date_format', default_date_format) default_dateinfo_format = req.args.get('default_dateinfo_format') if default_dateinfo_format not in ('relative', 'absolute'): default_dateinfo_format = 'relative' self.config.set('trac', 'default_dateinfo_format', default_dateinfo_format) _save_config(self.config, req, self.log) req.redirect(req.href.admin(cat, page)) default_timezone = self.config.get('trac', 'default_timezone') default_language = self.config.get('trac', 'default_language') default_date_format = self.config.get('trac', 'default_date_format') default_dateinfo_format = self.config.get('trac', 'default_dateinfo_format') data = { 'default_timezone': default_timezone, 'timezones': all_timezones, 'has_pytz': pytz is not None, 'default_language': default_language.replace('-', '_'), 'languages': languages, 'default_date_format': default_date_format, 'default_dateinfo_format': default_dateinfo_format, 'has_babel': Locale is not None, } Chrome(self.env).add_textarea_grips(req) return 'admin_basics.html', data