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

Flo*_*Flo 7 translation magento

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

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

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

目前我注意到"City"和"Store"键的这种行为.

csv文件的内容:

"City","Stadt"
"City1","Stadt"
Run Code Online (Sandbox Code Playgroud)

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

Mage::helper('mymodule')->__('City') // returns "City"
Run Code Online (Sandbox Code Playgroud)

当我将密钥更改为"City1"时,每个东西都按预期工作.

  Mage::helper('mymodule')->__('City1') // returns "Stadt"
Run Code Online (Sandbox Code Playgroud)

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

  Mage::helper('adminhtml')->__('City') // returns "Stadt"
Run Code Online (Sandbox Code Playgroud)

所以这也按预期工作.

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

有什么想法吗?

Flo*_*Flo 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>
Run Code Online (Sandbox Code Playgroud)