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

时间:2009-12-22 13:01:05

标签: python google-app-engine internationalization gettext

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

有人成功合并了Python Google App Engine gettext 文件?如果是这样,您能否提供您使用的步骤?

我已经开始a discussion in GAE's Google group,但无法从中提取出我想要的方式:我不想添加外部依赖项,例如Babel(在讨论中建议)。我想使用普通的香草Google App Engine,因此不需要手动更新Django或这类东西。

首先,我将开始使用浏览器发送的语言,因此无需使用cookie等手动强制语言。但是,一旦基本国际化工作,我可能会在以后添加语言更改功能。

作为背景说明,为了向您提供有关我正在尝试做的更多详细信息,我想将问题跟踪器跟踪器国际化,这是我在Launchpad上托管的开源应用程序。我计划使用Launchpad的翻译平台(解释我为什么要使用.mo文件)。您可以查看其Bazaar分支中的源代码(抱歉没有链接,因为新用户的stackoverflow垃圾邮件防范限制...)

感谢您帮助我推进此项目!

2 个答案:

答案 0 :(得分: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标题中提取语言列表。

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

如果您想查看更多内容,我的实际来源为here

答案 1 :(得分:4)

您可以使用Django国际化工具,如解释here

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

我希望能帮到你:)。