跳转到主要内容

Zope3 i18n语言切换。

项目描述

此包提供了一个实现,允许您实现自己的i18n感知内容类型。

详细文档

语言切换器

让我们看看 z3c.language.switch 如何工作

导入和无位置设置

>>> import zope.component
>>> from zope.app.testing import placelesssetup
>>> from z3c.language.switch import II18nLanguageSwitch
>>> from z3c.language.switch.testing import IContentObject
>>> from z3c.language.switch.testing import II18nContentObject
>>> from z3c.language.switch.testing import I18nContentObject
>>> from z3c.language.switch.testing import I18nContentObjectLanguageSwitch
>>> from z3c.language.switch.testing import ContentObject
>>> placelesssetup.setUp()

设置测试对象

>>> en_title = u'en_title'
>>> obj = I18nContentObject(en_title)
>>> obj.title
u'en_title'

添加额外的语言

>>> de_title = u'de_title'
>>> fr_title = u'fr_title'
>>> deObj = obj.addLanguage('de', de_title)
>>> frObj = obj.addLanguage('fr', fr_title)

切换默认语言

>>> obj.title
u'en_title'
>>> obj.setDefaultLanguage('de')
>>> obj.title
u'de_title'

删除‘en’语言对象

>>> obj._data.keys()
['de', 'en', 'fr']
>>> obj.removeLanguage('en')
>>> obj._data.keys()
['de', 'fr']

删除默认语言对象将导致 ValueError 错误

>>> obj.removeLanguage('de')
Traceback (most recent call last):
...
ValueError: cannot remove default language (de)

删除不存在的语言对象将导致 ValueError 错误

>>> obj.removeLanguage('undefined')
Traceback (most recent call last):
...
ValueError: cannot remove nonexistent language (undefined)

将默认语言设置为不存在的语言将导致 ValueError

>>> obj.setDefaultLanguage('en')
Traceback (most recent call last):
...
ValueError: cannot set nonexistent language (en) as default

通过 II18nLanguageSwitch 适配器直接访问语言,首先为 I18nContentObject 注册适配器

>>> zope.component.provideAdapter(I18nContentObjectLanguageSwitch,
...     (II18nContentObject,), provides=II18nLanguageSwitch)

适配器在初始化方法中设置为默认语言

>>> adapted = II18nLanguageSwitch(obj)
>>> adapted.title
u'de_title'

更改默认语言并再次访问标题,标题不应切换到其他语言

>>> obj.setDefaultLanguage('fr')
>>> adapted.title
u'de_title'

通过适配器将语言切换到‘fr’

>>> adapted.setLanguage('fr')
>>> adapted.title
u'fr_title'

最后,清理

>>> placelesssetup.tearDown()

AvailableLanguagesVocabulary 词汇表

使用此词汇表从对象本身获取可用语言。

>>> from z3c.language.switch import vocabulary
>>> vocab = vocabulary.AvailableLanguagesVocabulary(obj)
>>> len(vocab._terms)
2
>>> vocab._terms[0].value
'de'
>>> vocab._terms[0].token
'de'
>>> vocab._terms[0].title
'de'
>>> vocab._terms[1].value
'fr'
>>> vocab._terms[1].token
'fr'
>>> vocab._terms[1].title
'fr'

变更日志

1.1.0 (2009-11-29)

  • 调整依赖关系,反映zope包中的更改

1.0.2 (2008-05-21)

  • 错误:修复拼写错误 + 异常处理

1.0.1 (2008-01-24)

  • 错误:修正元数据。

1.0.0 (2008-01-21)

  • 重构:将 zope.language.switch 移至其命名空间包。

项目详情


下载文件

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

源分发

z3c.language.switch-1.1.0.zip (26.0 kB 查看哈希值)

上传时间

由以下支持