
    KeF
                         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j        dej                  Zd	 Zdd
ZddZ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                    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	            <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    r.   r.   8   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   KeyErrorr.   )r/   r0   domain_cacher3   s       r    cached_loadr7   F   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.
    enr0   r    )r0   r&   )r!   clearupdater7   )accept_languager0   
lang_codescombinedr/   s        r    combine_translationsr@   Q   s    
 */::JH ; ;tNNOOK&99::::f%HRLfh-?@@@r"   )r   )__doc__r+   r-   recollectionsr   os.pathr   r   r(   __file__r)   r   dict__annotations__compileVERBOSEr   r!   r.   r7   r@    r"   r    <module>rK      s       				 # # # # # #       ! ! ! ! ! !78 #B< D ' ' ' "*
 J   2' ' ' '   A A A A A Ar"   