
    h                         d Z ddlmZ ddlmZ ddlmZ ddlm	Z
 dZ eej                        Z ee      Zej                  e       d Zd Zd	 ZddZddZddZd Zd Zy
)z
Utils for translations
    )settings)	LANGUAGESget_language)gettext_lazy)normalize_language_codeis_supported_django_languageget_language_titleget_language_settingsget_active_language_choicesis_multilingual_projectc                 H    | y| j                         j                  dd      S )z>
    Undo the differences between language code notations
    N_-)lowerreplace)codes    A/home/dcms/DCMS/lib/python3.12/site-packages/parler/utils/i18n.pyr   r      s%     |zz|##C--    c                 N    | j                  d      d   }| t        v xs |t        v S )z6
    Return whether a language code is supported.
    r   r   )splitLANGUAGES_DICT)language_codelanguage_code2s     r   r	   r	   $   s.     #((-a0NN*Nn.NNr   c                    ddl m} | st        d      |j                  rt        }nt
        }	 t        ||          S # t        $ r: | j                  d      d   } |j                  | d      }|t        |      cY S | cY S w xY w)z{
    Return the verbose_name for a language code.

    Fallback to language_code if language is not found in settings.
    r   appsettingsz-Missing language_code in get_language_title()r   N)
parlerr   
ValueError"PARLER_SHOW_EXCLUDED_LANGUAGE_TABSALL_LANGUAGES_DICTr   r   KeyErrorr   get)r   r   	languageslanguage_titles       r   r
   r
   ,   s     # HII55 '	"	
!=)** !%++C0
 #}d;%^$$  !s   < <A?:A?>A?Nc                 F    ddl m} |j                  j                  | |      S )z;
    Return the language settings for the current site
    r   r   )r   r   PARLER_LANGUAGESr   )r   site_idr   s      r   r   r   L   s      #''44]GLLr   c                 D    ddl m} |j                  j                  |       S )z
    Find out which translations should be visible in the site.
    It returns a tuple with either a single choice (the current language),
    or a tuple with the current language + fallback language.
    r   r   )r   r   r'   get_active_choices)r   r   s     r   r   r   X   s     #''::=IIr   c                 l    ddl m} | t        t        dd      } |j                  xs | |j
                  v S )zT
    Whether the current Django project is configured for multilingual support.
    r   r   NSITE_ID)r   r   getattrr   r    r'   )r(   r   s     r   r   r   c   s8     #(It466a'[EaEa:ar   c                      t               yy)Nz}language_code can't be null, use translation.activate(..) when accessing translated models outside the request/response loop.zlanguage_code can't be nullr    r   r   get_null_language_errorr0   p   s    ~ O,r   c                  Z    ddl m}  t               }|| j                  r| j                  S |S )z
    Wrapper around Django's `get_language` utility.
    For Django >= 1.8, `get_language` returns None in case no translation is activate.
    Here we patch this behavior e.g. for back-end functionality requiring access to translated fields
    r   r   )r   r   dj_get_languagePARLER_DEFAULT_ACTIVATEPARLER_DEFAULT_LANGUAGE_CODE)r   languages     r   r   r   z   s.     # HK??777r   )N)__doc__django.confr   django.conf.global_settingsr   ALL_LANGUAGESdjango.utils.translationr   r2   r   r   __all__dictr   r!   updater   r	   r
   r   r   r   r0   r/   r   r   <module>r>      sx    ! B D 6 h(()-(    . ).O!@	MJ
-r   