53 votes

Double soulignement en PHP

Que signifient les doubles underscores dans ces lignes de code PHP?

$WPLD_Trans['Yes'] = __('Oui', $WPLD_Domain);
$WPLD_Trans['No'] = __('Non', $WPLD_Domain);

64voto

SimonJ Points 10072

Il semble que vous utilisez WordPress - wp-includes/l10n.php définit __ comme une fonction qui traduit une chaîne (similaire à gettext et son alias, _, mais avec un paramètre optionnel pour spécifier explicitement un domaine).

9 votes

Affreux, mais très pratique. En passant, php.net dit que toutes les fonctions commençant par __ (double trait de soulignement) sont réservées. On dirait qu'ils n'aiment pas le fait que WordPress et d'autres s'approprient leur territoire de méthodes magiques. us.php.net/manual/en/language.oop5.magic.php

0 votes

En fonction de cela, il semble que je puisse me débarrasser de cela si aucune traduction n'est nécessaire. Est-ce correct? Par exemple, $WPLD_Trans['Yes'] = 'Oui';

40voto

Mike B Points 18950

En termes stricts, cela ne signifie rien en PHP car ce n'est pas une fonction prédéfinie. Cependant, dans de nombreux frameworks, comme CakePHP, et d'autres bibliothèques, le double souligné est une fonction utilisée pour traduire des chaînes en fonction de la langue/locale préférée de l'utilisateur.

4 votes

Aucune idée. De manière déroutante, la version de __ de CakePHP se comporte complètement différemment de celle de Wordpress (CakePHP, par défaut, imprime la chaîne sauf si le deuxième paramètre est faux). Je parie que cela n'a jamais causé de confusion auparavant...

9voto

PaulH Points 2076

WordPress documente sa fonction __(), et fait partie de la technologie de localisation sur Travailler avec le cœur de WordPress - Traduire WordPress.

Il est difficile de trouver de la documentation car __(), __('') ou __("") ne sont pas très recherchables. Double souligné et parenthèses (crochets ronds) sont des mots-clés à utiliser.

7voto

jasondavis Points 11944

Comme mentionné, il est généralement utilisé pour traduire du texte entre les langues, mais en réalité il est utilisé dans le même contexte que tout appel de fonction.

testfunction();

n'est pas différent de

__();

28 votes

En réalité, testfunction() est très différente, car elle a un nom sensé. __ est complètement stupide comme nom de fonction.

2voto

knoopx Points 3607

Une implémentation similaire ou tierce basée sur GNU gettext est gettext():

Note : Vous pouvez utiliser le caractère de soulignement '_' comme alias pour cette fonction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X