Python gettext - 不翻译

发布于 2024-10-19 11:45:30 字数 379 浏览 1 评论 0原文

示例 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 包含翻译(作为二进制文件,通过运行 msgfmt 生成)在 .po 文件上)。

程序打印“Hello world”而不是翻译版本。可能是什么问题?

Sample python program: [CGI script, so it needs to select its own language rather than using whatever the host OS is set to]

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 contains the translation (as binary file, generated by running msgfmt on a .po file).

Program prints "Hello world" instead of the translated version. What could be the problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

禾厶谷欠 2024-10-26 11:45:30

也许这个答案太晚了,但我刚刚发现这个,我认为它可以帮助你。

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

但这就是我的跨语言方式。

Maybe this answer is WAY too late, but I just found this and I think it can help you.

import gettext

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

print _("Hello world")

In my own programm, I did it this way:

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

NOTE:

My program has a lang directory on it.
For every language a directory is made in lang : *XX_xx* (en_US)
Inside the directory en_US there is LC_MESSAGES, and inside there is TOOLNAME.mo

But that's my way for cross-language.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文