我们从Python开源项目中,提取了以下15个代码示例,用于说明如何使用django.utils.translation.get_language_from_path()。
def process_response(self, request, response): language = translation.get_language() language_from_path = translation.get_language_from_path(request.path_info) if (response.status_code == 404 and not language_from_path and self.is_language_prefix_patterns_used): urlconf = getattr(request, 'urlconf', None) language_path = '/%s%s' % (language, request.path_info) path_valid = is_valid_path(language_path, urlconf) path_needs_slash = ( not path_valid and ( settings.APPEND_SLASH and not language_path.endswith('/') and is_valid_path('%s/' % language_path, urlconf) ) ) if path_valid or path_needs_slash: script_prefix = get_script_prefix() # Insert language after the script prefix and before the # rest of the URL language_url = request.get_full_path(force_append_slash=path_needs_slash).replace( script_prefix, '%s%s/' % (script_prefix, language), 1 ) return self.response_redirect_class(language_url) if not (self.is_language_prefix_patterns_used and language_from_path): patch_vary_headers(response, ('Accept-Language',)) if 'Content-Language' not in response: response['Content-Language'] = language return response
def process_response(self, request, response): language = translation.get_language() language_from_path = translation.get_language_from_path(request.path_info) if (response.status_code == 404 and not language_from_path and self.is_language_prefix_patterns_used()): urlconf = getattr(request, 'urlconf', None) language_path = '/%s%s' % (language, request.path_info) path_valid = is_valid_path(language_path, urlconf) if (not path_valid and settings.APPEND_SLASH and not language_path.endswith('/')): path_valid = is_valid_path("%s/" % language_path, urlconf) if path_valid: script_prefix = get_script_prefix() language_url = "%s://%s%s" % ( request.scheme, request.get_host(), # insert language after the script prefix and before the # rest of the URL request.get_full_path().replace( script_prefix, '%s%s/' % (script_prefix, language), 1 ) ) return self.response_redirect_class(language_url) if not (self.is_language_prefix_patterns_used() and language_from_path): patch_vary_headers(response, ('Accept-Language',)) if 'Content-Language' not in response: response['Content-Language'] = language return response
def process_request(self, request): urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF) i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf) language = translation.get_language_from_request(request, check_path=i18n_patterns_used) language_from_path = translation.get_language_from_path(request.path_info) if not language_from_path and i18n_patterns_used and not prefixed_default_language: language = settings.LANGUAGE_CODE translation.activate(language) request.LANGUAGE_CODE = translation.get_language()
def process_response(self, request, response): language = translation.get_language() language_from_path = translation.get_language_from_path(request.path_info) urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF) i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf) if response.status_code == 404 and not language_from_path and i18n_patterns_used: language_path = '/%s%s' % (language, request.path_info) path_valid = is_valid_path(language_path, urlconf) path_needs_slash = ( not path_valid and ( settings.APPEND_SLASH and not language_path.endswith('/') and is_valid_path('%s/' % language_path, urlconf) ) ) if path_valid or path_needs_slash: script_prefix = get_script_prefix() # Insert language after the script prefix and before the # rest of the URL language_url = request.get_full_path(force_append_slash=path_needs_slash).replace( script_prefix, '%s%s/' % (script_prefix, language), 1 ) return self.response_redirect_class(language_url) if not (i18n_patterns_used and language_from_path): patch_vary_headers(response, ('Accept-Language',)) if 'Content-Language' not in response: response['Content-Language'] = language return response
def process_response(self, request, response): language = translation.get_language() language_from_path = translation.get_language_from_path(request.path_info) urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF) i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf) if (response.status_code == 404 and not language_from_path and i18n_patterns_used and prefixed_default_language): # Maybe the language code is missing in the URL? Try adding the # language prefix and redirecting to that URL. language_path = '/%s%s' % (language, request.path_info) path_valid = is_valid_path(language_path, urlconf) path_needs_slash = ( not path_valid and ( settings.APPEND_SLASH and not language_path.endswith('/') and is_valid_path('%s/' % language_path, urlconf) ) ) if path_valid or path_needs_slash: script_prefix = get_script_prefix() # Insert language after the script prefix and before the # rest of the URL language_url = request.get_full_path(force_append_slash=path_needs_slash).replace( script_prefix, '%s%s/' % (script_prefix, language), 1 ) return self.response_redirect_class(language_url) if not (i18n_patterns_used and language_from_path): patch_vary_headers(response, ('Accept-Language',)) if 'Content-Language' not in response: response['Content-Language'] = language return response
def process_request(self, request): active_language = None language_from_path = translation.get_language_from_path(request.path) requested_languages = request.META.get('HTTP_ACCEPT_LANGUAGE') if language_from_path: active_language = language_from_path elif requested_languages: requested_languages = requested_languages.split(',') codes = tuple( language.code for language in get_languages_for_site(request.site) if language ) for language in requested_languages: language = language.split(';')[0] active_language = ( language if language in codes else None) if active_language is None and language.startswith(codes): active_language = [ code for code in codes if language.startswith(code)][0] if active_language is not None: break if active_language is None: default_language = Language.objects.default_for_site( site=request.site) if default_language: active_language = default_language.code else: active_language = settings.LANGUAGE_CODE translation.activate(active_language) request.LANGUAGE_CODE = active_language
def change_lang(context, lang_code): if 'request' in context: request = context['request'] if PAGE_TEMPLATE_VAR in context and isinstance(context[PAGE_TEMPLATE_VAR], AbstractPage): # current request points to a Wagtail page page = context[PAGE_TEMPLATE_VAR] with override(lang_code): trans_url_path = page.url_path # find position of first non-translated page in path (if any) non_trans_page = trans_url_path.find('//') if non_trans_page > 0: # non-translated page found in path root_page = request.site.root_page.specific # get part of path from root path to first non-translated page trans_url_path = trans_url_path[len(root_page.url_path):non_trans_page] path_components = [comp for comp in trans_url_path.split('/') if comp] # try to get that page try: page, args, kwargs = root_page.route(request, path_components) except: return '' elif non_trans_page == 0: # root page not translated! return '' return page.url elif 'object' in context: # for cases when DetailView or similar is used obj = context['object'] with override(lang_code): try: return obj.get_absolute_url() except: pass # if none of the above URL translation methods worked # let's try replacing language prefix in URL current_lang = get_language_from_path(request.path_info) if current_lang is not None: return language_code_prefix_re.sub('/{}/'.format(lang_code), request.path_info) return ''