913 return False |
913 return False |
914 |
914 |
915 def html_content_type(self): |
915 def html_content_type(self): |
916 return 'text/html' |
916 return 'text/html' |
917 |
917 |
|
918 def negotiated_language(self): |
|
919 self.headers_out.addHeader('Vary', 'Accept-Language') |
|
920 for lang in self.header_accept_language(): |
|
921 if lang in self.translations: |
|
922 return lang |
|
923 return None |
|
924 |
918 def set_user_language(self, user): |
925 def set_user_language(self, user): |
919 vreg = self.vreg |
926 vreg = self.vreg |
920 if user is not None: |
927 if user is not None: |
921 try: |
928 try: |
922 # 1. user-specified language |
|
923 lang = vreg.typed_value('ui.language', user.properties['ui.language']) |
929 lang = vreg.typed_value('ui.language', user.properties['ui.language']) |
924 self.set_language(lang) |
930 self.set_language(lang) |
925 return |
931 return |
926 except KeyError: |
932 except KeyError: |
927 pass |
933 pass |
928 if vreg.config.get('language-negociation', False): |
934 # site's default language |
929 # 2. http accept-language |
935 if self.lang is None: |
930 self.headers_out.addHeader('Vary', 'Accept-Language') |
936 self.set_default_language(vreg) |
931 for lang in self.header_accept_language(): |
|
932 if lang in self.translations: |
|
933 self.set_language(lang) |
|
934 return |
|
935 # 3. site's default language |
|
936 self.set_default_language(vreg) |
|
937 |
937 |
938 |
938 |
939 def _cnx_func(name): |
939 def _cnx_func(name): |
940 def proxy(req, *args, **kwargs): |
940 def proxy(req, *args, **kwargs): |
941 return getattr(req.cnx, name)(*args, **kwargs) |
941 return getattr(req.cnx, name)(*args, **kwargs) |