PHP:Что делает __('Некоторый текст')?
Вопрос
Читая о Шаблоны Kohana и увидел то, чего никогда раньше не видел:
$this->template->title = __('Welcome To Acme Widgets');
Что делает __('Text')
подлый?Что это?Что он делает?
Решение
В Kohana (версия 3) функция определена в система/base.php и является удобной функцией, помогающей (как уже упоминалось в других ответах) интернационализации.Вы предоставляете строку (необязательно с некоторыми заполнителями для замены значений в готовый текст), которая затем интерпретируется и, при необходимости, возвращается перевод.
Вопреки предположениям в других ответах, здесь не используется получить текст.
Самый простой пример: (эта конкретная строка уже переведена на английский, испанский и французский языки в Kohana):
// 1. In your bootstrap.php somewhere below the Kohana::init line
I18n::lang('fr');
// 2. In a view
echo __("Hello, world!"); // Bonjour, monde!
Другие советы
Двойной '__' используется для локализации в CakePHP (и, возможно, в других фреймворках).
Это string gettext ( string $message )
: http://php.net/manual/en/function.gettext.php
Возвращает переведенную строку, если она найдена в таблице перевода, или отправленное сообщение, если не найдено.
__() - это просто псевдоним для него.Итак __("some text")
эквивалентно gettext("some text")
Редактировать: На самом деле, если это два символа подчеркивания, то это не 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/
// Display a translated message
echo __('Hello, world');
// With parameter replacement
echo __('Hello, :user', array(':user' => $username));
Видеть http://kohanaframework.org/3.2/guide/api/I18n для получения подробной информации.
Это означает, что кто-то создал функцию с именем __ (это два символа подчеркивания рядом друг с другом).
Я предполагаю, что это определено где-то в документации Kohana.