Вопрос

Читая о Шаблоны 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 (и, возможно, в других фреймворках).

http://book.cakephp.org/view/163/Localization-in-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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top