.poファイルからメッセージを抽出する必要があります。それを行うためのPythonモジュールはありますか?私はパーサを書くが、それはプラットフォームに依存する(\ r \ n、\ nのように)、だから多分それにはいくつかの通常の方法があるのだろうか?pythonでgettext .poファイルを解析する
答えて
バベルは、Pythonで書かれた.poファイルパーサが含まれています。
使用組み込みのgettextモジュール:http://docs.python.org/library/gettext.html
それはpython gettext
を設けた後にGoogleの最初の検索結果として私のために登場しました。これがあなたが何を検索したものなのか疑問に思ったら、そうです。ビルトインのgettextモジュールは、バイナリな.moファイルでのみ動作し
:
ほとんどの場合、ファイル.po
をパーズする必要はありません。開発者は翻訳者に.pot
テンプレートファイルを与え、その名前をxx_XX.po
に変更して文字列を翻訳します。そして、開発者のみGNUのgettext
ツール(またはそのPython実装、pygettext
)を使用して.mo
ファイルにそれらを「コンパイル」する必要があなた
しかし、あなたは/たい場合はPOが自分でファイルを解析する必要があり、代わりにそれらをコンパイルするの、私はpo
ファイルを処理するためのよく知られているPythonライブラリのpolib
を使用することを強くお勧めします。
は、PyPIパッケージ家: http://pypi.python.org/pypi/polib/
コードリポジトリ: https://bitbucket.org/izi/polib/wiki/Home
ドキュメント: http://polib.readthedocs.org
このようなMercurialのやUbuntuのLaunchpadの翻訳エンジンなど、いくつかの大規模プロジェクトで使用されていますインポートモジュールはMITライセンス付きの単一ファイルなので、次のようにコードに簡単に組み込むことができます:
import polib
po = polib.pofile('path/to/catalog.po')
for entry in po:
print entry.msgid, entry.msgstr
それはそれよりも簡単にすることはできません。)
@saeedgnuで動作します:多分あなたは可能性がそれを改善するのに役立つ? 'polib'はpoファイルを操作するために最も広く使われているライブラリであり、積極的に管理されていますので、ソフトウェアの改善にはどんな改善もあります – MestreLion
私はそれがこのように意図されていたと思います。 poファイルの読み込み(または新しいpofileオブジェクトの作成)、それはすべてメモリ上にあります – saeedgnu
'gettext'は素晴らしいですが、それが唯一のコンパイル' mo'ファイルではなく、プレーンテキスト 'po'もの – MestreLion