Читая о шаблонах 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.
Это 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 .