Changeset 2135
- Timestamp:
- 03/30/07 23:47:50 (2 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
tracwikinegotiatorplugin/0.10/wikinegotiator/negotiator.py
r2130 r2135 2 2 3 3 import re 4 from urlparse import urlparse 4 5 from trac.core import Component, implements 5 6 from trac.wiki import WikiSystem … … 35 36 req.args['page'] = page 36 37 self.env.log.debug('Negotiated: %s' % page) 38 # Set Content-Language only when language specific 39 # page is selected. 40 # TODO: I don't know we should set default language 41 # for base page. 42 _, lang = self._split_lang(page) 43 req.send_header('Content-Language', 44 lang or self._default_lang) 45 # always send Vary header to tell language negitiation is 46 # available 47 req.send_header('Vary', 'Accept-Language') 37 48 return handler 38 49 … … 57 68 return orig 58 69 70 # No negotiation to display edited page after commit. 71 # 'Referrer' header can be used to detect this case 72 # by checking 'action=edit' parameter. 73 # ex. "Referer: http://host/wiki/WikiStart?action=edit" 74 referer = req.get_header('Referer') 75 if referer and referer.startswith(req.base_url) and \ 76 'action=edit' in urlparse(referer)[4].split('&'): 77 self.env.log.debug('disable negotiation for edited page.') 78 return orig 79 59 80 # Use requested page itself if the page name has language 60 81 # suffix. As special case, if the name ends with period '.', … … 75 96 # language codes in http request and use it if exist. 76 97 wiki = WikiSystem(self.env) 77 for lang in self._get_prefer ed_langs(req):98 for lang in self._get_preferred_langs(req): 78 99 lpage = '%s.%s' % (page, lang) 79 100 if wiki.has_page(lpage): … … 83 104 # This is required not access to lower ordered 84 105 # language page. For example, 85 # prefer ed language: ja, en, fr106 # preferred language: ja, en, fr 86 107 # default_lang: en 87 108 # existing pages: 'page', 'page.fr' … … 109 130 110 131 111 def _get_prefer ed_langs(self, req):132 def _get_preferred_langs(self, req): 112 133 # decide by language denotation in url parameter: '?lang=xx' 113 134 if req.args.has_key('lang'): … … 122 143 123 144 def _parse_langs(self, al): 124 """Make list of language tag in prefer ed order.145 """Make list of language tag in preferred order. 125 146 For example, 126 147 Accept-Language: ja,en-us;q=0.8,en;q=0.2
