Magento: одинарные кавычки в файлах перевода - PullRequest
2 голосов
/ 30 сентября 2011

Я пытаюсь перевести некоторые строки из установки 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 ]

9 голосов
/ 31 декабря 2012

Когда вы экранируете одиночную кавычку с обратной косой чертой в файле .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 должны быть экранированы другими двойными кавычками.

Некоторые файлы перевода .csv в Magento 1.7.0.2 все еще имеют эти обратные косые черты перед одинарными кавычками, что является незначительной ошибкой, которую необходимо исправить.

2 голосов
/ 16 марта 2012

Попробуйте это

Другой вариант заключается в том, что вы можете поместить сообщение об ошибке в двойные кавычки как

__ («Пожалуйста, укажите параметры продукта.»);

и в файле перевода вы делаете это просто:

Colum ONE | Colum Two
Пожалуйста, укажите опции продукта.|ПЕРЕВОД этого ФАЙЛА

удалить \ из файла перевода и из кода сделать ДВОЙНЫЕ ЦИТАТЫ вместо одинарной кавычки.

0 голосов
/ 09 апреля 2017

Вы никогда не должны помещать 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", "Привет% s"

0 голосов
/ 03 октября 2011

Оказывается, что способ вывода строк в 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')

...