2012-12-20 63 views
2

我有一個使用Zend_Translate PHP數組處理翻譯的多語言網站。它工作正常,但我試圖轉換爲使用gettext,因爲它提供了額外的功能。如何在gettext .po文件中指定有序變量?

不過,我還沒有發現的gettext相當於功能,我在PHP數組轉換喜歡的:N $位置確定example #4 of PHP sprintf)。

我找到了我想要什麼good example(注意如何變量的順序英語和中國是不同的):

#: 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文件中?

+0

這是我發現可能有幫助的提示:http://php.net/manual/en/function.sprintf.php#25243 – Ryan

回答

1

我的.po和的.mo文件的工作(和我的網頁上看起來不錯)後,我試着註釋掉這行PHP-mo.php的:

$x = str_replace('$', '\\$', $x);

實際上,我不知道爲什麼線路在那裏,但刪除它讓我感到緊張,我可能會引入我還沒有發現的錯誤。但至少它解決了我可以在看到的問題!

相關問題