web-dev-qa-db-fra.com

PHP: Que fait __ ('Certains textes')?

Lire sur modèles Kohana et voir quelque chose que je n'ai jamais vu auparavant:

$this->template->title = __('Welcome To Acme Widgets');

Que signifie __('Text')? Qu'Est-ce que c'est? Qu'est ce que ça fait?

66
Svish

Dans Kohana (version 3), la fonction est définie dans system/base.php et est une fonction de commodité pour faciliter (comme les autres réponses l'ont mentionné) l'internationalisation. Vous fournissez une chaîne (avec, éventuellement, des espaces réservés pour remplacer des valeurs dans le texte fini) qui est ensuite interprétée et, si nécessaire, une traduction est renvoyée.

Contrairement aux hypothèses des autres réponses, cela n'utilise pas gettext .

Un exemple très basique serait (cette chaîne particulière est déjà traduite en anglais, espagnol et français en Kohana):

// 1. In your bootstrap.php somewhere below the Kohana::init line
I18n::lang('fr');

// 2. In a view
echo __("Hello, world!"); // Bonjour, monde!
41
salathe

Le double '__' est utilisé pour la localisation dans CakePHP (et d'autres frameworks possibles)

http://book.cakephp.org/view/163/Localization-in-CakePHP

13
Vals

C'est string gettext ( string $message ): http://php.net/manual/en/function.gettext.php

Renvoie une chaîne traduite si une est trouvée dans la table de traduction, ou le message soumis s'il n'est pas trouvé.

Le __ () n'est qu'un alias pour cela. Donc __("some text") est équivalent à gettext("some text")

edit: En fait, si c'est deux traits de soulignement, ce n'est pas gettext (). L'alias de gettext () est un trait de soulignement.

Deuxième édition: Il semble que __ () pourrait être un autre alias pour gettext (). Avec une signification légèrement différente de _ (). Voir ici: http://groups.google.com/group/cake-php/browse_thread/thread/9f501e31a4d4130d?pli=1

Troisième et dernière modification: Voici un article l'expliquant plus en détail. Il semble que ce ne soit pas une fonction intégrée, mais plutôt quelque chose qui est généralement ajouté dans de nombreux cadres. Il s'agit essentiellement d'un alias de gettext - il remplit la même fonction. Cependant, ce n'est pas un alias direct (je ne pense pas). Il est implémenté dans et est spécifique au cadre. Il recherche et renvoie une localisation ou une traduction de la chaîne qui lui est donnée. Pour plus d'informations, voir cet article de blog: http://www.eatmybusiness.com/food/2007/04/13/what-on-earth-does-a-double-underscore-then-parenthesis-mean- in-php -__/7 /

6
Daniel Bingham
// Display a translated message
echo __('Hello, world');

// With parameter replacement
echo __('Hello, :user', array(':user' => $username));

Voir http://kohanaframework.org/3.2/guide/api/I18n pour plus de détails.

6
Volshebnik

Cela signifie que quelqu'un a créé une fonction nommée __ (c'est deux traits de soulignement côte à côte.)

Je suppose que c'est défini quelque part dans la documentation de Kohana.

5
jmucchiello