Python gettext - 不翻译

时间:2011-02-26 14:06:34

标签: python internationalization gettext

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

1 个答案:

答案 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

但这是我跨语言的方式。