Dan*_*iel 5 php translation magento
我的模块中的Magento翻译有点问题,因为它不起作用.正如所有教程所说的那样应该很容易.每个app/locale/[xx_XX]/ - 文件夹中都有一个.csv文件,在config.xml中也有一个条目.我的模块中有一个帮助器,它也在config.xml中注册,我可以使用它.毕竟,我清除了所有缓存文件并再次尝试.
我错了什么或忘记了什么?
代码中的调用:
$str = Mage::helper('mymodule')->__('mystring');
Run Code Online (Sandbox Code Playgroud)
在config.xml中(在前端,adminhtml和全局命名空间中尝试了这个块):
<translate>
<modules>
<Namespace_Module>
<files>
<default>Namespace_Module.csv</default>
</files>
</Namespace_Module>
</modules>
</translate>
Run Code Online (Sandbox Code Playgroud)
我记得在我的商店以开发模式运行时遇到翻译问题.它背后有一个基本原理,允许您更好地调试翻译或其他东西.
我认为具体的情况是,在开发模式中,遇到的第一个翻译被选中.在非开发中,仅搜索特定模块.
所以说,你有模块A和B,他们都有术语"翻译这个",在我的开发环境中,我从模块A得到了翻译,而在生产中,我是从模块B得到的.
不确定你有什么样的术语,但它可能与你的问题有关.
有两种可能出错的事情.首先是你的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;
}
Run Code Online (Sandbox Code Playgroud)
这是加载翻译文件的代码.使用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;
}
Run Code Online (Sandbox Code Playgroud)
清除缓存,重新加载页面.检查文件的调试语句.如果您看到它列出,请确保它实际存在于文件系统上,并且它是可读的.
如果它没有显示,则表示您的配置不正确.确保你config.xml看起来像这样
<config>
<frontend>
<translate>
<modules>
<Namespace_Module>
<files>
<default>Namespace_Module.csv</default>
</files>
</Namespace_Module>
</modules>
</translate>
</frontend>
</config>
Run Code Online (Sandbox Code Playgroud)
使用类似模块列表模块的东西来确保您的模块实际加载到系统中.
祝好运!
| 归档时间: |
|
| 查看次数: |
3141 次 |
| 最近记录: |