o
    iF
                     @   s   U d 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	 ee
Zdi iZeed< edejZd	d
 ZdddZdddZdddZdS )z*Server functions for loading translations
    N)defaultdict)dirname)joinnbjsTRANSLATIONS_CACHEzW
(?P<lang>[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})?)
(\s*;\s*q\s*=\s*
  (?P<qvalue>[01](.\d+)?)
)?c           	      C   s   t t}| dD ]0}t| }|sq	|dd\}}|dd}|du r)dnt|}|dkr2q	|| 	| q	g }t
| D ]\}}|t
| qB|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   langs r   W/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/jupyter_server/i18n/__init__.pyparse_accept_lang_header   s   r    c              
   C   s   zt tt| dddd}W n ty( } z|jtjkr i W  Y d}~S d}~ww | t|}W d   n1 s;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datar   r   r   r+   8   s   r+   c                 C   s<   t | }z||  W S  ty   t| |}||| < | Y S w )zFLoad translations for one language, using in-memory cache if available)r   KeyErrorr+   )r,   r-   domain_cacher0   r   r   r   cached_loadF   s   

r3   c                 C   sR   t | }i }|D ]}|dkr|  q|t|| qddi|d< |||idS )zjCombine translations for multiple accepted languages.

    Returns data re-packaged in jed1.x format.
    enr-   r    )r-   r#   )r    clearupdater3   )accept_languager-   
lang_codescombinedr,   r   r   r   combine_translationsQ   s   
r;   )r   )__doc__r(   r*   recollectionsr   os.pathr   r   r%   __file__r&   r   dict__annotations__compileVERBOSEr   r    r+   r3   r;   r   r   r   r   <module>   s"    


