Python gettext - 不翻译

6 投票
1 回答
4511 浏览
提问于 2025-04-16 12:35

这是一个简单的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 个回答

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 文件。

这就是我处理多语言的方式。

撰写回答