4

polibは、Pythonでgettext/poファイルを操作するための最適なライブラリのようです。ドキュメントには、メッセージ文字列を反復処理する方法、poファイルとmoファイルを保存する方法などが示されています。しかし、私にはわかりません。特定のエントリを編集するにはどうすればよいですか。

たとえば、既存のpoファイル内のすべてのメッセージを繰り返し処理し、textareasを含むHTMLフォームで表示するとします。フォームを送信すると、例として、元の msgid = "Hello World" と、viatextareaで変換された msgstr="HalloWelt"が得られます。

poファイル内の元の部分は次のようになります。

#: .\accounts\forms.py:26 .\accounts\registration\forms.py:48
msgid "Hello World"
msgstr ""

またはファジーフラグが設定されている場合:

#: .\accounts\forms.py:26 .\accounts\registration\forms.py:48
#, fuzzy
msgid "Hello World"
msgstr "Hallo"

では、実際のpoファイルでこの特定の翻訳を更新するにはどうすればよいですか?また、このメッセージが「あいまい」とマークされている場合、このフラグを削除するにはどうすればよいですか?

助けていただければ幸いです...

4

1 に答える 1

9

わかりました、polibのソースコードを読んだ後、私はこの方法で達成したいことを見つけました:

entry = po.find('Email address')
if entry:
    entry.msgstr = 'E-Mail-Adresse'
    if 'fuzzy' in entry.flags:
        entry.flags.remove('fuzzy')

これは行く方法のようです...

複数形の場合-例として:

entry = po.find('%s hour ago')
if entry and entry.msgid_plural:
    entry.msgstr_plural['0'] = 'Vor %s Stunde'
    entry.msgstr_plural['1'] = 'Vor %s Stunden'

polibのドキュメントは確実に更新する必要があります。そうでなければ素晴らしいツール。

于 2013-01-18T20:53:56.020 に答える