代码之家  ›  专栏  ›  技术社区  ›  Emilien

如何创建国际化的谷歌应用引擎应用程序

  •  12
  • Emilien  · 技术社区  · 16 年前

    我想用用户自己的语言提供我的python gae网站,只使用应用程序引擎中直接可用的工具。为此,我想使用gnu gettext文件(.po和.mo文件)。

    有人成功地结合了python吗? 谷歌应用引擎 获得文本 文件夹?如果是,请提供您使用的步骤好吗?

    我已经开始了 a discussion in GAE's Google group ,但还不能从中提取我想如何做:我不想添加外部依赖项,如babel(在讨论中建议)。我想使用普通的谷歌应用程序引擎,所以不需要手动更新django或类似的东西。

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

    作为一个背景说明,为了给你更多关于我想做什么的细节,我想国际化 问题跟踪跟踪程序 ,一个我在LaunchPad上托管的开源应用程序。我计划使用launchpad的翻译平台(解释我为什么要使用.mo文件)。您可以查看它的Bazaar分支中的源代码(很抱歉,由于新用户的StackOverflow垃圾邮件预防限制,没有链接…)

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

    2 回复  |  直到 16 年前
        1
  •  4
  •   Joschua    10 年前

    您可以使用django国际化工具,如解释的那样 here .

    他们还说,要做到这一点并不容易。

    希望能帮到你:)

        2
  •  6
  •   sastanin    16 年前

    由于我的需求很简单,我使用了一个简单的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文件自动生成。

    如果你想看更多,我的实际来源是 here .