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.

La langue par défaut est en pour l’anglais. Elgg utilise un système de secours pour les langues :

  1. La langue de l’utilisateur

  2. La langue du site

  3. Anglais

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 de traduction 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 : yourplugin:success, yourplugin:title, etc. Cela aide à éviter les conflits avec d’autres clefs de traduction.

API côté serveur

elgg_echo($key, $args, $language)

Génère et renvoie la traduction de la clef dans la langue actuelle.

Exemple :

echo elgg_echo('example:text');

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

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

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

i18n.echo(key, args)

Cette fonction est équivalente à elgg_echo en PHP.

Client-side translations are loaded asynchronously. Ensure translations are available by requiring the « elgg/i18n » module:

import i18n from 'elgg/i18n';

alert(i18n.echo('my_key'));