2015-02-09 174 views
0

我遇到了給定源的翻譯問題;問題與翻譯字符串和Poedit

<?php 
$this->messageAdd($this->_("Ett okänt fel uppstod när %0 skulle skapas!", $term2), "error"); 
return $this->setResultCode(self::RESULT_ERROR); 
?> 

如果我不是盲目的,這是一個完全正常的字符串,我有很多都在其他的源文件,但這個特定的一個原因在po文件中的這些線路;

#: ../../../../path/to/source_file.php:552 
#, php-format 
msgid "Ett okänt fel uppstod när %0 skulle skapas!" 
msgstr "An unknown error occurred while creating the %0!" 

與錯誤

Error: 'msgstr' is not a valid PHP format string, unlike 'msgid'. Reason: In the directive number 1, the character 'w' is not a valid conversation specifier.

問題是什麼,爲什麼它只有這個字符串會導致錯誤?如果我從源文件中刪除字符串,則在poedit中不會生成錯誤。

編輯#1;經過進一步研究,我發現this issue,發現在源文件中的翻譯字符串之前添加註釋/* xgettext:no-php-format */解決了問題。這將是很好,但要知道爲什麼這隻發生在指定的字符串,而不是我的任何其他5k +字符串。

+1

因爲'xgettext'使用了一個*啓發式*,可能是由於在字符串中使用了%(你可能不會在所有5k +字符串中使用)觸發。啓發式 - 根據定義 - 偶爾會失敗,這就是gettext支持手動更正它們的原因。 – 2015-02-10 08:13:04

+0

@VáclavSlavík好的,謝謝。沒錯,我並沒有在所有字符串中使用%,但我做了一個腳本計數,3219個字符串中有一個或多個%[0-9]個實體。所以我仍然不確定爲什麼只有給定的字符串導致錯誤。無論如何,內聯評論的作品。 – Daniel 2015-02-10 08:47:59

回答

1

.po文件中刪除

#, php-format 

指令。

+0

我做了幾次 - 但下一次更新目錄時,它又被添加了。我更新瞭解決方案的問題,如果您有任何線索知道爲什麼只有給定的字符串受到影響,請讓我知道。 – Daniel 2015-02-09 09:50:54