正如您所说,本地化和国际化(分别缩写为 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"]
}