【问题标题】:Python gettext - not translatingPython gettext - 不翻译
【发布时间】:2011-07-04 21:09:30
【问题描述】:

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

【问题讨论】:

  • 暗中刺伤,也许区分大小写?
  • 大小写差异是实际程序中不存在的错字 - 我将编辑问题以解决该问题
  • 你为什么使用.install()(两次)绑定_
  • 啊,就是这样 - 绑定 _() 是问题所在。删除它,它就可以工作了。
  • 回答并关闭,如果解决了,伙计们......

标签: python internationalization gettext


【解决方案1】:

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

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

但这是我跨语言的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    相关资源
    最近更新 更多