o
    ^"<fz*                     @   s  d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZ g d	Zd
ZG dd deZG dd dZe Z[dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZeeeZeeeZ dd  Z!dNd!d"Z"d#d$ Z#dNd%d&Z$dNd'd(Z%dNd)d*Z&d+d, Z'd-d. Z(G d/d0 d0eZ)d1d2 Z*d3d4 Z+d5d6 Z,d7d8 Z-d9d: Z.dOd<d=Z/d>d? Z0d;d@dAdBZ1dCdD Z2dEdF Z3dGdH Z4edIZ5dJdK Z6dLdM Z7dS )Pz
Internationalization support.
    N)ContextDecorator)ROUND_UPDecimal)autoreload_startedfile_changed)RemovedInDjango40Warning)lazy)_lazy_re_compile)activate
deactivateoverridedeactivate_allget_languageget_language_from_requestget_language_infoget_language_bidicheck_for_languageto_language	to_locale
templatizegettextgettext_lazygettext_noopugettextugettext_lazyugettext_noopngettextngettext_lazy	ungettextungettext_lazypgettextpgettext_lazy	npgettextnpgettext_lazyLANGUAGE_SESSION_KEY	_languagec                   @   s   e Zd ZdS )TranslatorCommentWarningN)__name__
__module____qualname__ r*   r*   X/var/www/html/kck/venv/lib/python3.10/site-packages/django/utils/translation/__init__.pyr&      s    r&   c                   @   s   e Zd ZdZdd ZdS )Transa  
    The purpose of this class is to store the actual translation function upon
    receiving the first call to that function. After this is done, changes to
    USE_I18N will have no effect to which function is served upon request. If
    your tests rely on changing USE_I18N, you can delete all the functions
    from _trans.__dict__.

    Note that storing the function with setattr will have a noticeable
    performance effect, as access to the function goes the normal path,
    instead of using __getattr__.
    c                 C   st   ddl m} |jr&ddlm} ddlm}m} tj	|dd t
j	|dd nddlm} t| |t|| t||S )Nr   )settings)
trans_real)translation_file_changedwatch_for_translation_changesr/   )dispatch_uid)
trans_null)django.confr-   USE_I18Ndjango.utils.translationr.   !django.utils.translation.reloaderr/   r0   r   connectr   r2   setattrgetattr)self	real_namer-   transr/   r0   r*   r*   r+   __getattr__7   s   
zTrans.__getattr__N)r'   r(   r)   __doc__r=   r*   r*   r*   r+   r,   *   s    r,   c                 C   
   t | S N)_transr   messager*   r*   r+   r   L      
r   c                 C      t jdtdd t| S )zx
    A legacy compatibility wrapper for Unicode handling on Python 2.
    Alias of gettext_noop() since Django 2.0.
    zkdjango.utils.translation.ugettext_noop() is deprecated in favor of django.utils.translation.gettext_noop().   
stacklevel)warningswarnr   r   rB   r*   r*   r+   r   P   
   r   c                 C   r?   r@   )rA   r   rB   r*   r*   r+   r   ]   rD   r   c                 C   rE   )zs
    A legacy compatibility wrapper for Unicode handling on Python 2.
    Alias of gettext() since Django 2.0.
    zadjango.utils.translation.ugettext() is deprecated in favor of django.utils.translation.gettext().rF   rG   )rI   rJ   r   r   rB   r*   r*   r+   r   a   rK   r   c                 C   s   t | ||S r@   )rA   r   singularpluralnumberr*   r*   r+   r   n   s   r   c                 C      t jdtdd t| ||S )zt
    A legacy compatibility wrapper for Unicode handling on Python 2.
    Alias of ngettext() since Django 2.0.
    zcdjango.utils.translation.ungettext() is deprecated in favor of django.utils.translation.ngettext().rF   rG   )rI   rJ   r   r   rL   r*   r*   r+   r   r   
   r   c                 C      t | |S r@   )rA   r    )contextrC   r*   r*   r+   r          r    c                 C   s   t | |||S r@   )rA   r"   rS   rM   rN   rO   r*   r*   r+   r"         r"   c                 C   rE   )z
    A legacy compatibility wrapper for Unicode handling on Python 2. Has been
    Alias of gettext_lazy since Django 2.0.
    zkdjango.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy().rF   rG   )rI   rJ   r   r   rB   r*   r*   r+   r      rK   r   c                    s~   t trd< tdi }|S  G fddd t fdd di }fdd|_|S )NrO   c                       sJ   e Zd ZfddZfddZ fddZfddZfd	d
ZdS )z&lazy_number.<locals>.NumberAwareStringc                    s   t  d S )NrM   )boolr:   kwargsr*   r+   __bool__   rT   z/lazy_number.<locals>.NumberAwareString.__bool__c                    s&   z|  W S  t y   t d  w )Nz|Your dictionary lacks key '%s'. Please provide it, because it is required to determine whether string is singular or plural.)KeyError)r:   valuesrO   r*   r+   _get_number_value   s   
z8lazy_number.<locals>.NumberAwareString._get_number_valuec                    s   |d<  di S )NrO   r*   r*   )r:   number_value)funcrZ   r*   r+   
_translate   s   z1lazy_number.<locals>.NumberAwareString._translatec                    s0   |r	 r	|  |n|d }| |j|i |S )Nr   )r_   rb   format)r:   argsrZ   r`   r^   r*   r+   rc      s   z-lazy_number.<locals>.NumberAwareString.formatc                    sL   t |tr r| |}n|}| |}z|| }W |S  ty%   Y |S w r@   )
isinstancedictr_   rb   	TypeError)r:   rhsr`   
translatedr^   r*   r+   __mod__   s   

