我正在使用magento,并有一个问题,为什么我们使用$this__("一些文本")而不是简单的回声洋红色。 任何人都可以吗?
当你打电话时
echo $this->__("some text");
你可以从看Mage_Core_Helper_Abstract
开始
/**
* Translate
*
* @return string
*/
public function __()
{
$args = func_get_args();
$expr = new Mage_Core_Model_Translate_Expr(array_shift($args), $this->_getModuleName());
array_unshift($args, $expr);
return Mage::app()->getTranslator()->translate($args);
}
接下来是Mage_Core_Model_App
/**
* Retrieve translate object
*
* @return Mage_Core_Model_Translate
*/
public function getTranslator()
{
if (!$this->_translator) {
$this->_translator = Mage::getSingleton('core/translate');
}
return $this->_translator;
}
哪个交给Mage_Core_Model_Translate
/**
* Translate
*
* @param array $args
* @return string
*/
public function translate($args)
{
$text = array_shift($args);
if (is_string($text) && ''==$text
|| is_null($text)
|| is_bool($text) && false===$text
|| is_object($text) && ''==$text->getText()) {
return '';
}
if ($text instanceof Mage_Core_Model_Translate_Expr) {
$code = $text->getCode(self::SCOPE_SEPARATOR);
$module = $text->getModule();
$text = $text->getText();
$translated = $this->_getTranslatedString($text, $code);
}
else {
if (!empty($_REQUEST['theme'])) {
$module = 'frontend/default/'.$_REQUEST['theme'];
} else {
$module = 'frontend/default/default';
}
$code = $module.self::SCOPE_SEPARATOR.$text;
$translated = $this->_getTranslatedString($text, $code);
}
//array_unshift($args, $translated);
//$result = @call_user_func_array('sprintf', $args);
$result = @vsprintf($translated, $args);
if ($result === false) {
$result = $translated;
}
if ($this->_translateInline && $this->getTranslateInline()) {
if (strpos($result, '{{{')===false || strpos($result, '}}}')===false || strpos($result, '}}{{')===false) {
$result = '{{{'.$result.'}}{{'.$translated.'}}{{'.$text.'}}{{'.$module.'}}}';
}
}
return $result;
}
返回结果文本。这是如何处理所有内容的快速演练,您应该查看类本身以获得更深入的理解。
简单来说,当你调用
echo $this->__('some text')
它看起来是一样的 CSV 文件中的文本位于
app>locale
或
app>design>frontend>YOUR_PACKAGE>YOUR_THEME_NAME>locale>translate.csv
文件如果存在相同的单词,则翻译一个单词
意味着它在多语言网站中非常有用
$this->__("Some text")
用于翻译目的