0

主な文字列が英語であるアプリケーションがあり、その後、通常どおり (Flask と Flask-Babel を使用して) さまざまな .po/.mo ファイルでさまざまな翻訳が行われます。Python コード内のどこかにあるすべての英語の文字列のリストを取得することは可能ですか? 具体的には、誰かがログインして、実際の Python コードや .po/.mo ファイルを突っ込むことなく、特定の場所で使用する任意のフレーズを選択できるようにする管理インターフェイスを Web サイトに用意したいと考えています。このフレーズは時間の経過とともに変化する可能性がありますが、翻訳する必要があるため、Babel が知っているものである必要があります。

私は実際の .pot ファイルにアクセスできるので、それを解析することができましたが、可能であればよりクリーンな方法を望んでいました。

4

2 に答える 2

1

これにはpolibを使用できます。

ドキュメントのこのセクションでは、.po ファイルの内容を反復処理する方法の例を示します。以下は、そのページから抜粋したものです。

import polib

po = polib.pofile('path/to/catalog.po')
for entry in po:
    print entry.msgid, entry.msgstr
于 2013-07-04T04:12:43.450 に答える
0

すでにbabelを使用している場合は、poファイルからすべてのアイテムを取得できます:

from babel.messages.pofile import read_po

catalog = read_po(open(full_file_name))
for message in catalog:
    print message.id, message.string

http://babel.edgewall.org/browser/trunk/babel/messages/pofile.pyを参照してください。

ファイルからアイテムを取得することはすでに試すことができmoます:

from babel.messages.mofile import read_mo

catalog = read_po(open(full_file_name))
for message in catalog:
    print message.id, message.string

しかし、前回使用しようとすると、利用できませんでした。http://babel.edgewall.org/browser/trunk/babel/messages/mofile.pyを参照してください。

@Miguelが書いたpolibように使用できます。

于 2013-07-04T14:05:29.913 に答える