def test_lang_list_long_ordering(self): """messages - preserving language order""" lang_list_long = messages.language_list_long() # Preliminary test: same number of languages in both lists self.assertEqual(len(lang_list_long), len(cfg['CFG_SITE_LANGS'])) for lang, cfg_lang in zip(lang_list_long, cfg['CFG_SITE_LANGS']): self.assertEqual(lang[0], cfg_lang)
def tmpl_language_selection_box(self, req, language=CFG_SITE_LANG): """Take URLARGS and LANGUAGE and return textual language selection box for the given page. Parameters: - 'req' - The mod_python request object - 'language' *string* - The selected language """ # load the right message language _ = gettext_set_language(language) # Work on a copy in order not to bork the arguments of the caller argd = {} if req and req.args: argd.update(cgi.parse_qs(req.args)) parts = [] for (lang, lang_namelong) in language_list_long(): if lang == language: parts.append('<span class="langinfo">%s</span>' % lang_namelong) else: # Update the 'ln' argument in the initial request argd['ln'] = lang if req and req.uri: args = urllib.quote( req.uri, '/:?') + make_canonical_urlargd(argd, {}) else: args = "" parts.append( create_html_link(args, {}, lang_namelong, {'class': "langinfo"})) if len(parts) > 1: return _("This site is also available in the following languages:") + \ "<br />" + ' '.join(parts) else: ## There is only one (or zero?) languages configured, ## so there so need to display language alternatives. return ""
def tmpl_language_selection_box(self, req, language=CFG_SITE_LANG): """Take URLARGS and LANGUAGE and return textual language selection box for the given page. Parameters: - 'req' - The mod_python request object - 'language' *string* - The selected language """ # load the right message language _ = gettext_set_language(language) # Work on a copy in order not to bork the arguments of the caller argd = {} if req and req.args: argd.update(cgi.parse_qs(req.args)) parts = [] for (lang, lang_namelong) in language_list_long(): if lang == language: parts.append('<span class="langinfo">%s</span>' % lang_namelong) else: # Update the 'ln' argument in the initial request argd['ln'] = lang if req and req.uri: args = urllib.quote(req.uri, '/:?') + make_canonical_urlargd(argd, {}) else: args = "" parts.append(create_html_link(args, {}, lang_namelong, {'class': "langinfo"})) if len(parts) > 1: return _("This site is also available in the following languages:") + \ "<br />" + ' '.join(parts) else: ## There is only one (or zero?) languages configured, ## so there so need to display language alternatives. return ""
# HTML tags should occur. # Appears in some field values. # Regular expression for finding <lang>...</lang> tag in format templates pattern_lang = re.compile( r''' <lang #<lang tag (no matter case) \s* #any number of white spaces > #closing <lang> start tag (?P<langs>.*?) #anything but the next group (greedy) (</lang\s*>) #end tag ''', re.IGNORECASE | re.DOTALL | re.VERBOSE) # Builds regular expression for finding each known language in <lang> tags ln_pattern_text = r"<(" for lang in language_list_long(enabled_langs_only=False): ln_pattern_text += lang[0] + r"|" ln_pattern_text = ln_pattern_text.rstrip(r"|") ln_pattern_text += r")>(.*?)</\1>" ln_pattern = re.compile(ln_pattern_text, re.IGNORECASE | re.DOTALL) # Regular expression for finding text to be translated TRANSLATION_PATTERN = re.compile(r'_\((?P<word>.*?)\)_', re.IGNORECASE | re.DOTALL | re.VERBOSE) # Regular expression for finding <name> tag in format templates pattern_format_template_name = re.compile( r''' <name #<name tag (no matter case)
# treated as HTML (and therefore no escaping of # HTML tags should occur. # Appears in some field values. # Regular expression for finding <lang>...</lang> tag in format templates pattern_lang = re.compile(r''' <lang #<lang tag (no matter case) \s* #any number of white spaces > #closing <lang> start tag (?P<langs>.*?) #anything but the next group (greedy) (</lang\s*>) #end tag ''', re.IGNORECASE | re.DOTALL | re.VERBOSE) # Builds regular expression for finding each known language in <lang> tags ln_pattern_text = r"<(" for lang in language_list_long(enabled_langs_only=False): ln_pattern_text += lang[0] + r"|" ln_pattern_text = ln_pattern_text.rstrip(r"|") ln_pattern_text += r")>(.*?)</\1>" ln_pattern = re.compile(ln_pattern_text, re.IGNORECASE | re.DOTALL) # Regular expression for finding text to be translated TRANSLATION_PATTERN = re.compile(r'_\((?P<word>.*?)\)_', re.IGNORECASE | re.DOTALL | re.VERBOSE) # Regular expression for finding <name> tag in format templates pattern_format_template_name = re.compile(r''' <name #<name tag (no matter case) \s* #any number of white spaces