For those who are not familiar with RTL, it is the mode used for languages that are written from right to left - in Plone's case these languages are Arabic, Hebrew and Persian.
To make Plone as native as possible for RTL languages, the entire user interface has to be mirrored along the vertical axis.
This is how it looks like (click the image for full-screen view):
So what is happening in this image?
1. When you load a page with a left-to-right language, Plone looks the way it usually does.
2. We click the Iran flag, and get:
- Persian translation of Plone in the UI
- A mirrored Plone, using only CSS
- All text is running from right to left
- Flipped images for those images that are directional
This is totally transparent to the user, and Just Works. In addition, it speaks volumes about the flexibility and power of Plone's HTML and CSS when we can add something like this in less than a day.
Want to test it?
You will need the following to test the RTL branch of Plone:
- A recent checkout of 'CMFPlone' from the 'rtl-fixes-2_0' branch
- A recent checkout of 'PlacelessTranslationService' to get the new RTL header parsing of .po files
- A recent checkout of the translation files for RTL languages - the important thing is that they have '"X-Is-RTL: yes\n"' in the header
The intention is to merge this to the main Plone development branches as soon as it has undergone some testing.
I would like to thank the RTL people for finally getting me to implement this, especially Mohsen Moeeni (from Iran, Persian translator for Plone) and Mohammed Elzubeir (from UAE, one of the Arabic translators) - and to Christian "Tiran" Heimes for the necessary changes to PTS. Thanks for the hard work, guidance and persistence. :)
-- Alexander Limi, "Plone Solutions":http://www.plonesolutions.com