2012-03-06 13 views
7

.poファイルからメッセージを抽出する必要があります。それを行うためのPythonモジュールはありますか?私はパーサを書くが、それはプラットフォームに依存する(\ r \ n、\ nのように)、だから多分それにはいくつかの通常の方法があるのだろうか?pythonでgettext .poファイルを解析する

答えて

0

バベルは、Pythonで書かれた.poファイルパーサが含まれています。

-2

使用組み込みのgettextモジュール:http://docs.python.org/library/gettext.html

それはpython gettextを設けた後にGoogleの最初の検索結果として私のために登場しました。これがあなたが何を検索したものなのか疑問に思ったら、そうです。ビルトインのgettextモジュールは、バイナリな.moファイルでのみ動作し

http://babel.edgewall.org/

+1

'gettext'は素晴らしいですが、それが唯一のコンパイル' mo'ファイルではなく、プレーンテキスト 'po'もの – MestreLion

17

ほとんどの場合、ファイル.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 

それはそれよりも簡単にすることはできません。)

+1

@saeedgnuで動作します:多分あなたは可能性がそれを改善するのに役立つ? 'polib'はpoファイルを操作するために最も広く使われているライブラリであり、積極的に管理されていますので、ソフトウェアの改善にはどんな改善もあります – MestreLion

+0

私はそれがこのように意図されていたと思います。 poファイルの読み込み(または新しいpofileオブジェクトの作成)、それはすべてメモリ上にあります – saeedgnu