【发布时间】:2012-12-16 23:20:21
【问题描述】:
我想不一定特定于 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) 调用代码来获取字符串。谁能指出更有用的实现,或提出更好的方法?
编辑(相关但不完全有用):
【问题讨论】:
-
关于建议编辑:我保留拼写“本地化”the correct way 的权利。嘿,至少我在标记时使用了“z”! ;)
-
您期望从“更有用的实现”中获得什么样的功能?对于大多数 i18n 应用程序,键值存储(可能带有一些格式代码)应该可以正常工作。
-
好吧,我猜想这能让翻译人员更轻松地完成工作。我很好奇是否有我可能错过的其他流行方法(gettext 等)的端口。现在我正在使用chrome.i18n's JSON format 拼凑一个简单的模块,如果没有更完整的实现,我会发布它作为答案。
-
谷歌搜索“go gettext”会显示这个 - github.com/samuel/go-gettext - 你检查过吗?无论如何,祝你编写该模块,祝你好运!
-
不,这对我来说是新的,这是使用“go gettext”而不是我一直在搜索的(未引用的)golang gettext 的有趣结果!如果可行,我会调查并发布答案。
标签: google-app-engine localization internationalization go