Magento:翻译文件中的单引号无效翻译

时间:2011-09-30 02:38:13

标签: magento translation

我正在尝试从Magento 1.5.x安装中翻译一些字符串,并且当有双引号时它可以正常工作,但我无法正确转义单引号。

"Hello, <strong>\'.Mage::getSingleton(\'customer/session\')->getCustomer()->getName().\'!</strong>","Hello, <strong>\'.Mage::getSingleton(\'customer/session\')->getCustomer()->getName().\'!</strong>","Ol&aacute;, <strong>\'.Mage::getSingleton(\'customer/session\')->getCustomer()->getName().\'!</strong>"

"<button class=""form-button"" onclick=""setLocation(\'%s\')"" type=""button""><span>Login or Register</span></button>","<button class=""form-button"" onclick=""setLocation(\'%s\')"" type=""button""><span>Login ou Cadastro</span></button>"

我按原样尝试了原始字符串,并使用反斜杠进行了转义。我已尝试使用反斜杠和双单引号转义已翻译的字符串。

我尝试搜索magento论坛,但发布此问题的唯一两个人没有回复。

4 个答案:

答案 0 :(得分:9)

当您在.phtml文件中使用反斜杠转义单引号时,需要从.csv文件中的转换字符串中删除反斜杠。

示例:

<?php echo $this->__('Click <a href="%s" onclick="this.target=\'_blank\'">here to print</a> a copy of your order confirmation.', $this->getPrintUrl())

应该是.csv文件:

"Click <a href=""%s"" onclick=""this.target='_blank'"">here to print</a> a copy of your order confirmation.", "Click <a href=""%s"" onclick=""this.target='_blank'"">here to print</a> a copy of your order confirmation."

没有反斜杠,否则字符串将无法翻译。像往常一样,.csv中的双引号必须使用另一个双引号进行转义。

Magento 1.7.0.2中的一些.csv翻译文件在单引号之前仍然有这些反斜杠,这是一个需要修复的小错误。

答案 1 :(得分:2)

试试这个

其他选项是您可以将错误消息放在双引号中

__(“请指定产品的选项。”);

在翻译文件中你可以通过简单的

来实现

Colum ONE | Colum Two
请指定产品的选项。 |翻译该文件

从翻译文件中删除\并从代码中删除单引号而不是单引号。

答案 2 :(得分:0)

事实证明,PHP中输出字符串的方式与Magento的翻译引擎不兼容。该修复程序包含PHP文件中的更改,而不是转换文件的语法。 PHP文件现在读取:

echo $this->__('Hello') . ', <strong>'.Mage::getSingleton('customer/session')->getCustomer()->getName().'!</strong>';

echo ('<button class="form-button" onclick="setLocation(\'' . $this->getUrl('customer/account/login') . '\')" type="button"><span>') . $this->__('Login or Register') . '</span></button>';

而不是将所有内容放在一个echo $this->__('String to be translated . phpcode. String to be translated . phpcode . etc . etc')

答案 3 :(得分:0)

你永远不应该将html放在翻译的字符串中。 Magento使用vsprintf(http://php.net/manual/en/function.vsprintf.php),因此可以很容易地将变量添加到这样的翻译中:

echo '<strong>'.$this->__('Hello %s!',Mage::getSingleton('customer/session')->getCustomer()->getName()).'</strong>';

通过这种方式,您可以在csv中轻松翻译:“Hello%s”,“Hola%s”