2011-09-30 76 views
2

我想从Magento 1.5.x安装中翻译一些字符串,并且在有双引号时工作正常,但我无法正确地转义单引号。Magento:翻译文件中的单引号无效翻译

"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论坛,但只发布两个关于这个问题的人没有得到答复。

+0

目前还不清楚你在这里问什么。这些字符串是否在phtml文件中? PHP文件作为字符串? –

+0

你把这些行作为例子看起来像来自csv语言文件(对于结构“英文字符串”,“葡萄牙语翻译”),但是你不能在那里使用php变量(又名'Mage :: getSingleton( )'。第二个看起来也很奇怪,你不需要翻译html元素(button,span)。正如Alan所说的,给我们更多关于什么是你在哪里以及你在做什么的信息 – OSdave

+0

它们只是字符串一个CSV文件,我应该另外使用一个更简单的例子(“Hello”,“Bonjour”),任何被magento回声并且位于引号内的东西都可以通过简单地出现在这个文件中来翻译 我知道翻译包括“'装运#%1 $ s |%3 $ s(%2 $ s)”,“Entrega#%1 $ s |%3 $ s(%2 $ s)”'尽管我有工作,没有在预翻译的文件中找到一个例子(上面的例子是我必须用于我自己的主题的附加翻译)变量es像'法师:: getSingleton()' – Gaia

回答

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')

2

试试这个

另一种选择是,你可以把错误信息在双引号

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

和翻译文件,你通过简单的这个

科拉姆ONE使其| Colum Two
请指定产品的选项。 |该文件的翻译

删除\从翻译文件和代码使它成为双引号而不是单引号。

+0

谢谢,我会尝试! – Gaia

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翻译文件在单引号之前仍然有这些反斜杠,这是需要修复的小错误。

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转换容易:“%s您好”,“HOLA%的”