2011-02-26 13 views
4

樣品Python程序:CGI腳本,所以需要選擇自己的語言,而不是使用任何主機OS設爲]的Python的gettext - 沒有轉化

import gettext 
gettext.install('test', "./locale") 
_ = gettext.gettext 

t = gettext.translation('test', "./locale", languages=['fr']) 
t.install() 

print _("Hello world") 

./locale/fr/LC_messages/ test.mo包含翻譯(作爲二進制文件,通過在.po文件上運行msgfmt生成)。

程序打印「Hello world」而不是翻譯版本。可能是什麼問題呢?

+0

在黑暗中刺傷,也許它是大小寫敏感的? – 2011-02-26 14:10:02

+0

大寫差異是一個在實際程序中不存在的拼寫錯誤 - 我將編輯該問題以修復該問題 – OJW 2011-02-26 14:12:18

+2

爲什麼使用'.install()(兩次)*和*綁定'_'? – 2011-02-26 14:19:58

回答

4

也許這個答案太晚了,但我剛發現這個,我認爲它可以幫助你。

import gettext 

t = gettext.translation('test', "./locale", languages=['fr']) 
_ = t.gettext 

print _("Hello world") 

在我自己的PROGRAMM,我就是這麼做的:

import gettext 

DIR = "lang" 
APP = "ToolName" 
gettext.textdomain(APP) 
gettext.bindtextdomain(APP, DIR) 
#gettext.bind_textdomain_codeset("default", 'UTF-8') # Not necessary 
locale.setlocale(locale.LC_ALL, "") 
LANG = "FR_fr" 


lang = gettext.translation(APP, DIR, languages=[LANG], fallback = True) 
_ = lang.gettext 

注意

我的程序上有一個目錄。 對於目錄中作出的每一種語言:* XX_xx *(en_US) 目錄en_US內有LC_MESSAGES,並且內部有TOOLNAME.mo

但是,這是我對跨語言的方式。