Internationalisation

Rendre votre interface utilisateur traduisible dans de nombreuses langues différentes.

Si vous souhaitez contribuer à des traductions pour Elgg, consultez le guide des contributeurs guide.

La langue par défaut est en pour l’anglais. Actuellement, Elgg reviendra toujours à une traduction anglaise par défaut, même si la langue du site n’est pas l’anglais ; c’est un bug connu.

Aperçu

Les traductions sont stockées dans des fichiers PHP dans le répertoire /languages de votre plugin. Chaque fichier correspond à une langue. Le format est /languages/{language-code}.php{language-code} est le code court ISO 639-1 pour la langue. Par exemple :

<?php // mod/example/languages/en.php

return [
        'example:text' => 'Some example text',
];

Pour remplacer une traduction existante, incluez-la dans le fichier de traduction de votre plugin et assurez-vous que votre plugin est situé après sur la page Admin > Plugins :

<?php // mod/better_example/languages/en.php

return [
        'example:text' => 'Some better text!',
];

Note

A moins que vous ne remplaciez les chaînes linguistiques du noyau ou d’un autre plugin, c’est une bonne pratique pour les clefs de traduction de commencer par le nom de votre plugin. Par exemple : votreplugin:success, votreplugin:title, etc. Cela permet d’éviter les conflits avec d’autres clefs de traduction.

API côté serveur

elgg_echo($key, $args, $language)

Sortie de la traduction de la clef dans la langue actuelle.

Exemple :

echo elgg_echo('example:text');

Elle prend également en charge le remplacement de variables à l’aide de la syntaxe sprintf :

// 'welcome' => 'Welcome to %s, %s!'
echo elgg_echo('welcome', [
        elgg_get_config('sitename'),
        elgg_get_logged_in_user_entity()->name,
]);

Pour forcer la langue qui doit être utilisée pour la traduction, définissez le troisième paramètre :

echo elgg_echo('welcome', [], $user->language);

Pour tester d’abord si elgg_echo() peut trouver une traduction :

$key = 'key:that:might:not:exist';
if (!elgg_language_key_exists($key)) {
        $key = 'fallback:key';
}

echo elgg_echo($key);

Note

Certaines API permettent de créer des traductions pour de nouvelles clefs. Les traducteurs doivent toujours inclure une traduction anglaise comme solution de repli. Ceci fait de elgg_language_key_exists($key) un moyen fiable de prédire si elgg_echo($key) va réussir.

API Javascript

elgg.echo(key, args)

Cette fonction est équivalente à elgg_echo en PHP.

Les traductions côté client sont chargées de façon asynchrone. Assurez-vous que les traductions sont disponibles en exigeant le module AMD elgg :

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

        alert(elgg.echo('my_key'));
});

Les traductions sont également disponibles après l’événement JavaScript init, system.