2013-10-04 33 views
2

我正在嘗試使用Poedit來翻譯WordPress的主題。當我試着翻譯% comment串,我是否使用%翻譯或沒有,我得到這個錯誤:錯誤:msgstr在翻譯wordpress主題時不是一個有效的PHP

Error: 'msgstr' is not a valid PHP format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. 

該字符串的資源是線下:

<?php comments_number(__('0 comments' , 'hbthemes') , __('1 comment' , 'hbthemes'), __('% comments' , 'hbthemes')); ?> 

我看了看gettext的手冊但不明白什麼會造成這些錯誤。起初,我想知道一個%如何可以在一個格式字符串,但主題本身顯示評論正確計數。

編輯:如果我使用%%,而不是在翻譯%,錯誤依然存在,如果我改變它的PHP代碼中,我得到的評論數的兩倍,例如22而不是2

UPDATE:文檔here%將評論數進行更換,所以我認爲實際的問題是與poEdit的不是代碼。

+0

改爲嘗試'%%'。 –

+0

我編輯了問題並解釋了結果。 – Mehraban

回答

1

問題出在POEdit和使用另一個翻譯工具,我得到了我正在尋找的東西。

0

你究竟想要完成什麼?在我看來,你正在重新發明輪子,並在其上面做錯了方式。它認爲你應該使用sprintf(__('%d comments'),get_comments_number())並且它想強制你使它正確。你不應該這樣翻譯它。我不確定wordpress使用gettext本身。如果是,請使用ngettext('%d comment','%d comments',get_comments_number())。那樣的話,它就會有其他語言的正確形式,例如1,3和5之間的差異。

http://codex.wordpress.org/Function_Reference/_n 也許是這樣的:

​​

的問題是如何的WordPress已經這樣設計的,它不能被翻譯好。它應該幫助你,如果你手動刪除po文件中的這個字符串之前的#,php格式標誌。它不會嘗試驗證它不是printf格式的sprintf格式。

+0

我只是想翻譯'__('%comments','hbthemes')'。我想如果我想按照你所說的去做,我需要添加'_n()'到目錄函數。我目前無法嘗試,但我會和我分享結果。 – Mehraban

+0

我試過了,它打印出'2d評論'而不是'2評論'。也許我需要看一下'get_comments_number()'。 – Mehraban