i18n

軟件截圖:
i18n
軟件詳細信息:
版本: 0.1
上傳日期: 14 Apr 15
開發: Antonio Cuni
許可: 免費
人氣: 17

Rating: 3.0/5 (Total Votes: 1)

國際化是一個包,試圖簡化工作流程和國際化應用程序的開發和NBSP;這是一個瘦包裝圍繞現​​有的工具,特別是gettext和巴貝爾。
基本用法
#demo.py

從i18n.translator進口翻譯
supported_languages​​ = ['it_IT','fr_FR目錄','de_DE這個']
#激活意大利語翻譯
TR =翻譯('/路徑/到/根',supported_languages​​,“it_IT”)
打印TR ._(“世界,你好!”)
其中/路徑/到/根/為你的項目的根目錄。當實例化,翻譯類自動創建一個目錄名為/路徑/到/根/那裡的翻譯存儲的語言。
提取郵件
在此之前實際的翻譯,你需要從源文件中提取信息,通過國際化的模塊,這是圍繞pybabel提取物和pybabel更新的包裝上調用提取命令:
 蟒蛇-m國際化--root = /路徑/要/根--languages​​ = it_IT,fr_FR,則de_DE這個提取物
提取查找所有包裹裡面的信息調用_(),gettext的()或ngettext(),並產生一個名為語言/ template.pot。這是一個標準的gettext PO file`其中包含的所有應用程序中的發現消息。
此外,提取物()也為每個受支持的語言,語言/ $ CODE / LC_MESSAGES / messages.po,其中$ CODE是在supported_languages​​(it_IT,fr_FR目錄和de_DE這個在上面的例子中列出的語言之一,創建了一個消息目錄文件)。
編錄文件現在已經準備好使用的許多現有的工具之一翻譯,例如QT語言學家或poEdit的。對於該應用程序的正確運行,整個語言/層級需要被保留。我們建議與屬於該應用程序的其它文件跟踪版本控制系統的各種messages.po文件一起。
更新訊息
在應用程序的開發,則一定會增加新的消息將被翻譯。提取命令會自動處理這種情況:如果發現存在編錄文件,其內容(包括現有的翻譯)合併與新提取的郵件。
編譯目錄
有必要使用他們的gettext之前,編譯目錄文件。默認情況下,我們的翻譯對象自動編譯所有的語言/中發現的目錄,產生相應的.mo文件。編譯完成,只有當目錄文件已被修改。這意味著,在大多數情況下,你不必擔心目錄的編制。
如果你更喜歡有這一步更多的控制,你可以通過自動編譯= False以譯者的構造和命令行手動編譯它們:
 蟒蛇-m國際化--root = /路徑/要/根--languages​​ = it_IT,fr_FR,則de_DE這個編譯
在數據庫中存儲翻譯
對於一些應用,讓以限定新的翻譯和/或替代默認的用戶是有用的。 I18N支持該用例與DBTranslator類,這是轉換的子類。當翻譯,DBTranslator首先在數據庫:如果沒有找到該郵件,將其委託給標準的gettext行為。
DBTranslator基於SQLAlchem​​y的。它的構造函數需要一個額外的發動機參數:
從i18n.dbtranslator進口DBTranslator
從SQLAlchem​​y的進口create_engine
發動機= create_engine('源碼:///db.sqlite“)
ROOT =“/路徑/到/根”
語言= ['it_IT','fr_FR目錄“]
DEST_LANGUAGE ='it_IT“
TR = DBTranslator(ROOT,語言,DEST_LANGUAGE,發動機=引擎)
打印TR ._(“世界你好”)
DBTranslator自動創建數據庫表translation_entries。然後,它是由該應用程序提供一個用戶界面,以操縱該表。為了進行測試,您可以使用add_translation()方法插入的DB一個新的翻譯:
tr.add_translation(“it_IT”,“世界你好”,“僑盟”)
打印TR ._(“世界你好”)#打印“僑盟”
如何使用全球翻譯
根據設計,國際化嘗試完全避免任何全局狀態。這意味著,你可以實例盡可能多的翻譯和DBTranslator只要你想,每一個涉及到不同的目錄和/或數據庫。這對於測試特別有用。
然而,在實踐中大多數項目要使用哪個知道在項目中的所有組件的消息的全球翻譯。該程序演示了一種方式來做到這一點translate.py模塊:
進口PY
從i18n.translator進口翻譯
#設置項目的根目錄中包含這個文件
ROOT = py.path.local(__ __文件)。dirpath()
語言= ['it_IT','fr_FR目錄','de_DE'對應]
TR =轉換器(ROOT,語言,'it_IT“)
_ = tr._
ngettext = tr.ngettext
如果__name__ =='__main__':
  tr.cmdline(sys.argv中)
這樣,應用程序的其他部分可以簡單地導入和使用_()和ngettext()從translate.py。或者,您的喜好,直接進口的潮流對象和使用TR ._()和tr.ngettext()翻譯的消息。
最後兩行代碼實現了便捷的方式來調用提取物和通過命令行編譯,而無需手動指定的根目錄和支持的語言。只要運行:
 蟒蛇translate.py提取物#...或編譯

要求

  • 在Python中

類似的軟件

ikazuchi
ikazuchi

12 May 15

PHP Net_IDNA
PHP Net_IDNA

11 May 15

顯影劑的其他軟件 Antonio Cuni

pdbpp
pdbpp

11 May 15

意見 i18n

評論沒有發現
添加評論
打開圖片!