【问题标题】:Multilanguage Content in RailsRails 中的多语言内容
【发布时间】:2012-01-17 06:25:11
【问题描述】:

我即将开始一个新项目,需要一些建议。

例如,如果我有一个名为“页面”的模型,其中包含“帖子” - 我如何在创建新帖子时存储多种语言并在单击时仅显示一种语言的帖子 - 比方说 -顶部的标志图标。

我已经阅读了很多关于 l18n 的内容,但据我所知 - 如果我想翻译错误等静态消息,这就是这种方式?

希望有人能以简洁的方式解释给定的策略。

谢谢!

【问题讨论】:

    标签: mongodb ruby-on-rails-3.1 mongoid multilingual


    【解决方案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"]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 2012-03-16
      相关资源
      最近更新 更多