跳转到主要内容

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 实现的两个词汇表 AvailableTranslationDomainLanguagesVocabularyAvailableTranslationDomainLanguagesVocabularyForZ3C。注意,这些词汇表不是持久的,如果需要,请在另一个包中实现。这使我们能够跳过所有对 zope.app.i18n 的依赖。

  • 重构:将 zope.language.negotiator 移动到它的命名空间包。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

z3c.language.negotiator-1.1.3.tar.gz (11.6 kB 查看散列)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面