78

阅读Kohana 模板并看到一些我以前从未见过的东西:

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

是什么__('Text')意思?它是什么?它有什么作用?

4

5 回答 5

51

在 Kohana(版本 3)中,该函数在system/base.php中定义,是一个方便的函数,可以帮助(正如其他答案所提到的)国际化。您提供一个字符串(可选地,带有一些占位符以将值替换为完成的文本),然后对其进行解释,如果需要,返回翻译。

与其他答案中的假设相反,这不使用gettext

一个非常基本的例子是(这个特定的字符串已经在 Kohana 中翻译成英语、西班牙语和法语):

// 1. In your bootstrap.php somewhere below the Kohana::init line
I18n::lang('fr');

// 2. In a view
echo __("Hello, world!"); // Bonjour, monde!
于 2010-03-11T19:12:56.953 回答
14

双 '__' 用于 CakePHP(以及可能的其他框架)中的本地化

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

于 2010-03-11T17:31:00.120 回答
6

这意味着有人创建了一个名为 __ 的函数(这是两个并排的下划线。)

我的猜测是它在 Kohana 文档中的某个地方定义。

于 2010-03-11T17:27:51.950 回答
6

它是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/

于 2010-03-11T17:28:07.543 回答
6
// Display a translated message
echo __('Hello, world');

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

有关详细信息,请参阅http://kohanaframework.org/3.2/guide/api/I18n

于 2011-10-25T13:56:34.607 回答