def test_get_all_supported_languages(): """ Test the util.get_all_supported_languages function. """ temp_dir = tempfile.mkdtemp() # write a fake CSV file transstats = os.path.join(temp_dir, 'transstats.csv') ts_file = file(transstats, 'w') ts_file.write(('es_AR,564,343,27,60\n' 'en_US,564,0,1,0\n' 'hr,564,447,17,79\n' 'no,564,400,14,70')) ts_file.close() expected = set(['es_AR', 'en_US', 'hr', 'no']) results = util.get_all_supported_languages(transstats) assert results == expected # make sure it cached the old results assert util.CACHED_LANGUAGES_SUPPORTED[transstats] == expected # make sure the cache is actually used bs_results = set(["the internet", "near space altitude"]) util.CACHED_LANGUAGES_SUPPORTED[transstats] = bs_results results = util.get_all_supported_languages(transstats) assert results == bs_results
def get_target_lang_from_request(request, default_locale='en'): request_form = request.GET or request.POST if request_form.has_key('lang') and request_form['lang'] != '': return locale_to_lower_upper(request_form['lang']) try: if request.matchdict.has_key('target_lang'): target_lang = request.matchdict['target_lang'] else: header_value = request.accept_language.header_value if ACCEPT_LANG_CACHE.has_key(header_value): return ACCEPT_LANG_CACHE[header_value] # clean the header into something we can use accept_lang = [] for part in header_value.split(","): try: locale, quality = map(str.strip, part.split(";")) quality = float(quality) except ValueError: locale = part.strip() quality = 1 accept_lang.append((locale_to_lower_upper(locale), quality)) available = list(get_all_supported_languages()) def run_matches(accept_lang, available): best = -1 target_lang = None for locale, quality in accept_lang: if quality > best and available.count(locale): best = quality target_lang = locale return target_lang # search for exact matches target_lang = run_matches(accept_lang, available) if not target_lang: # search for near matches reduced_accept = [(v.split("_")[0], q) for v, q in accept_lang] reduced_available = [i.split("_")[0] for i in available] target_lang = run_matches(reduced_accept, reduced_available) except AttributeError: # header was not defined header_value = default_locale target_lang = None if not target_lang: # screw it target_lang = default_locale try: ACCEPT_LANG_CACHE[header_value] = target_lang except NameError, e: # We didn't set the header_value, so don't try to use it as a key pass
def get_target_lang_from_request(request, default_locale='en'): request_form = request.GET or request.POST if request_form.has_key('lang') and request_form['lang'] != '': return locale_to_lower_upper(request_form['lang']) try: if request.matchdict.has_key('target_lang'): target_lang = request.matchdict['target_lang'] else: header_value = request.accept_language.header_value if ACCEPT_LANG_CACHE.has_key(header_value): return ACCEPT_LANG_CACHE[header_value] # clean the header into something we can use accept_lang = [] for part in header_value.split(","): try: locale, quality = map(str.strip, part.split(";")) quality = float(quality) except ValueError: locale = part.strip() quality = 1 accept_lang.append((locale_to_lower_upper(locale), quality)) available = list(get_all_supported_languages()) def run_matches(accept_lang, available): best = -1 target_lang = None for locale, quality in accept_lang: if quality > best and available.count(locale): best = quality target_lang = locale return target_lang # search for exact matches target_lang = run_matches(accept_lang, available) if not target_lang: # search for near matches reduced_accept = [(v.split("_")[0], q) for v,q in accept_lang] reduced_available = [i.split("_")[0] for i in available] target_lang = run_matches(reduced_accept, reduced_available) except AttributeError: # header was not defined header_value = default_locale target_lang = None if not target_lang: # screw it target_lang = default_locale try: ACCEPT_LANG_CACHE[header_value] = target_lang except NameError, e: # We didn't set the header_value, so don't try to use it as a key pass
def test_get_all_supported_languages(): """ Test the util.get_all_supported_languages function. """ temp_dir = tempfile.mkdtemp() # write a fake CSV file transstats = os.path.join(temp_dir, "transstats.csv") ts_file = file(transstats, "w") ts_file.write(("es_AR,564,343,27,60\n" "en_US,564,0,1,0\n" "hr,564,447,17,79\n" "no,564,400,14,70")) ts_file.close() expected = set(["es_AR", "en_US", "hr", "no"]) results = util.get_all_supported_languages(transstats) assert results == expected # make sure it cached the old results assert util.CACHED_LANGUAGES_SUPPORTED[transstats] == expected # make sure the cache is actually used bs_results = set(["the internet", "near space altitude"]) util.CACHED_LANGUAGES_SUPPORTED[transstats] = bs_results results = util.get_all_supported_languages(transstats) assert results == bs_results