Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Introduction

LinguaPlone aims to be the multilingual/translation solution for Plone, and achieves this by being as transparent as possible and by minimizing the impact for existing applications and Plone itself.

It utilizes Archetypes references to do the translation, and all content is left intact both on install and uninstall - thus, it will not disrupt your content structure in any way. It also works with WebDAV and FTP.

LinguaPlone doesn’t require a particular hierarchy of content, and will work with any layout of your content space.

Some benefits of LinguaPlone

  • Totally transparent, install-and-go.

  • Each translation is a discrete object, and can be workflowed individually.

  • This also means that it works with WebDAV and FTP.

  • Translations are kept track of using AT references.

  • You can multilingual-enable your types without affecting their operation outside LinguaPlone.

  • Even if you uninstall LinguaPlone after adding multilingual content, all your content will be intact and will work as separate objects! The only thing that will be inactive is the references between the objects. If you re-install it, they will be back. It’s very non-intrusive.

  • Supporting multilingual capabilities is a 4 (!) line addition to your Archetypes class, and does not alter the functionality of the class when used outside LinguaPlone.

  • Fully integrated with ATContentTypes, so the basic content types are translatable.

  • Supports language-independent fields (example: dates, first/last names) for fields you want to be the same across translations, and updated in all languages if one of them changes.

  • Uses the notion of Canonical versions, so you can do interesting things with workflow, like invalidate all translations of a document when the master copy has changed.

Dependencies

Requires the following minimum versions:

Installation

Before installing LinguaPlone you need to install plone.browserlayer in your Plone site. It shows up as ‘’Local browser layer support’’ in the Plone ‘’Add-on Products’ control panel.

Frequently asked questions

I see no language flags and switching language does not work

This happens if the cookie language negotiation scheme is not enabled. Look at the portal_languages tool in the ZMI and check if Use cookie for manual override is enabled.

There is no option to select multiple languages in the languages control panel

This happens if plone.browserlayer is uninstalled. To correct this you need to install plone.browserlayer and then uninstall and reinstall LinguaPlone.

LinguaPlone refuses to install

Make sure you have ‘Local browser layer support’ installed first. Unless this is installed you can not install LinguaPlone.

LinguaPlone - quick demo instructions

LinguaPlone ships with a few example types that demonstrates the translation mechanism. It’s trivial to add this to your own classes (see the README), but to save you the hassle, you can try this simple experiment:

  • Make sure you have Plone 3.0.4 or newer installed.

  • Put LinguaPlone in your Products directory

  • (Re)start Zope

  • ‘Site Setup’ → ‘Add/Remove Products’, install LinguaPlone

For the demonstration to make sense, we need to define a list of languages:

  • Go to the Site Setup

  • Click ‘Language Settings’

  • Select 3-4 languages from the selection list. Note that the languages are listed in their native name, so the sorting might be a bit unexpected (Spanish is Espanol, for example)

  • Press ‘Save’

Now we have a few languages to play with, and can go back to the Plone interface. Notice how you now have flags indicating your selected languages under the print/sendto area.

We now want to add a simple type:

  • Add a ‘Page’.

  • After filling out the type with some content and clicking ‘Save’, you will see that this content type has a pulldown menu, ‘Translate into’.

  • Select a language you want to translate this document into.

  • Save this translation.

  • Try to switch languages by clicking the flags.

That’s a very simple use case for the multilingual types.

Developer Usage

You can test it by multilingual-enabling your existing AT content types (see instructions below), or by testing the simple included types. Don’t forget to select what languages should be available in ‘portal_languages’ in the ZMI. :)

Credits

LinguaPlone was donated to the Plone Foundation by Plone Solutions, March 2006.

Design and development –

“Plone Solutions”:http://www.plonesolutions.com (Alexander Limi, Dorneles Tremea, Geir Baekholt, Helge Tesdal, Stefan H. Holek)

Original design idea:

Object realms (Benjamin Saller, Kapil Thangavelu)

