Python gettext - 不翻译

OJW*_*OJW 6 python gettext internationalization

示例python程序:[CGI脚本,因此它需要选择自己的语言,而不是使用主机操作系统设置的任何内容]

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

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

print _("Hello world")
Run Code Online (Sandbox Code Playgroud)

./locale/fr/LC_messages/test.mo包含转换(作为二进制文件,通过在.po文件上运行msgfmt生成).

程序打印"Hello world"而不是翻译版本.可能是什么问题呢?

mDr*_*idd 5

也许这个答案为时已晚,但是我刚刚找到了这个,我认为它可以为您提供帮助。

import gettext

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

print _("Hello world")
Run Code Online (Sandbox Code Playgroud)

在我自己的程序中,我是这样进行的:

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
Run Code Online (Sandbox Code Playgroud)

注意

我的程序上有一个lang目录。对于每一种语言的目录是由郎咸平:* XX_xx *( en_US)里面的目录en_US存在LC_MESSAGES了,里面有TOOLNAME.mo

但这是我的跨语言方式。