website logo
Auteur
avatar
Nicolas2

Forum » » Road map développement » » traduction


Posté : 5 mars 2021 à 20:29 icone du post

Example 2 pour module geoloc.



function geoloc_translate($phrase, $args) {
// le tableau des traduction
$messages = array(
'un' => 'juste un',
'deux' => 'pourquoi deux',
'trois' => 'je suis le 3 et je gagne',
'module {0}' => 'ce module {0} est vraiment génial',
);

// ont compte le nombre d'argument et on créer un tableau de paramètre key=>value
$params = (func_num_args() === 2) ? (array)$args : array_slice(func_get_args(), 1);

// ont regarde si la phrase existe dans le tableau messages
// si elle existe alors on la recupere
// sinon ont affiche la phrase original
if (array_key_exists($phrase, $messages)) {
$message = $messages[$phrase];
} else {
$message = $phrase;
}

// si params est un tableau
if (is_array($params)) {
// ont recupère la locale
$locale = language_iso(1,0,0);
// ont formate la phrase avec les arguments
$message = \MessageFormatter::formatMessage($locale, $message, $params);
}

// ont retourne la pharse
return (htmlentities($message,ENT_QUOTES|ENT_SUBSTITUTE|ENT_HTML401,cur_charset));
}


appel :

__m('geoloc', 'test du module geoloc pour voir, {0}', 'good');
__m('geoloc', 'un');
__m('geoloc', 'deux');
__m('geoloc', 'trois');
__m('geoloc', 'module {0}', 'geoloc');

résultat :

test du module geoloc pour voir, good
juste un
pourquoi deux
je suis le 3 et je gagne
ce module geoloc est vraiment génial

le tableau message regroupes l'intégralité des translation du module et permet d'éviter le switch, une multitude de case et breack, beaucoup plus rapide a écrire.
 Message édité par : Nicolas2 / 05-03-2021 20:58
 Message édité par : Nicolas2 / 05-03-2021 21:00

Cet article provient de Labo NPDS 2015-2024
https://labo.infocapagde.com/viewtopic.php?topic=1480&forum=21