# parler.utils.conf module

The configuration wrappers that are used for PARLER_LANGUAGES.

class parler.utils.conf.LanguagesSetting

  Bases: `dict`

  This is the actual object type of the PARLER_LANGUAGES setting. Besides the regular `dict` behavior, it also adds some additional methods.

  get_active_choices(language_code=None, site_id=None)

    Find out which translations should be visible in the site. It returns a list with either a single choice (the current language), or a list with the current language + fallback language.

  get_default_language()

    Return the default language.

  get_fallback_language(language_code=None, site_id=None)

    Find out what the fallback language is for a given language choice.

    Deprecated since version 1.5: Use `get_fallback_languages()` instead.

  get_fallback_languages(language_code=None, site_id=None)

    Find out what the fallback language is for a given language choice.

  get_first_language(site_id=None)

    Return the first language for the current site. This can be used for user interfaces, where the languages are displayed in tabs.

  get_language(language_code, site_id=None)

    Return the language settings for the current site

    This function can be used with other settings variables to support modules which create their own variation of the `PARLER_LANGUAGES` setting. For an example, see `add_default_language_settings()`.

parler.utils.conf.add_default_language_settings(languages_list, var_name='PARLER_LANGUAGES', **extra_defaults)

  Apply extra defaults to the language settings. This function can also be used by other packages to create their own variation of `PARLER_LANGUAGES` with extra fields. For example:

      from django.conf import settings
      from parler import appsettings as parler_appsettings

      # Create local names, which are based on the global parler settings
      MYAPP_DEFAULT_LANGUAGE_CODE = getattr(settings, 'MYAPP_DEFAULT_LANGUAGE_CODE', parler_appsettings.PARLER_DEFAULT_LANGUAGE_CODE)
      MYAPP_LANGUAGES = getattr(settings, 'MYAPP_LANGUAGES', parler_appsettings.PARLER_LANGUAGES)

      # Apply the defaults to the languages
      MYAPP_LANGUAGES = parler_appsettings.add_default_language_settings(MYAPP_LANGUAGES, 'MYAPP_LANGUAGES',
          code=MYAPP_DEFAULT_LANGUAGE_CODE,
          fallback=MYAPP_DEFAULT_LANGUAGE_CODE,
          hide_untranslated=False
      )

  The returned object will be an `LanguagesSetting` object, which adds additional methods to the `dict` object.

  Parameters:

    - languages_list – The settings, in PARLER_LANGUAGES format.

    - var_name – The name of your variable, for debugging output.

    - extra_defaults – Any defaults to override in the `languages_list['default']` section, e.g. `code`, `fallback`, `hide_untranslated`.

  Returns:

    The updated `languages_list` with all defaults applied to all sections.

  Return type:

    LanguagesSetting

parler.utils.conf.get_parler_languages_from_django_cms(cms_languages=None)

  Converts django CMS’ setting CMS_LANGUAGES into PARLER_LANGUAGES. Since CMS_LANGUAGES is a strict superset of PARLER_LANGUAGES, we do a bit of cleansing to remove irrelevant items.