Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

This package provides a persistent INegotiator utility implementation.

Detailed Documentation

Negotiator

This package provides a local implementation of the INegotiator interface defined in zope.i18n.interfaces. The negotiator implementation offers some additional usefull attributes which are explained later. This INegotiator is also used in the z3c.language.switch package.

Let’s setup a negotiator:

>>> from z3c.language.negotiator import app
>>> negotiator = app.Negotiator()

Such a negotiator provides the following interfaces:

>>> from zope.i18n.interfaces import INegotiator
>>> from z3c.language.negotiator.interfaces import INegotiatorManager
>>> INegotiator.providedBy(negotiator)
True
>>>
>>> INegotiatorManager.providedBy(negotiator)
True
>>>

By default a negotiator has the following values:

>>> negotiator.policy
'session --> browser --> server'
>>> negotiator.serverLanguage
u'en'
>>> negotiator.offeredLanguages
[]

If we set a policy with a wrong value, we will get a ValueError:

>>> negotiator.policy = u'wrong'
Traceback (most recent call last):
...
ValueError: ('Not a valid policy name.', u'wrong')

Register the negotiator as a global utility:

>>> import zope.component
>>> zope.component.provideUtility(negotiator, INegotiator)

Now we can use the vocabulary and see what offered languages are available:

>>> from z3c.language.negotiator import vocabulary
>>> vocab = vocabulary.OfferedLanguagesVocabulary(None)
>>> vocab
<z3c.language.negotiator.vocabulary.OfferedLanguagesVocabulary object at ...>
>>> vocab._terms
[]

Add some offered languages and check the vocabulary again:

>>> negotiator.offeredLanguages = [u'de', u'fr']
>>> negotiator.offeredLanguages
[u'de', u'fr']

Try to get the utility and ceck the offeredLanguages again:

>>> util = zope.component.getUtility(INegotiator)
>>> util.offeredLanguages
[u'de', u'fr']

Now check the vocabulary again:

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

See tests.py for more tests.

CHANGES

1.1.3 (2010-10-01)

  • Cache ONLY for the session setting. Others turned out as a bad idea. It’s pretty straightforward now, we’re caching session data lookups because those lookups are sooo slow. Would be better done in z3c.language.session, but there’s nothing persistent.

1.1.2 (2010-08-05)

  • Fixed an issue with the cache: The cache just ignored the languages parameter. The first request saved a specific language (e.g. de-de) to the cache, but the second did not have that available in languages, still the cached value was returned. Worst case the uncached method is called.

1.1.1 (2010-07-21)

  • added language choice caching, is by default turned off

  • test coverage is now 100%

1.1.0 (2009-11-29)

  • adjust dependencies, reflect changes in zope packages

  • clanup tests, remove unused tests and skip using zope.app.testing

1.0.1 (2008-01-24)

  • Bug: Corrected meta data.

1.0.0 (2008-01-21)

  • Restructure: Removed the two vocabularies AvailableTranslationDomainLanguagesVocabulary and AvailableTranslationDomainLanguagesVocabularyForZ3C which depend on the zope.app.i18n implementation. Note these vocabularies are not persistent and if you will need it, let’s implement this in another package. This allows us to skip all dependencies to zope.app.i18n.

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

Release files for z3c.language.negotiator 1.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for z3c.language.negotiator 1.1.3
File Size Uploaded
z3c.language.negotiator-1.1.3.tar.gz 11.6 kB Details

Release files / z3c.language.negotiator-1.1.3.tar.gz

Download URL z3c.language.negotiator-1.1.3.tar.gz
Size 11.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9c2d98084b99806ca458fad4c037f6f3195686e4d1522ae570524f5f5c54b150
BLAKE2b-256 checksum
How to use checksums
6b8558f6856af6e71963f6f50ffab759d1426b5cb3e3684904ea5019a683697b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page