Changeset 436
- Timestamp:
- Tue Jul 17 23:30:10 2007
- Files:
-
- subprojects/Wuming/trunk/wuming/test/test_docs.py (modified) (diff)
- subprojects/Wuming/trunk/wuming/i18n.py (modified) (diff)
- subprojects/Wuming/trunk/wuming/auth.py (modified) (diff)
- subprojects/Wuming/trunk/wuming/interfaces.py (modified) (diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
subprojects/Wuming/trunk/wuming/test/test_docs.py
r430 r436 1 from wuming import web, auth 2 3 __doctests__ = [ web, auth ] 1 from wuming import web, auth, i18n 2 __doctests__ = [ web, auth, i18n ] 4 3 -
subprojects/Wuming/trunk/wuming/i18n.py
r423 r436 3 3 from wuming.interfaces import ITranslator, ITranslationStrategy 4 4 5 import gettext5 from zope.interface import implements 5 5 6 import weakref 6 7 7 8 class GettextTranslator(object): 8 9 """ 10 >>> from zope.interface.verify import verifyClass, verifyObject 11 >>> verifyClass(ITranslator, GettextTranslator) 12 True 13 >>> verifyObject(ITranslator, GettextTranslator()) 14 True 9 15 """ 16 10 17 implements(ITranslator) 11 18 19 domain = None 20 localedir = None 21 fallback = True 22 _tsl_cache = weakref.WeakValueDictionary() 23 gettextFunction = 'ugettext' 24 _last = [] 25 26 def __init__(self, domain=None, localedir=None, fallback=None): 27 pass 28 29 def _initTranslation(self, languages, domain): 30 import gettext 31 translation = gettext.translation( 32 domain=domain, 33 localedir=self.localedir, 34 languages=languages, 35 fallback=True, 36 ) 37 f = getattr(translation, self.gettextFunction) 38 self._tsl_cache[(domain, languages)] = f 39 return f 40 41 def translate(self, s, languages, domain=None): 42 """Example usage 43 44 >>> tsl = GettextTranslator() 45 >>> tsl.translate('Hello', None) 46 u'Hello' 47 """ 48 domain = domain or self.domain 49 tsl = self._tsl_cache.get((domain, languages), None) 50 if tsl is None: 51 tsl = self._initTranslation(languages, domain) 52 # keep some references for stronger caching 53 if tsl not in self._last: 54 if len(self._last) > 5: 55 self._last.pop(0) 56 self._last.append(tsl) 57 return tsl(s) 58 59 _ = GettextTranslator() 60 12 61 class AcceptLangStrategy(object): 13 62 """This is a ITranslationStrategy implementation that use accept-language from 14 63 request header to find the best translator. 64 65 >>> from zope.interface.verify import verifyClass, verifyObject 66 >>> verifyClass(ITranslationStrategy, AcceptLangStrategy) 67 True 68 >>> verifyObject(ITranslationStrategy, AcceptLangStrategy()) 69 True 15 70 """ 16 71 -
subprojects/Wuming/trunk/wuming/auth.py
r435 r436 118 118 119 119 class NamelessVisitor: 120 """ 121 >>> from zope.interface.verify import verifyClass, verifyObject 122 >>> verifyClass(INamelessVisitor, NamelessVisitor) 123 True 124 >>> verifyObject(INamelessVisitor, NamelessVisitor('abc')) 125 True 126 """ 120 127 implements(INamelessVisitor) 121 128 def __init__(self, visitor_id): -
subprojects/Wuming/trunk/wuming/interfaces.py
r434 r436 43 43 """ 44 44 45 def translate(s): 45 def translate(s, languages, domain=None): 45 45 """translate a string s to target language 46 46 @param s: a string to translate 47 @param languages: a list of languages, e.g. ['en', 'ja'] 48 @param domain: optional domain arguments (e.g. 'foodomain') 47 49 @return a translated string 48 50 """ … … 52 54 53 55 def getTranslator(resource, request): 54 """get a ITranslator provider 56 """get a ITranslator provider for the given resource/request 54 56 55 57 @return a ITranslator provider
