# -*- coding: utf-8 -*- """ Python API for language and translation management. """ from collections import namedtuple from django.conf import settings from dark_lang.models import DarkLangConfig # Named tuples can be referenced using object-like variable # deferencing, making the use of tuples more readable by # eliminating the need to see the context of the tuple packing. Language = namedtuple('Language', 'code name') def released_languages(): """Retrieve the list of released languages. Constructs a list of Language tuples by intersecting the list of valid language tuples with the list of released language codes. Returns: list of Language: Languages in which full translations are available. Example: >>> print released_languages() [Language(code='en', name=u'English'), Language(code='fr', name=u'Français')] """ released_language_codes = DarkLangConfig.current().released_languages_list default_language_code = settings.LANGUAGE_CODE if default_language_code not in released_language_codes: released_language_codes.append(default_language_code) released_language_codes.sort() # Intersect the list of valid language tuples with the list # of release language codes released_languages = [ Language(tuple[0], tuple[1]) for tuple in settings.LANGUAGES if tuple[0] in released_language_codes ] return released_languages