o
    {,h"                     @   st  d 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 g 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e
eeZe
eeZdBddZdd ZdBddZdBddZdd  Zd!d" ZG d#d$ d$eZ d%d& Z!d'd( Z"d)d* Z#d+d, Z$d-d. Z%dCd0d1Z&d2d3 Z'd/d4d5d6Z(d7d8 Z)d9d: Z*d;d< Z+ed=Z,d>d? Z-d@dA Z.dS )Dz
Internationalization support.
    )ContextDecorator)ROUND_UPDecimal)autoreload_startedfile_changed)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ngettextngettext_lazypgettextpgettext_lazy	npgettextnpgettext_lazyc                   @   s   e Zd ZdS )TranslatorCommentWarningN)__name__
__module____qualname__ r"   r"   W/var/www/html/rh/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'   r(   r   connectr   r*   setattrgetattr)self	real_namer%   transr'   r(   r"   r"   r#   __getattr__?   s   
zTrans.__getattr__N)r   r    r!   __doc__r5   r"   r"   r"   r#   r$   2   s    r$   c                 C   
   t | S N)_transr   messager"   r"   r#   r   [      
r   c                 C   r7   r8   )r9   r   r:   r"   r"   r#   r   _   r<   r   c                 C   s   t | ||S r8   )r9   r   singularpluralnumberr"   r"   r#   r   c   s   r   c                 C      t | |S r8   )r9   r   )contextr;   r"   r"   r#   r   g      r   c                 C   s   t | |||S r8   )r9   r   rB   r>   r?   r@   r"   r"   r#   r   k      r   Nc                    s~   t trd< tdi }|S  G fddd t fdd di }fdd|_|S )Nr@   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 )Nr>   )boolr2   kwargsr"   r#   __bool__{   rC   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)r2   valuesr@   r"   r#   _get_number_value~   s   
z8lazy_number.<locals>.NumberAwareString._get_number_valuec                    s   |d<  di S )Nr@   r"   r"   )r2   number_value)funcrI   r"   r#   
_translate   s   z1lazy_number.<locals>.NumberAwareString._translatec                    s0   |r	 r	|  |n|d }| |j|i |S )Nr   )rN   rQ   format)r2   argsrI   rO   rM   r"   r#   rR      s   z-lazy_number.<locals>.NumberAwareString.formatc                    sL   t |tr r| |}n|}| |}z||; }W |S  ty%   Y |S w r8   )
isinstancedictrN   rQ   	TypeError)r2   rhsrO   
translatedrM   r"   r#   __mod__   s   

z.lazy_number.<locals>.NumberAwareString.__mod__N)r   r    r!   rJ   rN   rQ   rR   rY   r"   )rP   rI   r@   r"   r#   NumberAwareStringz   s    
rZ   c                     s     S r8   r"   rH   )rZ   r"   r#   <lambda>   s    zlazy_number.<locals>.<lambda>c                      s   t  ffS r8   )_lazy_number_unpickler"   )rP   r@   original_kwargsresultclassr"   r#   r[      s   
r"   )rT   intr   copy
__reduce__)rP   r^   r@   rI   proxyr"   )rZ   rP   rI   r@   r]   r^   r#   lazy_numbers   s   
.%rc   c                 C   s   t | |fd|i|S )Nr@   )rc   )rP   r^   r@   rI   r"   r"   r#   r\      s   r\   c                 C   s   t tt| ||dS )Nr=   )rc   r   strr=   r"   r"   r#   r      s   r   c                 C   s   t tt| |||dS )NrD   )rc   r   rd   rD   r"   r"   r#   r      s   r   c                 C   r7   r8   )r9   r	   )languager"   r"   r#   r	      r<   r	   c                   C      t  S r8   )r9   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 r8   )re   r
   )r2   re   r
   r"   r"   r#   __init__   s   
zoverride.__init__c                 C   s*   t  | _| jd urt| j d S t  d S r8   )r   old_languagere   r	   r   rG   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 r8   )ri   r   r
   r	   )r2   exc_type	exc_value	tracebackr"   r"   r#   __exit__   s
   


zoverride.__exit__NF)r   r    r!   rh   rj   rn   r"   r"   r"   r#   r      s    
r   c                   C   rf   r8   )r9   r   r"   r"   r"   r#   r      rg   r   c                   C   rf   r8   )r9   r   r"   r"   r"   r#   r      rg   r   c                 C   r7   r8   )r9   r   )	lang_coder"   r"   r#   r      r<   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   s|   |   d\}}}|s| dd   | dd  S |d\}}}t|dkr,| n| }|r8|d| 7 }|d | S )z8Turn a language name (en-us) into a locale name (en_US).rr   N      rq   )ru   	partitionlentitleupper)re   langrq   countrytailr"   r"   r#   r      s   r   Fc                 C   rA   r8   )r9   r   )request
check_pathr"   r"   r#   r      rC   r   c                 C   r7   r8   )r9   get_language_from_path)pathr"   r"   r#   r      r<   r   )strictc                C   rA   r8   )r9   get_supported_language_variant)rp   r   r"   r"   r#   r      rC   r   c                 K   s   ddl m} || fi |S )Nrs   )r   )templater   )srcrI   r   r"   r"   r#   r     s   r   c                   C   rf   r8   )r9   r   r"   r"   r"   r#   r   	  rg   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namerr   zUnknown language code %s.z Unknown language code %s and %s.name_translated)django.conf.localer   r   rK   splitr   )rp   r   	lang_infoinfogeneric_lang_coder"   r"   r#   r     s.   
r   z\s*\n\s*c                 C   s   t d|  S )N )trim_whitespace_resubstrip)sr"   r"   r#   trim_whitespace)  rE   r   c                 C   s"   t t| d jtdtdd S )Nrs   0)rounding)r_   r   quantizer   )valuer"   r"   r#   round_away_from_one-  s   "r   r8   ro   )/r6   
contextlibr   decimalr   r   django.utils.autoreloadr   r   django.utils.functionalr   django.utils.regex_helperr   __all__SyntaxWarningr   r$   r9   r   r   r   r   r   rd   r   r   rc   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>   sN    #


4

	
