У меня есть многоязычный сайт, который использует массивы Zend_Translate PHP для обработки переводов. Он отлично работает, но я пытаюсь преобразовать его в использование gettext, поскольку он предлагает дополнительные функции.
Тем не менее, я еще не обнаружил эквивалент gettext функции, которая мне понравилась в переводах массива PHP: n $ position specifier ( пример № 4 PHP sprintf ).
Я нашел хороший пример того, что я хочу (обратите внимание, как порядок переменных отличается на английском и китайском языках):
#: wp-admin/upload.php:96 #, php-format msgid "File %1$s of type %2$s is not allowed." msgstr "类型为%2$s的文件%1$s不允许被上传。"
Но я не работал для меня. Мой файл en / messages.po имеет следующее:
#, php-format msgid "Earn X cash" msgstr "%1$sEarn 1-30%% cash back%2$s, get money-saving coupons, and find the best price on every purchase at %3$s2,500+ stores%4$s."
и PHP это (который работал для стиля массива переводов, и я не думаю, что он должен измениться):
<?php echo $this->translate('Earn X cash', '<span class="earnCashBack">', '</span>', '<a href="/stores" class="numStores">', '</a>'); ?>
HTML выходит неправильно, вот так:
$sEarn 1-30% cash back$s, get money-saving coupons, and find the best price on every purchase at $s2,500+ stores$s.
Как мне отредактировать файл .po для этого? Или мне не следует использовать php-mo для компиляции .po в файл .mo?
Мои файлы .po и .mo работали (и моя веб-страница выглядит хорошо) после того, как я попытался прокомментировать эту строку php-mo.php:
$x = str_replace('$', '\\$', $x);
Я на самом деле не знаю, почему эта линия была там вообще, но ее удаление заставляет меня нервничать, что я могу ввести ошибки, которые я еще не обнаружил. Но, по крайней мере, это устранило проблемы, которые я видел!