Multilingual Support in Elgg
This is description of i18n+l10n subsystem, currently missing in Elgg.
A multilingual social netwrok should be available on any amount of languages. We are distinguishing two types of multilingual information on a website: interface and content. So any page may be viewed using any combinations of interface and content languages - they are independent in general case, but switching interface language for example, most likely should switch content language too.
This is l10n (LocalizatioN) sybsystem which is partially implemented in Elgg via translation files. The missing parts are: language (auto) negotiation, language selection and manual language switching.
This is i18n (InternationalizatioN) subsystem and it is totally missed in Elgg.
Every entity on a website must be either assigned to the specific language or stay language neutral. So, any entity editing form must contain language selector drop down box with the list of available languages. The default value for the box is current user's language.
Any enity must be translatable to any or all from available languages. Translated entities are stored in database separately just like any other entity but they are linked to the original entity.
When a language was not yet selected the default behavior is to switch to browser's prefered user language.
There must be several ways to select language via URL:
1) Domain based selection.
Examples: ru.example.com, fr.example.com etc
2) Path prefix selection.
Examples: example.com/ru/article.html, example.com/fr/article.html etc
More variants are welcome.
There must a block with the list of all avaiable/allowed languages. Every language in the list is a link. Clicking on the corresponding link should switch interface langauge, which in its turn should swtich content langauge.
When viewing a page on a specific language i18n should filter out entities which languages are not in the list of user prefered content langauges. This affects any listing functions.
Multilingual website should allow a user to setup his prefered languages on the settings page. There are two groups of options: Prefered interface langauge and Prefered content langauges.
Both settings are set to Automatic by default. Automatic behaviour works in the following way:
1) Interface language is just current user's language, which is selected using either browser settings, or via URL or via Manual Language Switcher.
2) Content langauges list by default contain two languages: English and current Interface Language.
If Prefered interface language is set to some specific value, then interface language can not be changed using Language Selector. Clicking on language switching link doesn't change interface language at all and only affects content language.
Prefered content langauges list contains (required) English and any amount of other available languages which user selects.
Any entity can be translated on its editing page. Visually there must be an area with the list of available languages. Each language in the list is the link to the entity's translation editing form. If a translation to the specific language doesn't exist, then the clone of current entity is created.
To simplify batch translation and to enhance management of translated content, there must be a special page which allows to list all multilingual entities, see which needs translation etc.
Actually, see Drupal's i18n subsystem for reference.
Contact information is in my profile.
info@elgg.org
Security issues should be reported to security@elgg.org!
©2014 the Elgg Foundation
Elgg is a registered trademark of Thematic Networks.
Cover image by RaĆ¼l Utrera is used under Creative Commons license.
Icons by Flaticon and FontAwesome.
- Mike Zacher (vazco)@vazco
Mike Zacher (vazco) - 0 likes
You must log in to post replies.Artoim, we already did most of the tasks you mentioned for custom content on our client pages, you can see challengesd.eu for reference. It was an awfull lot of work, but we finally figured out a system which is suitable for Elgg. It don't implement every point as you described, but the expected results are the same. Custom content types have full translation, while other contents have language flags. User can decide which content he wants to display.
If you want to know more about this system, please contact me at info@elggdev.com.