Python gettext - 无法翻译

6

示例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" 而非翻译版本。可能的问题是什么?


可能只是瞎猜,也许它区分大小写? - Thomas Dignan
大小写的差异是一个打字错误,实际程序中并不存在 - 我会编辑问题来修复它。 - OJW
4
为什么你在使用.install()(两次)并绑定_ - Ignacio Vazquez-Abrams
啊,原来是这样——绑定 _() 是问题所在。去掉它就可以了。 - OJW
答案并关闭,如果问题解决了,请大家... - smci
1个回答

6
也许我的回答太晚了,但我刚刚找到了这个,我认为它可以帮助你。
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

但这是我实现跨语言的方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接