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

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

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

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

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

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

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

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

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

Это 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 /

 // Display a translated message echo __('Hello, world'); // With parameter replacement echo __('Hello, :user', array(':user' => $username)); 

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