我的模块中的Magento翻译有点问题,因为它不起作用。正如所有教程所说的那样应该很容易。每个app / locale / [xx_XX] / - 文件夹中都有一个.csv文件,在config.xml中也有一个条目。我的模块中有一个帮助器,它也在config.xml中注册,我可以使用它。毕竟,我清除了所有缓存文件并再次尝试。
我错了什么或忘记了什么?
代码中的电话:
$str = Mage::helper('mymodule')->__('mystring');
在config.xml中(在前端,adminhtml和全局命名空间中尝试了这个块):
<translate>
<modules>
<Namespace_Module>
<files>
<default>Namespace_Module.csv</default>
</files>
</Namespace_Module>
</modules>
</translate>
答案 0 :(得分:5)
我记得在我的商店以开发模式运行时遇到翻译问题。它背后有一个基本原理,允许您更好地调试翻译或其他东西。
我认为具体案例是在开发模式下,遇到了第一个遇到的翻译。在非开发中,仅搜索特定模块。
所以说,你有模块A和B,他们都有术语“翻译这个”,在我的开发环境中,我从模块A得到了翻译,而在生产中,我是从模块B得到的。
不确定您拥有哪种条款,但它可能与您的问题有关。
答案 1 :(得分:5)
有两种可能出错的事情。首先是你的config.xml
节点错了,Magento不知道要查找你的文件。第二个是你的节点正确,但Magento找不到你的文件,因为它位于错误的位置。
跳转到以下文件中的以下方法
#File: app/code/core/Mage/Core/Model/Translate.php
protected function _loadModuleTranslation($moduleName, $files, $forceReload=false)
{
foreach ($files as $file) {
$file = $this->_getModuleFilePath($moduleName, $file);
$this->_addData($this->_getFileData($file), $moduleName, $forceReload);
}
return $this;
}
这是加载翻译文件的代码。使用var_dump
或Mage::Log
添加一些临时调试。
protected function _loadModuleTranslation($moduleName, $files, $forceReload=false)
{
var_dump($moduleName);
foreach ($files as $file) {
var_dump('Start');
var_dump($file);
$file = $this->_getModuleFilePath($moduleName, $file);
var_dump($file);
$this->_addData($this->_getFileData($file), $moduleName, $forceReload);
var_dump('End');
}
return $this;
}
清除缓存,重新加载页面。检查文件的调试语句。如果您看到它列出,请确保它实际存在于文件系统中,并且它是可读的。
如果没有显示,则表示您的配置不正确。确保您的config.xml
看起来像这样
<config>
<frontend>
<translate>
<modules>
<Namespace_Module>
<files>
<default>Namespace_Module.csv</default>
</files>
</Namespace_Module>
</modules>
</translate>
</frontend>
</config>
使用类似Module List Module的内容来确保您的模块实际已加载到系统中。
祝你好运!答案 2 :(得分:1)
<translate>
<modules>
<Namespace_Module>
<files>
<Namespace_Module>Namespace_Module.csv</Namespace_Module>
</files>
</Namespace_Module>
</modules>
</translate>
测试一下。默认可以从另一个模块覆盖。
答案 3 :(得分:1)
您的Namespace_Module.csv应该包含双引号字符串,并且在转义中包含双引号...
"Translation String","Translated String"
"<a href=\"%s\">click here</a>","<a href=\"%s\">here clicked</a>"
单引号似乎是逻辑方法,意味着您不需要转义字符串中的双引号并提供更自然的字符串匹配,但单引号csv将被完全忽略 - 在此处丢失了一点时间。
请参阅Mage_Core.csv以供参考......