对于Magento中的某些单词,使用自定义翻译文件进行翻译失败

时间:2012-05-22 14:48:25

标签: magento translation

我正在为我的Magento安装(版本1.6.2.0)开发自定义模块。我在config.xml中注册了模块的翻译文件,并开始添加德语翻译。该模块为Magento后端添加了一些新行为。

在做翻译的过程中,我注意到了Magento的一种奇怪行为。尽管模块的csv文件中提供了翻译,但Magento无法翻译某些单词。

当我将密钥更改为其他值时,翻译按预期工作,因此Magento似乎看到并读取了cvs文件。

目前我注意到“City”和“Store”键的这种行为。

csv文件的内容:

"City","Stadt"
"City1","Stadt"

我使用以下行来翻译字符串。

Mage::helper('mymodule')->__('City') // returns "City"

当我将密钥更改为“City1”时,每件事情都按预期工作。

  Mage::helper('mymodule')->__('City1') // returns "Stadt"

在此之后,我搜索了德语翻译csv文件(由德国Magento社区提供),以获取关键“城市”的翻译,并在“adminhtml模块”中找到了一个。

  Mage::helper('adminhtml')->__('City') // returns "Stadt"

所以这也按预期工作。

我不知道我做错了什么。正如我所说,字符串“Store”也会出现相同的行为。

有关于此的任何想法吗?

2 个答案:

答案 0 :(得分:8)

最后我解决了翻译问题。原因是config.xml中的配置错误。我通过调试Magento读取翻译文件的代码找到了它。当发生这种情况时,会有一个名为scope的参数,该参数从config.xml文件的一个XML元素中读取。

此元素通常应具有模块的名称,例如<MyCompany_MyModule>。在我配置翻译的教程中,这个XML元素名为<translations>,这是错误的。

我想这对于早期版本的Magento来说可能是正确的。让人难以发现的是,只有在其他模块的翻译文件中定义的键才会出现错误。仅在我的翻译文件中定义的键按预期工作。

正确的配置应如下所示。

<frontend>
   ...
    <translate>
        <modules>
            <MyCompany_MyModule>
                <files>
                    <default>MyCompany_MyModule.csv</default>
                </files>
            </MyCompany_MyModule>
        </modules>
    </translate>
  ...
</frontend>
<adminhtml>
  ...
    <translate>
        <modules>
            <MyCompany_MyModule>
                <files>
                    <default>MyCompany_MyModule.csv</default>
                </files>
            </MyCompany_MyModule>
        </modules>
    </translate>
    ...
 </adminhtml>

答案 1 :(得分:4)

很难说没有你手边的代码,但我的猜测是你的模块的翻译范围会因某种原因而丢失(无论出于何种原因)导致Magento回退。

Afaik,在Magento 1.6.2.0中,以下翻译文件定义了密钥City

/app/locale/<language>_<region>/Mage_Checkout.csv
/app/locale/<language>_<region>/Mage_Customer.csv
/app/locale/<language>_<region>/Mage_Persistent.csv
/app/locale/<language>_<region>/Mage_Sales.csv
/app/locale/<language>_<region>/Mage_Shipping.csv
/app/locale/<language>_<region>/Mage_XmlConnect.csv

我会尝试逐个更改这些City文件中.csv的翻译,以找出相关翻译的实际来源。

找到Magento后退的文件后,知道您需要覆盖哪个翻译范围,以强制翻译City

例如,如果您发现更改Mage_Shipping.csv中的翻译确实生效,那么您编辑您的翻译文件(My_Module.csv)以包含

"Mage_Shipping::City","Stadt"