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 TrueSo, 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 TrueAnd 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:
Simples Consultoria (products at simplesconsultoria dot com dot br)
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for archetypes.languagebugfix-1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d39432952171c229d96acc293948ae52475dfde91af17fcdbed85bd7d3ff8d17 |
|
MD5 | 1db470ca9a29024e929677102b3bd315 |
|
BLAKE2b-256 | 772904c2d45fd9c7242a8d276db27696ac38b9b8772a7bc90b023a78bc1ca371 |
Hashes for archetypes.languagebugfix-1.0-py2.4.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 942b0a4c40ba379cb8ae9b8d1ec2e1721d43b70b1150a01ac24d75bab4f88668 |
|
MD5 | a4bbf4a6d2a8661b836de6d2485dac78 |
|
BLAKE2b-256 | 0c344c246a55ab2d1466e9ff7fffe1524af31d0bf9a458fee92c80eeb4c593a0 |