Skip to main content
Help us improve Python packaging – donate today!

Zope3 i18n language switch.

Project Description

This package provides an implementation wich let’s you implement your own i18n aware content types.

Detailed Documentation

Langauge Switcher

Let’s show how z3c.language.switch works:

Imports and placeless setup:

>>> 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()

Setup test object:

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

Add additional languages:

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

Switch default language:

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

Remove the ‘en’ language object:

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

Remove default language object will end in a ValueError error:

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

Remove nonexistent language object will end in a ValueError error:

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

Set default language to a non existent language will end in a ValueError:

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

Access the language directly via the II18nLanguageSwitch adapter, first register the adapter for the I18nContentObject:

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

The adapter is set to the default language in the init method:

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

Change the default language and access the title again, the title should not switch to another language:

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

Switch the language to ‘fr’ via the adapter:

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

Finally, clean up:

>>> placelesssetup.tearDown()

AvailableLanguagesVocabulary Vocabulary

Use this vocabulary for get the available languages from the object itself.

>>> 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'

CHANGES

1.1.0 (2009-11-29)

  • adjust dependencies, reflect changes in zope packages

1.0.2 (2008-05-21)

  • Bug: Fix typo + exception handling

1.0.1 (2008-01-24)

  • Bug: Corrected meta-data.

1.0.0 (2008-01-21)

  • Restructure: Moved zope.language.switch to it’s namespace package.

Release history Release notifications

This version
History Node

1.1.0

History Node

1.0.1

History Node

1.0.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
z3c.language.switch-1.1.0.zip (26.0 kB) Copy SHA256 hash SHA256 Source None Nov 29, 2009

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page