Zope3 国际化语言协商器。
项目描述
此包提供了一种持久的INegotiator实用工具实现。
详细文档
协商器
此包提供了在zope.i18n.interfaces中定义的INegotiator接口的本地实现。协商器实现提供了一些额外的有用属性,将在后面进行解释。此INegotiator也用于z3c.language.switch包。
让我们设置一个协商器
>>> from z3c.language.negotiator import app >>> negotiator = app.Negotiator()
此类协商器提供以下接口
>>> from zope.i18n.interfaces import INegotiator >>> from z3c.language.negotiator.interfaces import INegotiatorManager>>> INegotiator.providedBy(negotiator) True >>> >>> INegotiatorManager.providedBy(negotiator) True >>>
默认情况下,协商器具有以下值
>>> negotiator.policy 'session --> browser --> server'>>> negotiator.serverLanguage u'en'>>> negotiator.offeredLanguages []
如果我们设置了一个具有错误值的策略,我们将得到一个ValueError
>>> negotiator.policy = u'wrong' Traceback (most recent call last): ... ValueError: ('Not a valid policy name.', u'wrong')
将协商器注册为全局实用工具
>>> import zope.component >>> zope.component.provideUtility(negotiator, INegotiator)
现在我们可以使用词汇表并查看哪些提供的语言可用
>>> from z3c.language.negotiator import vocabulary >>> vocab = vocabulary.OfferedLanguagesVocabulary(None) >>> vocab <z3c.language.negotiator.vocabulary.OfferedLanguagesVocabulary object at ...>>>> vocab._terms []
添加一些提供的语言并再次检查词汇表
>>> negotiator.offeredLanguages = [u'de', u'fr'] >>> negotiator.offeredLanguages [u'de', u'fr']
尝试获取实用工具并再次检查提供的语言
>>> util = zope.component.getUtility(INegotiator) >>> util.offeredLanguages [u'de', u'fr']
现在再次检查词汇表
>>> vocab = vocabulary.OfferedLanguagesVocabulary(None) >>> vocab._terms[0].value u'de' >>> vocab._terms[0].token 'de' >>> vocab._terms[0].title u'de' >>> vocab._terms[1].value u'fr' >>> vocab._terms[1].token 'fr' >>> vocab._terms[1].title u'fr'
请参阅tests.py以获取更多测试。
更改记录
1.1.3 (2010-10-01)
只为session设置缓存。其他事情证明是一个坏主意。现在很简单,我们现在正在缓存会话数据查找,因为这些查找非常慢。最好在z3c.language.session中完成,但是那里没有持久性。
1.1.2 (2010-08-05)
修复了缓存问题:缓存忽略了 languages 参数。第一次请求将特定语言(例如 de-de)保存到缓存中,但第二次请求在 languages 中没有该语言,仍然返回了缓存的值。最坏的情况下会调用未缓存的函数。
1.1.1 (2010-07-21)
添加了语言选择缓存,默认关闭
测试覆盖率现在是 100%
1.1.0 (2009-11-29)
调整依赖关系,反映 zope 包中的更改
整理测试,删除未使用的测试并跳过使用 zope.app.testing
1.0.1 (2008-01-24)
错误:修正了元数据。
1.0.0 (2008-01-21)
重构:删除了依赖于 zope.app.i18n 实现的两个词汇表 AvailableTranslationDomainLanguagesVocabulary 和 AvailableTranslationDomainLanguagesVocabularyForZ3C。注意,这些词汇表不是持久的,如果需要,请在另一个包中实现。这使我们能够跳过所有对 zope.app.i18n 的依赖。
重构:将 zope.language.negotiator 移动到它的命名空间包。
项目详情
z3c.language.negotiator-1.1.3.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 9c2d98084b99806ca458fad4c037f6f3195686e4d1522ae570524f5f5c54b150 |
|
MD5 | 24562525de23a6b3faaad9ae154a0825 |
|
BLAKE2b-256 | 6b8558f6856af6e71963f6f50ffab759d1426b5cb3e3684904ea5019a683697b |