django-admin.py makemessagesは、非常に長い文字列がラップされている場合、「警告: 終了していない文字列」というエラーで停止します:
string = "some text \
more text\
and even more"
これらの文字列は翻訳する必要さえありません。たとえば、SQL クエリ文字列です。文字列を連結すると問題はなくなりますが、結果が見苦しく、結合に時間がかかります...
こんなお悩みをお持ちの方はいらっしゃいませんか?それを修正する方法を見つけましたか?
関連するツールの次のバージョンがあります。
xgettext-0.17、gettext-0.17、django-1.0.2、python-2.6.2
この問題に関するチケットがありましたが、おそらくコンポーネント バージョンの一部の組み合わせでのみエラーが表示されるため、クローズされました。
編集: 問題の原因が見つかりました- xgettext は警告メッセージを sterr に出力し、django はそれらを致命的なエラーと見なして終了します。
xgettext 呼び出しの戻りステータスは 0 - 「成功」です。ジャンゴはそれを成功として認識し、警告のために終了しないはずだと思います。
興味深いことに、xgettext はバックスラッシュでラップされた文字列を翻訳する必要がある場合でも抽出しますが、stderr ( 「終了していない文字列」 ) と .po ファイル ( 「国際化されたメッセージには `\r' エスケープ シーケンスを含めないでください」 )で警告を出します。
xgettext 呼び出しは次のとおりです。
xgettext -d django -L Python --keyword=gettext_noop \
--keyword=gettext_lazy --keyword=ngettext_lazy:1,2 \
--keyword=ugettext_noop --keyword=ugettext_lazy \
--keyword=ungettext_lazy:1,2
--from-code UTF-8 -o - source_file.py
django/core/management/commands/makemessages.py から呼び出されます