NC full i18n support in Core/Plugins [Urgent task]

Multilingual Support in Elgg

This is description of i18n+l10n subsystem, currently missing in Elgg.

Social Network Languages

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.

Interface Language

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.

Content Language

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.

Language Switching

Language Negotiation

When a language was not yet selected the default behavior is to switch to browser's prefered user language.

Language Selection via URL

There must be several ways to select language via URL:

1) Domain based selection.

Examples:, etc

2) Path prefix selection.

Examples:, etc

More variants are welcome.

Manual Language Switching (Language Selector)

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.

Content filtering

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.

User settings

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.

Content translation

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.

Drupal rocks

Actually, see Drupal's i18n subsystem for reference.  



Contact information is in my profile.



  • Artoim, we already did most of the tasks you mentioned for custom content on our client pages, you can see 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

Professional Services

Professional Services

Get / offer professional help on Elgg; like customization, design, development, setup, hosting... Illegal trades are not allowed.