
    k"g"                     v   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	e      Z G d
 d      Z e       Z[d Zd Zd Zd Zd Z e
ee      Z e
ee      Zd*dZd Zd*dZd*dZd Zd Z G d de      Z d Z!d Z"d Z#d Z$d Z%d+d Z&d! Z'dd"d#Z(d$ Z)d% Z*d& Z+ ed'      Z,d( Z-d) Z.y),z
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                       e Zd Zy)TranslatorCommentWarningN)__name__
__module____qualname__     Z/var/www/html/djangosite/lib/python3.12/site-packages/django/utils/translation/__init__.pyr    r    %   s    r%   r    c                       e Zd ZdZd Zy)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                     ddl m} |j                  r=ddlm} ddlm}m} t        j                  |d       t        j                  |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-   s         r&   __getattr__zTrans.__getattr__?   sh    (D
 &&-<V   (7Q Ei	!:;ui((r%   N)r!   r"   r#   __doc__r:   r$   r%   r&   r(   r(   2   s    
)r%   r(   c                 ,    t         j                  |       S N)_transr   messages    r&   r   r   [   s    w''r%   c                 ,    t         j                  |       S r=   )r>   r   r?   s    r&   r   r   _   s    >>'""r%   c                 0    t         j                  | ||      S r=   )r>   r   singularpluralnumbers      r&   r   r   c   s    ??8VV44r%   c                 .    t         j                  | |      S r=   )r>   r   )contextr@   s     r&   r   r   g   s    ??7G,,r%   c                 2    t         j                  | |||      S r=   )r>   r   rH   rD   rE   rF   s       r&   r   r   k   s    GXvv>>r%   Nc                      t        t              rd<    t               di }|S j                          G  fdd       t        fd      di } fd|_        |S )NrF   c                   B    e Zd ZfdZfdZ fdZfdZfdZy)&lazy_number.<locals>.NumberAwareStringc                      t        d         S )NrD   )bool)r7   kwargss    r&   __bool__z/lazy_number.<locals>.NumberAwareString.__bool__{   s    F:.//r%   c                 F    	 |   S # t         $ r t        dz        w xY w)Nz|Your dictionary lacks key '%s'. Please provide it, because it is required to determine whether string is singular or plural.)KeyError)r7   valuesrF   s     r&   _get_number_valuez8lazy_number.<locals>.NumberAwareString._get_number_value~   s<    !&>) "8:@A s     c                     |d<    di S )NrF   r$   r$   )r7   number_valuefuncrP   s     r&   
_translatez1lazy_number.<locals>.NumberAwareString._translate   s    #/x ~f~%r%   c                 z    |rr| j                  |      n|d   } | j                  |      j                  |i |S )Nr   )rU   rY   format)r7   argsrP   rW   rF   s       r&   r[   z-lazy_number.<locals>.NumberAwareString.format   sD    6<D**62TRSW  <t|4;;TLVLLr%   c                     t        |t              rr| j                  |      }n|}| j                  |      }	 ||z  }|S # t        $ r Y |S w xY wr=   )
isinstancedictrU   rY   	TypeError)r7   rhsrW   
translatedrF   s       r&   __mod__z.lazy_number.<locals>.NumberAwareString.__mod__   sc    c4(V#'#9#9##>L#&L!__\:
#%J "! ! !!s   A 	AAN)r!   r"   r#   rQ   rU   rY   r[   rc   )rX   rP   rF   s   r&   NumberAwareStringrM   z   s    0&M"r%   rd   c                              S r=   r$   )rP   rd   s    r&   <lambda>zlazy_number.<locals>.<lambda>   s    &7&9 r%   c                      t          ffS r=   )_lazy_number_unpickle)rX   rF   original_kwargsresultclasss   r&   rf   zlazy_number.<locals>.<lambda>   s    !;8$
 r%   r$   )r^   intr   copy
__reduce__)rX   rj   rF   rP   proxyrd   ri   s   ```` @@r&   lazy_numberro   s   s    &#!x'T;'1&1\ LY !++-#	" #	" #	"J N9;LMWPVW
 Lr%   c                      t        | |fd|i|S )NrF   )ro   )rX   rj   rF   rP   s       r&   rh   rh      s    t[BB6BBr%   c                 2    t        t        t        | ||      S )NrC   )ro   r   strrC   s      r&   r   r      s    xxvVVr%   c                 4    t        t        t        | |||      S )NrJ   )ro   r   rr   rJ   s       r&   r   r      s    3(6RX r%   c                 ,    t         j                  |       S r=   )r>   r
   )languages    r&   r
   r
      s    ??8$$r%   c                  *    t         j                         S r=   )r>   r   r$   r%   r&   r   r      s    r%   c                        e Zd ZddZd Zd Zy)r   c                      || _         || _        y r=   )ru   r   )r7   ru   r   s      r&   __init__zoverride.__init__   s     $r%   c                 z    t               | _        | j                  t        | j                         y t	                y r=   )r   old_languageru   r
   r   )r7   s    r&   	__enter__zoverride.__enter__   s(    (N==$T]]#r%   c                     | j                   t                y | j                  rt                y t        | j                          y r=   )r{   r   r   r
   )r7   exc_type	exc_value	tracebacks       r&   __exit__zoverride.__exit__   s.    $__LT&&'r%   NF)r!   r"   r#   ry   r|   r   r$   r%   r&   r   r      s    %(r%   r   c                  *    t         j                         S r=   )r>   r   r$   r%   r&   r   r      s      r%   c                  *    t         j                         S r=   )r>   r   r$   r%   r&   r   r      s    ##%%r%   c                 ,    t         j                  |       S r=   )r>   r   )	lang_codes    r&   r   r      s    $$Y//r%   c                     | j                  d      }|dk\  r-| d| j                         dz   | |dz   d j                         z   S | j                         S )z8Turn a locale name (en_US) into a language name (en-us)._r   N-   )findlower)localeps     r&   r   r      sU    CAAvbqz!C'&Q/*?*?*AAA||~r%   c                 (   | j                         j                  d      \  }}}|s| dd j                         | dd z   S |j                  d      \  }}}t        |      dkD  r|j                         n|j	                         }|r|d|z   z  }|dz   |z   S )z8Turn a language name (en-us) into a locale name (en_US).r   N      r   )r   	partitionlentitleupper)ru   langr   countrytails        r&   r   r      s    ~~'11#6D!W|!!#hqrl22
 ((-GQ!$W!1gmmow}}G3:#:r%   Fc                 .    t         j                  | |      S r=   )r>   r   )request
check_paths     r&   r   r      s    ++GZ@@r%   c                 ,    t         j                  |       S r=   )r>   get_language_from_path)paths    r&   r   r      s    ((..r%   )strictc                .    t         j                  | |      S r=   )r>   get_supported_language_variant)r   r   s     r&   r   r      s    00FCCr%   c                      ddl m}  || fi |S )Nr   )r   )templater   )srcrP   r   s      r&   r   r     s    $c$V$$r%   c                  *    t         j                         S r=   )r>   r   r$   r%   r&   r   r   	  s      ""r%   c           	      2   ddl m} 	 ||    }d|v rd|vrt        |d   d         }n|}|rt        |d         |d
<   |S # t        $ rO d| vrt        d| z        | j	                  d      d   }	 ||   }n# t        $ r t        d| d|d	      w xY wY lw xY w)Nr   )	LANG_INFOfallbacknamer   zUnknown language code %s.zUnknown language code z and .name_translated)django.conf.localer   r   rS   splitr   )r   r   	lang_infoinfogeneric_lang_codes        r&   r   r     s    ,i(	"vY'>$Yz%:1%=>DD ".tF|"<K  	i6BCC%OOC03	./D 	6?ARS 	 	s'   !> /B.A43B4BBBz\s*\n\s*c                 J    t         j                  d| j                               S )N )trim_whitespace_resubstrip)ss    r&   trim_whitespacer   )  s    !!#qwwy11r%   c                 r    t        t        | dz
        j                  t        d      t                    dz   S )Nr   0)rounding)rk   r   quantizer   )values    r&   round_away_from_oner   -  s/    wuqy!**73<(*KLqPPr%   r=   r   )/r;   
contextlibr   decimalr   r   django.utils.autoreloadr   r   django.utils.functionalr   django.utils.regex_helperr	   __all__SyntaxWarningr    r(   r>   r   r   r   r   r   rr   r   r   ro   rh   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$   r%   r&   <module>r      s    ( % D ( 62	} 	 )  )F 
 
(#5-? GS!Xs#1hCW%( (*!&0  A/ 9> D%#2 &k2 2Qr%   