PHP: Что делает __ ('Some text')?

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

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

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

Ответ 1

В 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!

Ответ 3

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

Я предполагаю, что он определен где-то в документации Kohana.

Ответ 4

It 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

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

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

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