def setup_locale(self): lang_codes = list(iterkeys(self.available_translations)) browser_langs = parse_accept_header( self.request.headers.get("Accept-Language", ""), LanguageAccept).values() automatic_lang = choose_language_code(browser_langs, lang_codes) if automatic_lang is None: automatic_lang = 'et'#lang_codes[0] self.automatic_translation = \ self.available_translations[automatic_lang] cookie_lang = self.get_cookie("language", None) if cookie_lang is not None: chosen_lang = \ choose_language_code([cookie_lang, automatic_lang], lang_codes) if chosen_lang == cookie_lang: self.cookie_translation = \ self.available_translations[cookie_lang] else: chosen_lang = automatic_lang self.translation = self.available_translations[chosen_lang] self._ = self.translation.gettext self.n_ = self.translation.ngettext self.set_header("Content-Language", chosen_lang)
def setup_locale(self): lang_codes = list(iterkeys(self.available_translations)) browser_langs = parse_accept_header( self.request.headers.get("Accept-Language", ""), LanguageAccept).values() automatic_lang = choose_language_code(browser_langs, lang_codes) if automatic_lang is None: automatic_lang = lang_codes[0] self.automatic_translation = \ self.available_translations[automatic_lang] cookie_lang = self.get_cookie("language", None) if cookie_lang is not None: chosen_lang = \ choose_language_code([cookie_lang, automatic_lang], lang_codes) if chosen_lang == cookie_lang: self.cookie_translation = \ self.available_translations[cookie_lang] else: chosen_lang = automatic_lang self.translation = self.available_translations[chosen_lang] self._ = self.translation.gettext self.n_ = self.translation.ngettext self.set_header("Content-Language", chosen_lang)
def test_invalid_locale(self): self.assertEqual( choose_language_code(["it", "froobar", "fr-FR"], ["fr"]), "fr") self.assertEqual( choose_language_code(["it", "fr-FR"], ["de", "froobar", "fr"]), "fr")
def test_no_match(self): self.assertEqual( choose_language_code(["fr", "en"], ["it", "de"]), None) self.assertEqual(choose_language_code(["fr", "en"], []), None) self.assertEqual(choose_language_code([], ["it", "de"]), None)
def test_prefix_match(self): self.assertEqual( choose_language_code(["it", "fr"], ["fr-FR", "en-US"]), "fr-FR") self.assertEqual( choose_language_code(["fr-FR", "en-US"], ["fr", "en"]), "fr")
def test_exact_match(self): self.assertEqual( choose_language_code(["it-IT", "fr-FR"], ["fr-FR", "en-US"]), "fr-FR")
def test_no_match(self): self.assertEqual(choose_language_code(["fr", "en"], ["it", "de"]), None) self.assertEqual(choose_language_code(["fr", "en"], []), None) self.assertEqual(choose_language_code([], ["it", "de"]), None)