
    Mh
                        U d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddlm
Z ddlmZ  e	e          Zdi iZd	ed
<    ej        dej                  Zd ZddZddZddZdS )z)Server functions for loading translations    )annotationsN)defaultdict)dirname)join)Anynbjszdict[str, Any]TRANSLATIONS_CACHEzW
(?P<lang>[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})?)
(\s*;\s*q\s*=\s*
  (?P<qvalue>[01](.\d+)?)
)?c                   t          t                    }|                     d          D ]}t                              |                                          }|s1|                    dd          \  }}|                    dd          }|dnt          |          }|dk    rz||         	                    |           g }t          |                                          D ]'\  }}|                    t          |                     (|S )	zParses the 'Accept-Language' HTTP header.

    Returns a list of language codes in *ascending* order of preference
    (with the most preferred language last).
    ,langqvalue-_Ng      ?r   )r   listsplit_accept_lang_rematchstripgroupreplacefloatappendsorteditemsextend)	accept_langby_qpartmr   r   resr   langss	            \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyter_server/i18n/__init__.pyparse_accept_lang_headerr#   "   s     tD!!#&& 
" 
"!!$**,,// 	wwvx00f||C%%E&MMQ;;VD!!!!
C4::<<(( " "5

6%==!!!!J    c                (   	 t          t          t          | dd          d          }n/# t          $ r"}|j        t          j        k    r i cY d}~S d}~ww xY w|5  t          j        |          }ddd           n# 1 swxY w Y   |d         |         S )z(Load translations from an nbjs.json fileLC_MESSAGESz	nbjs.jsonzutf-8)encodingNlocale_data)openpjoinI18N_DIROSErrorerrnoENOENTjsonload)languagedomainfedatas        r"   r0   r0   ;   s    x=+FFQXYYY   7el""						
 
  y||              v&&s,   &) 
AA
AAA;;A?A?c                |    t           |         }	 ||          S # t          $ r t          | |          }||| <   |cY S w xY w)zFLoad translations for one language, using in-memory cache if available)r	   KeyErrorr0   )r1   r2   domain_cacher5   s       r"   cached_loadr9   I   sY    %f-LH%%   Hf%%!%Xs    !;;c                    t          |           }i }|D ]@}|dk    r|                                 |                    t          ||                     Addi|d<   |||idS )zjCombine translations for multiple accepted languages.

    Returns data re-packaged in jed1.x format.
    enr2   r    )r2   r(   )r#   clearupdater9   )accept_languager2   
lang_codescombinedr1   s        r"   combine_translationsrB   T   s    
 */::J!H ; ;tNNOOK&99::::f%HRLfh-?@@@r$   )r   )__doc__
__future__r   r-   r/   recollectionsr   os.pathr   r   r*   typingr   __file__r+   r	   __annotations__compileVERBOSEr   r#   r0   r9   rB    r$   r"   <module>rN      s&   / / / " " " " " "   				 # # # # # #       ! ! ! ! ! !      78 '-b\  1 1 1 1 "*
 J   2' ' ' '   A A A A A Ar$   