如何创建国际化的Google App Engine应用程序

Emi*_*ien 12 python google-app-engine gettext internationalization

我想使用用户自己的语言提供我的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垃圾邮件防护限制......)

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

sas*_*nin 6

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

en={}
ru={}

en['default_site_title']=u"Site title in English"
ru['default_site_title']=u"???????? ????? ??-??????"
Run Code Online (Sandbox Code Playgroud)

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

import translate

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

用法:

msgs = get_messages(["it","ru","en"])
hi = msgs['hello_message'] % 'yourname'
Run Code Online (Sandbox Code Playgroud)

我还定义了一个帮助函数,它从头中提取语言列表Accept-Language.

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

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

  • 不正确 - App Engine可以访问"普通"文件,只要它们随应用程序上传即可.如何加载模板呢? (2认同)

Jos*_*hua 4

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

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

我希望这对你有帮助:)

  • 感谢您的链接,我在之前的尝试中已经尝试过使用它,但无法使其实际工作。我昨晚再次尝试,虽然我设法消除了任何异常,但仍然没有翻译任何内容...我将继续尝试使其工作,因为显然它必须工作,因为有一个示例应用程序!如果我成功了,我会通知你。 (2认同)