【发布时间】:2011-02-02 10:38:27
【问题描述】:
在 Google App Engine 上本地化应用程序有哪些选项?如何使用 Webapp、Django、web2py 或 [在此处插入框架]。
1。可读的 URL 和实体键名
可读的 URL 有利于可用性和搜索引擎优化(Stack Overflow 是一个很好的例子)。在 Google App Engine 上,出于性能原因,建议使用基于键的查询。因此,最好在 URL 中使用实体键名,以便尽快从数据存储中获取实体。
某些字符在 URL 中具有特殊含义(&、"、' 等)。为了能够将键名用作 URL 的一部分,它们不应包含任何这些字符。目前我使用下面的函数来创建键名称:
import re
import unicodedata
def urlify(unicode_string):
"""Translates latin1 unicode strings to url friendly ASCII.
Converts accented latin1 characters to their non-accented ASCII
counterparts, converts to lowercase, converts spaces to hyphens
and removes all characters that are not alphanumeric ASCII.
Arguments
unicode_string: Unicode encoded string.
Returns
String consisting of alphanumeric (ASCII) characters and hyphens.
"""
str = unicodedata.normalize('NFKD', unicode_string).encode('ASCII',
'ignore')
str = re.sub('[^\w\s-]', '', str).strip().lower()
return re.sub('[-\s]+', '-', str)
这基本上是批准字符的白名单。它适用于英语和瑞典语,但对于非西方文字它会失败并删除一些西方文字的字母(如挪威语和丹麦语的 – 和 ø)。
谁能推荐一种适用于更多语言的方法?删除有问题的字符(黑名单)会更好吗?
2。翻译模板
Django 国际化和本地化是否适用于 Google App Engine?是否有任何必须执行的额外步骤?使用 Webapp 时是否可以将 Django i18n 和 l10n 用于 Django 模板?
Jinja2 template language provides integration with Babel。根据您的经验,它的效果如何?
您选择的模板语言有哪些可用选项?
3。翻译的数据存储内容
从数据存储提供内容(或将其存储到)时:有没有比从 HTTP 请求中获取 accept_language 参数并将其与您为每个设置设置的语言属性匹配更好的方法实体?
【问题讨论】:
-
在阅读了stackoverflow.com/questions/522466/what-makes-a-friendly-url 之后,我决定在文章中使用数字 ID,从而避免 URL 的翻译和重命名问题。
-
有关保留字符和不安全字符的列表,请参阅stackoverflow.com/questions/695438/…
标签: python django google-app-engine internationalization localization