示例python程序:[CGI脚本,因此需要选择自己的语言而不是使用主机操作系统设置的任何语言]
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 :(得分:5)
也许这个答案太晚了,但我发现了这个,我觉得它可以帮助你。
import gettext
t = gettext.translation('test', "./locale", languages=['fr'])
_ = t.gettext
print _("Hello world")
在我自己的程序中,我这样做了:
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
注意强>:
我的程序上有一个 lang 目录。
对于每种语言,目录都在 lang 中生成:* XX_xx *(en_US
)
目录en_US
内有LC_MESSAGES
,内部有TOOLNAME.mo
但这是我跨语言的方式。