[英]How to create an internationalized Google App Engine application
我想使用用户自己的语言提供我的Python GAE网站,只使用App Engine中直接提供的工具。 为此,我想使用GNU gettext文件(.po和.mo文件)。
有人成功结合了Python Google App Engine和gettext文件吗? 如果是这样,请您提供您使用的步骤?
我已经开始在GAE的Google小组中进行讨论 ,但是无法从中提取出我想要做的事情:我不想添加外部依赖项,例如Babel(在讨论中建议)。 我想使用普通的香草Google App Engine,所以不要手动更新Django或者这种东西。
首先,我将开始使用浏览器发送的语言,因此无需使用cookie等手动强制语言。但是,一旦基本国际化工作,我可能会在以后添加语言更改功能。
作为背景说明,为了向您提供有关我正在尝试做的更多详细信息,我想将Issue Tracker Tracker国际化,这是我在Launchpad上托管的开源应用程序。 我计划使用Launchpad的翻译平台(解释我为什么要使用.mo文件)。 您可以查看其Bazaar分支中的源代码(抱歉没有链接,因为新用户的stackoverflow垃圾邮件防护限制...)
感谢您帮助我推进这个项目!
由于我的需求很简单,我使用了一个简单的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文件自动生成的。
如果你想看到更多,我的实际来源就在这里 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.