我即将开始一个新项目并需要一些建议。
例如,如果我有一个名为“Page”的模型有“帖子” - 当我创建一个新帖子时我怎么能存储多种语言,当我点击一个时只显示一种语言的帖子 - 让我们说 - 顶部的旗帜图标。
我已经阅读了很多关于l18n的内容,但据我所知 - 如果我想翻译错误等静态消息,这就是我的方法吗?
希望有人能够以干净的方式解释给定的策略。
谢谢!
答案 0 :(得分:1)
正如您所说,本地化和国际化(分别缩写为l10n和i18n)通常指的是软件产品本身的本地化,而不是内容。
如何管理多种语言的内容有不同的策略,它确实很大程度上取决于您想要实现的目标。假设您运行多语言博客。但是,有些内容与国际观众无关,所以你不想提供英文版(假设你不是母语为英语的人,但我想这一点很清楚)。
现在似乎有意义的是,不要在博客的英文版中显示该博文。因此,我建议
Post {
"_id" : ObjectId('...'),
"PostGroupId: ObjectId('...'),
"Title" : "A Blog Post Title",
"Text" : "<h1>Lorem ipsum</h1> lots of text",
"Language" : "en",
"Published" : // and so on...
}
您现在可以轻松查询给定语言的所有或特定帖子:db.Posts.find({"language" : "en"}).sort({"Published" : -1});
根据您的需要,您可能希望为帖子添加分组对象,以使用非规范化数据明确地将帖子的翻译相互关联:
PostGroup
{
"_id" : ObjectId('...'),
// ...
"Posts" : [{"lang" : "en", "id" : ObjectId('...')},
{"lang" : "de", "id" : ObjectId('...')} ]
// -- or simpler --
"AvailableLanguages" : ["en", "it", "fr"]
}