
    Ib                         d Z ddlmZ ddlZddlZddlmZmZ ddl	Z	 ee
      Zdi iZ e	j                  de	j                        Zd ZddZdd	Zdd
Zy)z*Server functions for loading translations
    )defaultdictN)dirnamejoinnbjszW
(?P<lang>[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})?)
(\s*;\s*q\s*=\s*
  (?P<qvalue>[01](.\d+)?)
)?c                    t        t              }| j                  d      D ]  }t        j	                  |j                               }|s)|j                  dd      \  }}|j                  dd      }|d}nt        |      }|dk(  rf||   j                  |       d|v s|j                  d      d   }|dk7  s||   j                  |        g }t        |j                               D ]  \  }}|j                  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-_g      ?r   en)r   listsplit_accept_lang_rematchstripgroupreplacefloatappendsorteditemsextend)	accept_langby_qpartmr	   r
   shortreslangss	            8/usr/lib/python3/dist-packages/notebook/i18n/__init__.pyparse_accept_lang_headerr"      s    tD!!#& +!!$**,/wwvx0f||C%>F6]FQ;VD!$;JJsOA&E}V##E*#+& C

- "

6%=!"J    c                    	 t        t        t        | dd      d      }|5  t        j                  |      }ddd       d   |   S # t        $ r*}|j                  t        j
                  k7  r i cY d}~S d}~ww xY w# 1 sw Y   GxY w)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/   9   s    x=+F$& 
 yy|v&&  77ell"	
 s(   A A=	A:A5/A:5A:=Bc                 d    t         |   }	 ||    S # t        $ r t        | |      }||| <   |cY S w xY w)zFLoad translations for one language, using in-memory cache if available)TRANSLATIONS_CACHEKeyErrorr/   )r0   r1   domain_cacher4   s       r!   cached_loadr9   G   sF    %f-LH%% Hf%!%Xs    //c                     t        |       }i }|D ]3  }|dk(  r|j                          |j                  t        ||             5 ddi|d<   |||idS )zjCombine translations for multiple accepted languages.

    Returns data re-packaged in jed1.x format.
    r   r1   r    )r1   r'   )r"   clearupdater9   )accept_languager1   
lang_codescombinedr0   s        r!   combine_translationsrA   Q   sp    
 */:JH ;tNNOOK&9:; V$HRL H
 r#   )r   )__doc__collectionsr   r,   r.   os.pathr   r   r)   re__file__r*   r6   compileVERBOSEr   r"   r/   r9   rA    r#   r!   <module>rJ      sc    #   * 	8 b\  "**  
zz	>'r#   