2010-07-02 28 views
1

我目前正在使用gettext和POEdit翻譯我的PHP應用程序。因爲我尊重我的源代碼的打印邊距,我是用來寫串那樣:如何使用POEdit解析器忽略PHP斷行?

print $this->translate("A long string of text 
    that needs to follow the print margin and since 
    php outputs whitespaces for every break line I do 
    my sites renders correctly."); 

然而,在poEdit,因爲預期的換行符不逃到空格。

A long string of text\n 
    that needs to follow the print margin and since\n 
    php outputs whitespaces for every break line I do\n 
    my websites render correctly.\n 

我知道一個辦法是在源代碼一樣,多變的線條時關閉字符串:

print $this->translate("A long string of text " . 
    "that needs to follow the print margin and since " . 
    "php outputs whitespaces for every break line I do " . 
    "my sites renders correctly. "); 

但它不是一個辦法,是可擴展的我,當文本需要改變並打印保證金 仍然受到尊重,除非netbeans(我使用的IDE)可以爲我自動執行此操作,就像java中的eclipse 一樣。

因此總而言之,是否有辦法告訴POEdit解析器在首選項中將換行符轉義爲空格?

我知道即使換行符沒有被轉義,字符串仍然是可翻譯的,我問這個問題是爲了讓我的轉換者(有時甚至是客戶/用戶)避免混淆,認爲他需要在轉換時重複換行符poEdit的。

回答

0

你必須確保你使用你的腳本正確的換行和你的應用程序

LF: Line Feed, U+000A 
FF: Form Feed, U+000C 
CR: Carriage Return, U+000D 
CR+LF: CR (U+000D) followed by LF (U+000A) 
NEL: Next Line, U+0085 
LS: Line Separator, U+2028 
PS: Paragraph Separator, U+2029 

在Windows系統(MS-DOS)有換行是CR+LF,並在「類Unix」系統它的LF和8Bit准許的它的a CR

您必須確保源位置包含相同類型的飼料到您的編輯位置。

您的服務器處理其換行到該編輯器上運行,只要仔細檢查,這和下發展汽車的一些手段取代因您的操作系統


上的Unicode字符至於你說的主機不同你的「使用帶有POEdit的gettext翻譯我的PHP應用程序」,我會創建一個腳本來通過shell/doss/php拋出所有文件,並自動將字符代碼轉換爲你運行的系統類型。

所以如果你在Windows上工作,那麼你會尋找那些U+000A所有字符,並與U+000DU+000A

+1

我沒有換行跨操作系統的問題,因爲我一定要中使用Unix的換行符替換我源代碼(或者我可能不清楚你的陳述)。我認爲將會有一種簡單的方法將換行解釋爲xgettext解析器命令中的空格。這可能嗎? – 2010-07-02 18:40:41