1

現在、POEdit で gettext を使用して 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. ");

しかし、Java の Eclipse のように netbeans (私が使用する IDE) が自動的にそれを行うことができない限り、テキストを変更して印刷マージンを尊重する必要がある場合、それは私にとって拡張可能なアプローチではありません。

結論として、設定で改行を空白としてエスケープするように POEdit パーサーに指示する方法はありますか?

改行がエスケープされていなくても、文字列はまだ翻訳可能であることはわかっています。翻訳者 (場合によっては顧客/ユーザー) が、POEdit で翻訳するときに改行を複製する必要があると考える混乱を避けるために、これを求めています。

4

1 に答える 1

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 ライクな」システム内では、 LF8 ビットコモドールのCR

ソースの場所に編集場所と同じタイプのフィードが含まれていることを確認する必要があります。

サーバーは、エディターが実行されているホストとは異なるラインフィードを処理します。これを再確認し、OS に応じて Unicode 文字を自動置換する手段を開発してください。


「POEditでgettextを使用してPHPアプリケーションを翻訳する」とあなたが言うように、シェル/ doss / phpを介してすべてのファイルをスローし、文字コードを実行中のシステムのタイプに自動変換するスクリプトを作成します。

したがって、Windowsで作業している場合は、すべての文字を検索してU+000A置き換えますU+000DU+000A

于 2010-07-02T18:10:45.503 に答える