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

简介:

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

Mage::helper('adminhtml')->__('-- Please select --') 

 

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

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

同样的原因,这里也是因为官方遗漏了这些词的处理,打开/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Product/Options/Type.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文件里的翻译项来做翻译了,效果如下

 

 

今天处理这个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里的代码

<options> <custom> <groups> <text translate="label" module="adminhtml"> <label>Text</label> <render>adminhtml/catalog_product_edit_tab_options_type_text</render> <types> <field translate="label" module="adminhtml"> <label>Field</label> </field> <area translate="label" module="adminhtml"> <label>Area</label> </area> </types> </text> <file translate="label" module="adminhtml"> <label>File</label> <render>adminhtml/catalog_product_edit_tab_options_type_file</render> <types> <file translate="label" module="adminhtml"> <label>File</label> </file> </types> </file> <select translate="label" module="adminhtml"> ………………………………………………………………………………………… 

目录
相关文章
|
1天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML解析器是浏览器内置的工具,用于将XML转换为JavaScript可操作的XML DOM对象。这个DOM包含遍历、修改XML节点的函数。首先,XML文档需加载到DOM中,通过XMLHttpRequest对象实现,如示例所示:根据浏览器类型创建XMLHTTP对象,打开并发送GET请求到服务器获取&quot;books.xml&quot;,然后将响应转化为DOM对象。
|
2天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML解析器是浏览器内置的工具,用于将XML转换为JavaScript可操作的XML DOM对象。通过DOM,可以进行节点的遍历、访问和修改。以下JS代码示例展示了如何加载XML文档&quot;books.xml&quot;:首先检查XMLHttpRequest支持,然后创建请求对象,打开并发送GET请求,最后将响应转化为DOM对象。
|
2天前
|
XML 移动开发 前端开发
基于若依的ruoyi-nbcio流程管理系统里修正仿钉钉流程部门主管与多实例转xml的bug
基于若依的ruoyi-nbcio流程管理系统里修正仿钉钉流程部门主管与多实例转xml的bug
|
3天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML解析器是浏览器内置工具,用于将XML转换为JavaScript可操作的XML DOM对象,允许遍历、修改节点。大多数现代浏览器支持这一功能。以下JS代码示例展示了如何加载XML文档&quot;books.xml&quot;
|
3天前
|
XML JavaScript Java
详解Java解析XML的四种方法
详解Java解析XML的四种方法
|
17天前
|
XML 存储 数据格式
探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
DTD(文档类型定义)用于定义XML文档的结构和合法元素、属性。它允许不同团体就数据交换标准达成一致,并用于验证XML数据的有效性。DTD可通过内部声明(在XML文档内)或外部声明(在单独文件中)来定义。内部声明示例显示了如何定义`note`元素及其子元素的结构,而外部声明则引用外部DTD文件。元素、属性、实体和PCDATA/CDATA是XML构建模块。DTD中,元素通过ELEMENT声明定义,属性通过ATTLIST声明定义,实体声明提供特殊字符或外部资源的快捷方式。
15 0
|
18天前
|
XML IDE Java
Spring_bean注解(xml解析)
Spring_bean注解(xml解析)
11 0
|
21天前
|
XML Java 数据库连接
Javaweb之Mybatis的XML配置文件的详细解析
Javaweb之Mybatis的XML配置文件的详细解析
18 0
|
2天前
PandasTA 源码解析(二十三)
PandasTA 源码解析(二十三)
8 0
|
2天前
PandasTA 源码解析(二十二)(3)
PandasTA 源码解析(二十二)
6 0

推荐镜像

更多