你試過Babel?它支持用於從各種來源提取消息的插件系統。
lingua爲ZPT和zope.i18nmessageid提供插件,爲您提供i18ndude的所有功能,但是具有相當活躍的開源社區。
要在您的項目中使用babel,您需要configure your setup.py to use babel commands,然後將這些函數作爲setup.py命令運行;例如python yourpackage/setup.py extract_messages
。
提供的lingua
雞蛋可以作爲一個依賴,那麼你可以它在message_extractors
結構插件,你setup.py告訴巴貝爾如何從源文件中提取信息的i18n:
...
from babel.messages import frontend as babel
...
setup(...
setup_requires=['lingua'],
cmdclass = dict(
compile_catalog=babel.compile_catalog,
extract_messages=babel.extract_messages,
init_catalog=babel.init_catalog,
update_catalog=babel.update_catalog,
),
message_extractors = {
'path/in/package': [
('**.py', 'lingua_python', None),
('**/templates/**.pt', 'lingua_xml', None),
],
},
...
)
注意您不能將Babel作爲setup_requires依賴項包含在內,因爲setup.py腳本只有在它可以實際導入babel時才起作用!你可以嘗試通過爲cmdclass條目創建填充來解決這個問題,但我還沒有嘗試過。現在,只需在您的virtualenv或全球安裝Babel蛋。
如果你想使用--mapping-file
CLI選項而不是message_extractors
項,該選項期望一個INI風格文件格式[method fileglob]
標題:
[lingua_python **.py]
[lingua_xml **/templates/**.pt]
每個部分都包含選項要傳遞給提取函數(每個option = value
行在傳遞給它的選項字典中成爲鍵 - 值對),但我不認爲lingua_ *方法會採用任何選項。
提取器配置然後用於您在命令行中提到的每個輸入目錄或setup.py packages
選項中提到的每個包。
謝謝,我會給lingua一個嘗試。 「pip install lingua」首先失敗,但使用我的啓用ssl的解釋器工作。 – Tobias
我安裝了通用語言和babel。至於語言,我發現了4個新的可執行文件(po-to-xls,xls-to-po,runxlrd.py和polint),這些對我來說都不是一個抽象工具。使用babel我認爲要創建一個setup.py文件來使用extract_messages ...命令,對吧? – Tobias
我已經更新了我的答案,以展示巴貝爾如何融入您的項目。 –