Exemplo n.º 1
0
    def process_resource(self, req, resp, resource, params):
        label = req.uri_template.replace('method', params.get('method', ''))
        label = label.replace('/', '_')
        req.context.label = label

        if not self.translations:
            req.context.i18n = nullTranslations
            return

        # Set language based on three settings in order:
        # - MailboxSettings
        # - HTTP ACCEPT-LANGUAGE Headers
        # - ?ui_locales parameter

        # The language is selected based on the three options and what languages are available,
        # - when de-at is requested and not available, pick de (if available)
        # - auto fallback to en-gb

        # HTTP ACCEPT-LANGUAGE
        accept_lang = req.headers.get('ACCEPT-LANGUAGE')
        #logging.debug("requesting accept-lang '%s'", accept_lang)
        if accept_lang:
            for lang, _ in parse_accept_language(accept_lang):
                translation = self.translations.get(lang)
                if translation:
                    req.context.i18n = translation
                    #logging.debug("using translation '%s'", lang)
                    return

        req.context.i18n = nullTranslations
Exemplo n.º 2
0
def test_one_language():
    assert parse_accept_language('fr-CA') == [('fr-ca', 1), ('fr', 0.99)]
Exemplo n.º 3
0
def test_empty():
    assert parse_accept_language('') == []
Exemplo n.º 4
0
def test_normal():
    assert parse_accept_language('de-DE,ar-TN;q=0.7,de-AT;q=0.3') == [
        ('de-de', 1), ('de', 0.99), ('ar-tn', 0.7), ('ar', 0.68),
        ('de-at', 0.3), ('de', 0.27)
    ]
Exemplo n.º 5
0
def test_quality():
    assert parse_accept_language('de-AT , de ; q=0.8') == [('de-at', 1.0),
                                                           ('de', 0.99),
                                                           ('de', 0.8)]
Exemplo n.º 6
0
def test_multiple_languages():
    assert parse_accept_language('de-AT , de') == [('de-at', 1), ('de', 0.99),
                                                   ('de', 0.98)]