我正在尝试从Magento 1.5.x安装中翻译一些字符串,并且当有双引号时它可以正常工作,但我无法正确转义单引号。
"Hello, <strong>\'.Mage::getSingleton(\'customer/session\')->getCustomer()->getName().\'!</strong>","Hello, <strong>\'.Mage::getSingleton(\'customer/session\')->getCustomer()->getName().\'!</strong>","Olá, <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论坛,但发布此问题的唯一两个人没有回复。
答案 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”