ó
ů2˘\c           @   sť   d  Z  d d l m Z d d l Z d d l Z d d l Z d d l m Z m Z	 d d l
 Z
 e e  Z i i  d 6Z e
 j d e
 j  Z d   Z d d  Z d d	  Z d d
  Z d S(   s*   Server functions for loading translations
i˙˙˙˙(   t   defaultdictN(   t   dirnamet   joint   nbjssW   
(?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  } xŚ |  j d  D] } t j | j    } | sC q n  | j d d  \ } } | j d d  } | d k r d } n t	 |  } | d k r  q n  | | j
 |  q Wg  } x3 t | j    D] \ } } | j t |   qÎ W| S(	   s¤   Parses the 'Accept-Language' HTTP header.

    Returns a list of language codes in *ascending* order of preference
    (with the most preferred language last).
    t   ,t   langt   qvaluet   -t   _g      đ?i    N(   R    t   listt   splitt   _accept_lang_ret   matcht   stript   groupt   replacet   Nonet   floatt   appendt   sortedt   itemst   extend(   t   accept_langt   by_qt   partt   mR   R   t   rest   langs(    (    s5   lib/python2.7/site-packages/notebook/i18n/__init__.pyt   parse_accept_lang_header   s"    	c         C   s   y( t  j t t |  d d  d d } Wn, t k
 rV } | j t j k rR   n  i  SX|  t j |  } Wd QX| d | S(   s(   Load translations from an nbjs.json filet   LC_MESSAGESs	   nbjs.jsont   encodings   utf-8Nt   locale_data(	   t   iot   opent   pjoint   I18N_DIRt   IOErrort   errnot   ENOENTt   jsont   load(   t   languaget   domaint   ft   et   data(    (    s5   lib/python2.7/site-packages/notebook/i18n/__init__.pyR(   6   s    c         C   sH   t  | } y | |  SWn+ t k
 rC t |  |  } | | |  <| SXd S(   sF   Load translations for one language, using in-memory cache if availableN(   t   TRANSLATIONS_CACHEt   KeyErrorR(   (   R)   R*   t   domain_cacheR-   (    (    s5   lib/python2.7/site-packages/notebook/i18n/__init__.pyt   cached_loadD   s    

c         C   s|   t  |   } i  } x= | D]5 } | d k r8 | j   q | j t | |   q Wi d d 6| d <i | d 6i | | 6d 6S(   sj   Combine translations for multiple accepted languages.

    Returns data re-packaged in jed1.x format.
    t   enR   R*   t    R   (   R   t   cleart   updateR1   (   t   accept_languageR*   t
   lang_codest   combinedR)   (    (    s5   lib/python2.7/site-packages/notebook/i18n/__init__.pyt   combine_translationsN   s    (   t   __doc__t   collectionsR    R%   R    R'   t   os.pathR   R   R"   t   ret   __file__R#   R.   t   compilet   VERBOSER   R   R(   R1   R9   (    (    (    s5   lib/python2.7/site-packages/notebook/i18n/__init__.pyt   <module>   s   	
