Package: kotti_multilingual
Multilingual Sites withKotti.Kotti’s data model includes alanguageattribute on theContentclass,
from which all content types inherit.  However, this attribute is neither
exposed by Kotti’s UI, nor used in any other way.kotti_multilingualprovides a generic approach to build multilingual sites.Work in Progresskotti_multilingualis still in an early stage of development.  It is
neither feature complete nor can be considered API stable.  Things will change!FeaturesThe package contains a single content typeLanguageRootwhich is
supposed to be the container of all content in a specific language.  All
content that is created in (or moved into) such a subtree will be automatically
tagged with the language of the root.  This is done by subscribing to
Kotti’sObjectInsertandObjectUpdateevents.You can placeLanguageRootinstances wherever you want in your content
tree, but it is considered best practice to have a tree structure like this:- /            Document        language neutral
   - /en       LanguageRoot    English
   - /de       LanguageRoot    German
   - /nl       LanguageRoot    Dutch
   - /images   Document        language neutralSetupTo activate thekotti_multilingualadd-on in your Kotti site, you need to
add an entry to thekotti.configuratorssetting in your Paste Deploy config.
If you don’t have akotti.configuratorsoption, add one.  The added entry
should look like this:kotti.configurators = kotti_multilingual.kotti_configureYou can register an optionalkotti_multilingual.blacklistwith the list of the
type names not handled by kotti_multilingual.TestsThe test setup requires additional steps:$ virtualenv --no-site-packages .
$ source bin/activate
$ pip install -r requirements.txt
$ python setup.py develop
$ python setup.py devHow to launch tests:$ py.testChangelog0.2a3 (2015-04-27)Fixed 0.2a2 version (still wrong MANIFEST.in)0.2a2 (2015-04-27)Fixed MANIFEST.in file0.2a1 (2015-04-27)Maintain translation links between content items, with translation source
and targets.Add a translation dropdown UI for adding a translation of an item.Addedwidget.i10n_widget_factorydeferred widget.
Turns field into readonly mode if the context is a translation.This deferred widget is also compatible with add forms, you should bind anaddformproperty toTrueand the widget will be rendered as usual in edit mode.
You can do that adding aget_bind_datamethod on your add form.Added akotti_multilingual.blacklistsetting with a list of type names
not translatableChanged policy for translate action. Now the translated document is automatically
filled with the parent translation (enhanced usability since we don’t have the screen
splitted in two parts like LinguaPlone). This is possible thanks to a change in
sqla.py since we don’t set language independent attributes on translated documentsFixed translation of objects with not nullable fieldsAdded support for sqlalchemy’s association_proxyFixed intermittent problem with get_source (integrity error)0.1a3 - 2013-05-08RenameLanguageSectiontoLanguageRootto better fit Kotti’sINavigationRoot.  This implies a change in the DB schema for which no
automatic schema migration is available; you’ll have to rename the tablelanguage_sectionstolanguage_rootsyourself.Add some tests.0.1a2 - 2013-05-07Removed a lot of code that’s now replaced by Kotti’sINavigationRoot/TemplateAPI.navigation_root.  This greatly simplifies the setup ofkotti_multilingua.Depend on Kotti>=0.9a3dev (needed for the above).0.1a1 - 2013-05-06Initial release.