Skip to main content

UNKNOWN

Project description

Archetypes Language Field Bug Fix

Introduction

archetypes.languagebugfix package aims to fix an issue with the default vocabulary for ExtensibleMetadata language field in Archetypes.

This issue affects only contents created in languages which code are in the form lc-cc(lc, language code; cc, contry code) and its effects appear when you have a Lingua Plone installation and a combined language code is used as default language for the site – translations losing their reference to canonical versions of the content.

Keep in mind this package is to be used until an Archetypes version with the proper fix is released, so, probably there won’t be another release.

Testing the issue

Let’s setup our basic test variables:

>>> from Products.CMFPlone.utils import getToolByName
>>> self.loginAsPortalOwner()
>>> portal = self.portal
>>> lt = getToolByName(portal,'portal_languages')
>>> pp = getToolByName(portal,'portal_properties')

This issue is related to the vocabulary used for the language field on the default Archetypes types. The vocabulary field does not display combined language codes, even when this option is set on portal_languages.

The default ExtensibleMetadata language field uses the method ‘languages’ as vocabulary, so we will create a new content and check the returned values.

>>> id = portal.invokeFactory(type_name='Document',id='foo', title='Foo')
>>> foo = portal.foo
>>> languageField = foo.getField('language')
>>> defaultVocabulary = 'languages'
>>> languages = getattr(foo,defaultVocabulary)()

Then we enable combined language codes on our portal. Also we set pt-br as default language and disable “Start as Neutral”:

>>> defaultLanguage = 'pt-br'
>>> supportedLanguages = ['pt-br', 'en','de','no']
>>> lt.manage_setLanguageSettings(defaultLanguage,
...                              supportedLanguages,
...                              setUseCombinedLanguageCodes=True,
...                              startNeutral=False)

After setting portal_languages to allow combined language codes we should get a large number of languages from the vocabulary, but it doesn’t happen as we have the same results:

>>> foo = portal.foo
>>> languageField = foo.getField('language')
>>> languagesCombined = getattr(foo,defaultVocabulary)()
>>> languages == languagesCombined
True

So, we now use our vocabulary method and see we will have the complete language list:

>>> foo = portal.foo
>>> languageField = foo.getField('language')
>>> newVocabulary = 'languagesVoc'
>>> languagesCombined = getattr(foo,newVocabulary)()
>>> languages == languagesCombined
False
>>> 'pt-br' in languagesCombined
True

And if we go back to use only simple language codes

>>> defaultLanguage = 'en'
>>> supportedLanguages = ['en','de','no']
>>> lt.manage_setLanguageSettings(defaultLanguage,
...                              supportedLanguages,
...                              setUseCombinedLanguageCodes=False,
...                              startNeutral=False)

It must work as planned:

>>> foo = portal.foo
>>> languageField = foo.getField('language')
>>> newVocabulary = 'languagesVoc'
>>> languagesCombined = getattr(foo,newVocabulary)()
>>> 'pt-br' in languagesCombined
False

Installing the fix

If your using a buildout-based installation all you need to do is declare archetypes.languagebugfix in eggs and zcml sections for you instance.

Credits

Development and tests:

Efforts to research and fix this issue were sponsored by:

Changelog

1.0 - (2009-12-17)

  • fix issue 8907 by passing argument to getLanguageListing [erico_andrei]

Project details


Download files

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

Source Distribution

archetypes.languagebugfix-1.0.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

archetypes.languagebugfix-1.0-py2.4.egg (10.4 kB view details)

Uploaded Egg

File details

Details for the file archetypes.languagebugfix-1.0.tar.gz.

File metadata

File hashes

Hashes for archetypes.languagebugfix-1.0.tar.gz
Algorithm Hash digest
SHA256 d39432952171c229d96acc293948ae52475dfde91af17fcdbed85bd7d3ff8d17
MD5 1db470ca9a29024e929677102b3bd315
BLAKE2b-256 772904c2d45fd9c7242a8d276db27696ac38b9b8772a7bc90b023a78bc1ca371

See more details on using hashes here.

File details

Details for the file archetypes.languagebugfix-1.0-py2.4.egg.

File metadata

File hashes

Hashes for archetypes.languagebugfix-1.0-py2.4.egg
Algorithm Hash digest
SHA256 942b0a4c40ba379cb8ae9b8d1ec2e1721d43b70b1150a01ac24d75bab4f88668
MD5 a4bbf4a6d2a8661b836de6d2485dac78
BLAKE2b-256 0c344c246a55ab2d1466e9ff7fffe1524af31d0bf9a458fee92c80eeb4c593a0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page