了解了下Magento解析xml的方式

Magento在翻译上的bug可谓多入牛毛,有些地方你会发现无论你如何在CSV文件里配置翻译项,英文的依然是英文。Magento是用he lper类的魔术方法来做多语言的处理,比如
  Mage::helper('adminhtml')->__('-- Please select --')
  而无法翻译的地方大多数就是因为需要翻得词没 有用Mage::helper('XXX')->__()来 做处理,或者说Magento官方遗漏了。对于非 英语国家来说,想要完整的翻 译完Magento就得把这些地方都给找出来,一个个处理掉。
  今天处理掉的一个地方是后台产品页的自定义选项,给产品添加自定义选项需要先选择输入类型,如文本框或下拉框,而可选择的类型都是英文显示,这些词在Adminhtml.csv中都有翻译项,不过明显不起作用。 Magento <wbr>- <wbr>magento <wbr>-- <wbr>修正又一个翻译上的bug,同时了解了下Magento解析xml的方式   同样的原因,这里也是因为官方遗漏了这些词的处理,打开\app\code\core\Mage\Adminhtml\Model\System\Config\Source\Product\Options\T ype.php,找到如下代码
  foreach (Mage::getConfig()->getNode($typesPath)->children() as $type) {
                        $labelPath = self::PRODUCT_OPTIONS_GROUPS_PATH . '/' . $group->getName() . '/types/' . $type->getName() . '/label';
                        $types[] = array(
                              'label' => (string) Mage::getConfig()->getNode($labelPath),
                              'value' => $type->getName()
                        );
                  }
                  $labelPath = self::PRODUCT_OPTIONS_GROUPS_PATH . '/' . $group->getName() . '/label';
                  $groups[] = array(
                        'label' => (string) Mage::getConfig()->getNode($labelPath),
                        'value' => $types
                  );
  这里的两个'label'就是可选输入类型的标签,可以看到赋值的时候并没有使用Mage::helper('XXX')->__(),加上处理的代码,修改后的如下
  foreach (Mage::getConfig()->getNode($typesPath)->children() as $type) {
                        $labelPath = self::PRODUCT_OPTIONS_GROUPS_PATH . '/' . $group->getName() . '/types/' . $type->getName() . '/label';
                        $types[] = array(
                              'label' => Mage::helper('adminhtml')->__((string) Mage::getConfig()->getNode($labelPath)),
                              'value' => $type->getName()
                        );
                  }
                  $labelPath = self::PRODUCT_OPTIONS_GROUPS_PATH . '/' . $group->getName() . '/label';
                  $groups[] = array(
                        'label' => Mage::helper('adminhtml')->__((string) Mage::getConfig()->getNode($labelPath)),
                        'value' => $types
                  );
  这样这里就会去读取csv文件里的翻译项来做翻译了,效果如下 Magento <wbr>- <wbr>magento <wbr>-- <wbr>修正又一个翻译上的bug,同时了解了下Magento解析xml的方式   今天处理这个bug的时候还有意外收获,之前一直没注意过Magento是怎么在处 理解析xml文件的,因为上面的各种类型是从config.xml里读取的,所以看到了Magento解析xml的过程。
  const PRODUCT_OPTIONS_GROUPS_ PATH = 'global/catalog/product/options/custom/groups';
foreach (Mage::getConfig() ->getNode(self::PRODUCT_OPTIONS_GROUPS_PATH)->children() as $group) {
…………………………………………
              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里的代码                                                Text
                                                adminhtml/catalog_product_edit_tab_options_type_text                                                           Field                                                            Area                                               File
                                                adminhtml/catalog_product_edit_tab_options_type_file                                                           File………………………………………………………………………………………… 文章来源:http://blog.csdn.net/shuishui8310/archive/2010/11/11/6003808.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值