PHP: Что делает __ («Некоторый текст»)? - PullRequest
65 голосов
/ 11 марта 2010

Читая о шаблонах Kohana и увидел то, чего я никогда не видел:

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

Что означает __('Text')?Что это?Что это делает?

Ответы [ 5 ]

40 голосов
/ 11 марта 2010

В Kohana (версия 3) эта функция определена в system / base.php и является удобной функцией для помощи (как уже упоминалось в других ответах) интернационализации. Вы предоставляете строку (с, необязательно, некоторыми заполнителями для подстановки значений в готовый текст), которая затем интерпретируется и, если требуется, возвращается перевод.

Вопреки предположениям в других ответах, здесь не используется gettext .

Очень простой пример (эта конкретная строка уже переведена на английский, испанский и французский языки в Кохане):

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

// 2. In a view
echo __("Hello, world!"); // Bonjour, monde!
13 голосов
/ 11 марта 2010

Двойной '__' используется для локализации в CakePHP (и, возможно, других платформах)

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

6 голосов
/ 25 октября 2011
// Display a translated message
echo __('Hello, world');

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

Подробнее см. http://kohanaframework.org/3.2/guide/api/I18n.

6 голосов
/ 11 марта 2010

Это string gettext ( string $message ): http://php.net/manual/en/function.gettext.php

Возвращает переведенную строку, если она найден в таблице перевода или отправленное сообщение, если не найдено.

__ () это просто псевдоним. Так что __("some text") эквивалентно gettext("some text")

edit: На самом деле, если это два подчеркивания, это не gettext (). Псевдоним для gettext () является одним подчеркиванием.

Второе редактирование: Похоже, __ () может быть другим псевдонимом для gettext (). С немного отличным значением от _ (). Смотрите здесь: http://groups.google.com/group/cake-php/browse_thread/thread/9f501e31a4d4130d?pli=1

Третье и последнее редактирование: Вот статья, объясняющая это более подробно. Похоже, это не встроенная функция, а то, что обычно добавляется во многие фреймворки. По сути, это псевдоним gettext - он выполняет ту же функцию. Тем не менее, это не прямой псевдоним (я не думаю). Он реализован и специфичен для фреймворка. Он ищет и возвращает локализацию или перевод заданной строки. Для получения дополнительной информации см. Этот пост в блоге: http://www.eatmybusiness.com/food/2007/04/13/what-on-earth-does-a-double-underscore-then-parenthesis-mean-in-php-__/7/

5 голосов
/ 11 марта 2010

Это означает, что кто-то создал функцию с именем __ (это два подчеркивания рядом друг с другом.)

Полагаю, это определено где-то в документации по Кохане.

...