我正在为我的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”也会出现相同的行为。
有关于此的任何想法吗?
答案 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"