我想不一定特定于GAE,但我对人们使用什么来翻译或本地化他们的Web应用程序感到好奇。
恐怕我自己的方法是天真无望的,实际上只是通过根据用户个人资料中记录的语言环境值从数据存储区为每个程序包加载一个实体来解决这个问题。至少这允许提供一些字符串的翻译:
package foo
...
type Messages struct {
Locale string
ErrorDatastore string
LoginSuccessful string
...
}
使用与区域设置相对应的字符串ID进行存储,然后加载到Gorilla上下文或类似环境中:
const Messages ContextKey = iota
...
k := datastore.NewKey(c, "Messages", "en_US", 0, nil)
m := new(Messages)
if err := datastore.Get(c, k, m); err != nil {
...
} else {
context.Set(r, Messages, m)
}
这显然受到了难以置信的限制,但是至少可以通过context.Get(r,foo.Messages)从调用代码中使用字符串。谁能指出我更有用的实现方式,或提出更好的方法?
慕仙森
相关分类