【问题标题】:Magento: Single Quotes in Translation Files Void TranslationMagento:翻译文件中的单引号无效翻译
【发布时间】:2011-11-28 03:47:50
【问题描述】:

我正在尝试从 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 论坛,但只有两个发布有关此问题的人没有得到回复。

【问题讨论】:

  • 不清楚你在这里问什么。上面的那些字符串在 phtml 文件中吗? PHP 文件作为字符串?
  • 您作为示例的行看起来像是来自 csv 语言文件(对于结构“英语字符串”,“葡萄牙语翻译”),但是您不能在其中使用 php 变量(又名Mage::getSingleton()。第二个看起来也很奇怪,您不翻译 html 元素(按钮、跨度)。正如 Alan 所说,请向我们提供有关您在哪里以及您要做什么的更多信息
  • 它们只是 CSV 文件中的字符串。我应该另外使用一个更简单的例子(“Hello”,“Bonjour”)。任何由 magento 回显并在引号内的内容都可以通过简单地出现在此文件中来进行翻译。我知道包括"Shipment #%1$s | %3$s (%2$s)","Entrega #%1$s | %3$s (%2$s)" 之类的变量的翻译可以工作,尽管我在预翻译文件中没有找到一个示例(上面是我必须为我自己的主题使用的附加翻译)变量,例如Mage::getSingleton()

标签: magento translation


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试这个

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

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

    在翻译文件中,你可以通过简单的这个来完成

    一栏 | 第二栏
    请指定产品的选项。 |该文件的翻译

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

    【讨论】:

      【解决方案3】:

      事实证明,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-&gt;__('String to be translated . phpcode. String to be translated . phpcode . etc . etc')

      【讨论】:

        【解决方案4】:

        您永远不应该将 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”

        【讨论】:

          猜你喜欢
          • 2013-02-27
          • 2012-05-29
          • 2014-12-07
          • 2014-09-07
          • 1970-01-01
          • 2011-12-06
          • 1970-01-01
          • 2016-06-23
          相关资源
          最近更新 更多