2013-07-04 86 views
0

我有一個應用程序,其中的主要字符串是英文,然後像往常一樣(使用Flask和Flask-Babel)在各種.po/.mo文件中進行各種翻譯。是否有可能在我的Python代碼中獲取所有英文字符串的列表?具體來說,我想在網站上有一個管理界面,讓用戶登錄並選擇一個任意短語在某個地方使用,而不必嘲諷實際的Python代碼或.po/.mo文件。這句話可能會隨着時間而改變,但需要翻譯,所以它需要巴貝爾知道的東西。如何獲得Babel知道的所有字符串的列表?

我確實可以訪問實際的.pot文件,所以我可以解析它,但是我希望如果可能的話使用更簡潔的方法。

回答

0

如果alredy使用巴貝爾你可以從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

您alredy可以嘗試從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

您可以使用polib作爲@Miguel寫道。

+0

這讓我避免安裝另一個軟件包,這很好。 – AVB

0

您可以使用polib

section of the documentation顯示瞭如何迭代.po文件內容的示例。這是一個從該頁採取:

import polib 

po = polib.pofile('path/to/catalog.po') 
for entry in po: 
    print entry.msgid, entry.msgstr 
相關問題