Чтение о шаблонах Kohana и увидел то, что я никогда раньше не видел:
$this->template->title = __('Welcome To Acme Widgets');
Что означает __('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 (и возможных других фреймокур)
Это означает, что кто-то создал функцию с именем __ (Это два подчеркивания рядом друг с другом.)
Я предполагаю, что он определен где-то в документации Kohana.
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/
// Display a translated message
echo __('Hello, world');
// With parameter replacement
echo __('Hello, :user', array(':user' => $username));
Подробнее см. http://kohanaframework.org/3.2/guide/api/I18n.