`
shuishui8310
  • 浏览: 150428 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

magento -- 修正又一个翻译上的bug,同时了解了下Magento解析xml的方式

阅读更多

Magento在翻译上的bug可谓多入牛毛,有些地方你会发现无论你如何在CSV文件里配置翻译项,英文的依然是英文。Magento是用helper类的魔术方法来做多语言的处理,比如

而无法翻译的地方大多数就是因为需要翻得词没有用Mage::helper('XXX')->__()来做处理,或者说Magento官方遗漏了。对于非英语国家来说,想要完整的翻译完Magento就得把这些地方都给找出来,一个个处理掉。

今天处理掉的一个地方是后台产品页的自定义选项,给产品添加自定义选项需要先选择输入类型,如文本框或下拉框,而可选择的类型都是英文显示,这些词在Adminhtml.csv中都有翻译项,不过明显不起作用。

同样的原因,这里也是因为官方遗漏了这些词的处理,打开\app\code\core\Mage\Adminhtml\Model\System\Config\Source\Product\Options\Type.php,找到如下代码

这里的两个'label'就是可选输入类型的标签,可以看到赋值的时候并没有使用Mage::helper('XXX')->__(),加上处理的代码,修改后的如下

这样这里就会去读取csv文件里的翻译项来做翻译了,效果如下

今天处理这个bug的时候还有意外收获,之前一直没注意过Magento是怎么在处理解析xml文件的,因为上面的各种类型是从config.xml里读取的,所以看到了Magento解析xml的过程。

Mage::getConfig()->getNode()这个函数可以根据节点来获得节点下的内容,参数就是你要解析的节点,如'global/catalog/product/options/custom/groups',根据这个参数,Magento就能准确的找到xml文件里你要的内容,比如'global/catalog/product/options/custom/groups'这个对应的就是\app\code\core\Mage\Catalog\etc\config.xml里的代码

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics