12

我想以用户自己的语言提供我的 Python GAE 网站,仅使用 App Engine 中直接可用的工具。为此,我想使用 GNU gettext 文件(.po 和 .mo 文件)。

有人成功结合 Python Google App Enginegettext文件吗?如果是这样,您能否提供您使用的步骤?

我已经在 GAE 的 Google 小组中开始了讨论,但无法从中提取我想怎么做:我不想添加外部依赖项,比如 Babel(在讨论中建议)。我想使用普通的 Google App Engine,所以不需要手动更新 Django 或这类东西。

一开始,我会开始使用浏览器发送的语言,所以不需要通过cookie等手动强制语言。但是,一旦基本的国际化工作,我可能会在以后添加一个语言更改功能。

作为背景说明,为您提供有关我正在尝试做的事情的更多详细信息,我想将Issue Tracker Tracker国际化,这是我在 Launchpad 上托管的一个开源应用程序。我打算使用 Launchpad 的翻译平台(解释我为什么要使用 .mo 文件)。您可以查看其 Bazaar 分支中的源代码(抱歉,由于新用户的 stackoverflow 垃圾邮件预防限制,没有链接......)

感谢您帮助我推进这个项目!

4

2 回答 2

6

由于我的需求很简单,我使用了一个简单的 hack 而不是(不可用的)gettext。我创建了一个带有字符串翻译的文件,translate.py. 大概是这样的:

en={}
ru={}

en['default_site_title']=u"Site title in English"
ru['default_site_title']=u"Название сайта по-русски"

然后在主代码中我定义了一个函数,它返回一个字典,从列表中翻译成最合适的语言(使用第一个有翻译的语言或英语):

import translate

def get_messages(languages=[]):
    msgs=translate.en
    for lang in languages:
        if hasattr(translate,lang):
            msgs=getattr(translate,lang)
            break
    return msgs

用法:

msgs = get_messages(["it","ru","en"])
hi = msgs['hello_message'] % 'yourname'

Accept-Language我还定义了一个辅助函数,它从标题中提取语言列表。

它不是最灵活的解决方案,但它没有任何外部依赖项并且对我有用(在玩具项目中)。我认为translate.py可能是从 gettext 文件自动生成的。

如果你想看更多,我的实际来源在这里

于 2009-12-22T13:34:35.377 回答
4

您可以使用 Django 国际化工具,如此所述。

他们还说没有简单的方法可以做到这一点。

我希望对你有帮助:)

于 2009-12-22T13:34:01.757 回答