Funding and deployment, initial version:

Oxfam International

Additional funding/sponsorship:

Hitotsubashi University in Tokyo, Centre for New European studies (Jonathan Lewis)

Funding Plone 2.0.x compatibility:

Zope Japan Corporation (Takeshi Yamamoto)

Also many thanks to

Simon Eisenmann:

For doing the hard job of the first implementations (I18NLayer) we had to learn from before doing this.

Learning Lab Denmark:

For contributing and sponsoring the experience needed to build a multilingual solution.

Nate Aune:

For always pushing for the better solution and making us realise LinguaPlone had to be built.

Jodok Batlogg:

For extensive testing, deploying and feedback.

Sasha Vincic:

For testing and expanding and making cool new stuff happen with LinguaPlone, XLIFF import/export in particular.

Implementation details

Architecture

LinguaPlone can only be used with Archetypes based content types. It provides a I18NBaseObject class that implements a ITranslatable interface that handles the translation linking. LinguaPlone provides base classes that inherits from I18NBaseObject and the regular AT base classes.

Language independent fields

Language independent fields are looked up from the canonical (original) translation.

The value is also stored on each translated object so every object has every attribute in case it is moved out of a translation context or some attributes (like start and end on Events) are referenced directly.

Language independence is set in the AT schema definition. Only AT based content types can have language independent fields.

Language lookup

The language tool returns a list of languages to look for. If there is no fallback, there will be only one element in the list.

Enable multilingual support in your content types

At the top, instead of from Products.Archetypes.public import *, you add:

try:
    from Products.LinguaPlone.public import *
except ImportError:
    # No multilingual support
    from Products.Archetypes.public import *

For the fields that are language independent, you add ‘languageIndependent=1’ in the schema definition.

License

GNU General Public License, version 2.1

Release files for Products.LinguaPlone 2.1beta1

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

Source distribution (sdist)

Source distribution for Products.LinguaPlone 2.1beta1
File Size Uploaded
Products.LinguaPlone-2.1beta1.tar.gz 86.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Products.LinguaPlone 2.1beta1
File Interpreter ABI Platform
Products.LinguaPlone-2.1beta1-py2.4.egg Legacy Egg format - - Details

Total release size: 298.5 kB

Release files / Products.LinguaPlone-2.1beta1.tar.gz

Download URL Products.LinguaPlone-2.1beta1.tar.gz
Size 86.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d83a321c497899bfef05cb16d844653f7c93c0e6ebbd818cf7fde0fbc80979c3
BLAKE2b-256 checksum
How to use checksums
18690d255e60c12d66099be1253154cdb5e1ac16efa57f64ad5672f977dbfc42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / Products.LinguaPlone-2.1beta1-py2.4.egg

Download URL Products.LinguaPlone-2.1beta1-py2.4.egg
Size 211.9 kB
Tags Egg
SHA-256 checksum
How to use checksums
c7f58a7e4632ce5dd13251e4c3ce2a2c372918350ad31aeecfa61c7e4ee5df44
BLAKE2b-256 checksum
How to use checksums
0ffc9cda3d601770effc20d9b5ef4230f9aaeda71c80133d6eeb28c5c7804d4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

4.3.0

1 release file

4.2.1

1 release file

4.2

1 release file

4.1.8

1 release file

4.1.7

1 release file

4.1.6

1 release file

4.1.5

1 release file

4.1.4

1 release file

4.1.3

1 release file

4.1.2

1 release file

4.1.1

1 release file

4.1

1 release file

4.0.4

1 release file

4.0.3

1 release file

4.0.2

1 release file

4.0.1

1 release file

4.0

1 release file

3.2

1 release file

3.1

1 release file

3.0.1

1 release file

3.0

1 release file

2.4.1

1 release file

2.4

1 release file

2.3

1 release file

2.2

1 release file

2.1.1

2 release files

2.1

2 release files

This release

2.1beta1 This release

2 release files

2.0

2 release files

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