Make your UI translatable into many different languages.

If you’d like to contribute translations to Elgg, see the contributors’ guide.


Translations are stored in PHP files in the /languages directory of your plugin. Each file corresponds to a language. The format is /languages/{language-code}.php where {language-code} is the ISO 639-1 short code for the language. For example:


// mod/example/languages/en.php
return array(
  ‘example:text’ => ‘Some example text’,

The default language is “en” for English.

To change the wording of any phrase, provide a new mapping in your plugin’s {language}.php file for the associated key:


return array(
  ‘example:text’ => ‘This is an example’,


Unless you are overriding core’s or another plugin’s language strings, it is good practice for the language keys to start with your plugin name. For example: “yourplugin:success,” “yourplugin:title,” etc. This helps avoid conflicts with other language keys.

Server-side API

elgg_echo($key, $args, $language)

Output the translation of the key in the current language.


echo elgg_echo(‘example:text’);

It also supports variable replacement using sprintf syntax:

// ‘welcome’ => ‘Welcome to %s, %s!’
echo elgg_echo(‘welcome’, array(

To force which language should be used for translation, set the third parameter:

echo elgg_echo(‘welcome’, array(), ‘es’);

Javascript API

elgg.echo(key, args, language)

This function is the exact counterpart to elgg_echo in PHP.

Client-side translations are loaded asynchronously. Ensure translations are available by requiring the “elgg” AMD module:

define(function(require) {
        var elgg = require("elgg");


Translations are also available after the init, system JavaScript event.