z.lazy_number.<locals>.NumberAwareString.__mod__N)r'   r(   r)   r[   r_   rb   rc   rj   r*   )ra   rZ   rO   r*   r+   NumberAwareString   s    
rk   c                     s     S r@   r*   rY   )rk   r*   r+   <lambda>   s    zlazy_number.<locals>.<lambda>c                      s   t  ffS r@   )_lazy_number_unpickler*   )ra   rO   original_kwargsresultclassr*   r+   rl      s    r*   )re   intr   copy
__reduce__)ra   ro   rO   rZ   proxyr*   )rk   ra   rZ   rO   rn   ro   r+   lazy_number   s   
)#rt   c                 C   s   t | |fd|i|S )NrO   )rt   )ra   ro   rO   rZ   r*   r*   r+   rm      s   rm   c                 C   s   t tt| ||dS )NrL   )rt   r   strrL   r*   r*   r+   r      s   r   c                 C   rP   )z}
    A legacy compatibility wrapper for Unicode handling on Python 2.
    An alias of ungettext_lazy() since Django 2.0.
    zmdjango.utils.translation.ungettext_lazy() is deprecated in favor of django.utils.translation.ngettext_lazy().rF   rG   )rI   rJ   r   r   rL   r*   r*   r+   r      rQ   r   c                 C   s   t tt| |||dS )NrU   )rt   r"   ru   rU   r*   r*   r+   r#      s   r#   c                 C   r?   r@   )rA   r
   )languager*   r*   r+   r
      rD   r
   c                   C      t  S r@   )rA   r   r*   r*   r*   r+   r         r   c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
r   Fc                 C   s   || _ || _d S r@   )rv   r   )r:   rv   r   r*   r*   r+   __init__   s   
zoverride.__init__c                 C   s*   t  | _| jd urt| j d S t  d S r@   )r   old_languagerv   r
   r   rX   r*   r*   r+   	__enter__   s   

zoverride.__enter__c                 C   s2   | j d u r
t  d S | jrt  d S t| j  d S r@   )rz   r   r   r
   )r:   exc_type	exc_value	tracebackr*   r*   r+   __exit__   s
   


zoverride.__exit__NF)r'   r(   r)   ry   r{   r   r*   r*   r*   r+   r      s    
r   c                   C   rw   r@   )rA   r   r*   r*   r*   r+   r      rx   r   c                   C   rw   r@   )rA   r   r*   r*   r*   r+   r     rx   r   c                 C   r?   r@   )rA   r   )	lang_coder*   r*   r+   r     rD   r   c                 C   sB   |  d}|dkr| d|  d | |d d   S |  S )z8Turn a locale name (en_US) into a language name (en-us)._r   N-   )findlower)localepr*   r*   r+   r   	  s   
(r   c                 C   sd   |   d\} }}|s| S |d\}}}t|dkr | n| }|r,|d| 7 }| d | S )z8Turn a language name (en-us) into a locale name (en_US).r   rF   r   )r   	partitionlentitleupper)rv   r   countrytailr*   r*   r+   r     s   r   Fc                 C   rR   r@   )rA   r   )request
check_pathr*   r*   r+   r   "  rT   r   c                 C   r?   r@   )rA   get_language_from_path)pathr*   r*   r+   r   &  rD   r   )strictc                C   rR   r@   )rA   get_supported_language_variant)r   r   r*   r*   r+   r   *  rT   r   c                 K   s   ddl m} || fi |S )Nr   )r   )templater   )srcrZ   r   r*   r*   r+   r   .  s   r   c                   C   rw   r@   )rA   r   r*   r*   r*   r+   r   3  rx   r   c                 C   s   ddl m} z||  }d|v rd|vrt|d d }n|}W n0 tyO   d| vr0td|  | dd }z|| }W n tyL   td| |f w Y nw |rZt|d |d< |S )	Nr   )	LANG_INFOfallbacknamer   zUnknown language code %s.z Unknown language code %s and %s.name_translated)django.conf.localer   r   r\   splitr   )r   r   	lang_infoinfogeneric_lang_coder*   r*   r+   r   7  s*   	r   z\s*\n\s*c                 C   s   t d|  S )N )trim_whitespace_resubstrip)sr*   r*   r+   trim_whitespaceP  rV   r   c                 C   s"   t t| d jtdtdd S )Nr   0)rounding)rp   r   quantizer   )valuer*   r*   r+   round_away_from_oneT  s   "r   r@   r   )8r>   rI   
contextlibr   decimalr   r   django.utils.autoreloadr   r   django.utils.deprecationr   django.utils.functionalr   django.utils.regex_helperr	   __all__r$   SyntaxWarningr&   r,   rA   r   r   r   r   r   r   r    r"   ru   r   r!   r   rt   rm   r   r   r#   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r+   <module>   s^    


/


	
