【问题标题】:multilingual mongodb mongomapper多语言 mongodb mongomapper
【发布时间】:2010-06-30 12:40:45
【问题描述】:

我有一个类别集合,每个类别都有一个包含属性名称和单位的哈希数组,用于创建一个 inout 表单,以添加该类别的产品。

例如类别汽车字段 - {name : length, unit : mm}, {name : weight, unit : kg}。

问题是我希望这个网站是多语言的,因此需要存储每种语言的字段名称。

我可以将它们内联:

例如类别汽车字段 - {en-name : length, cn-name : ....., de-name : ....., unit : mm}

有没有更好的办法?

不确定这是否是最好的方法,因为我希望能够将需要翻译的名称文件传递给所有类别的所有字段名称的翻译器,因此以这种方式存储我必须抓取所有然后放入另一个文档然后翻译并插入新翻译的 naes 回来!!!

有什么帮助或想法吗?

谢谢 瑞克

【问题讨论】:

  • 非常感谢迈克尔,我正在尝试在我的应用程序中使用您的要点,并在一个名为 test 的字段上工作,但如果我创建一个名为 test2 的新字段,其类型相同,如 key :test2, LocalizedString 那么test3 的值与 test 相同,我还为 test2 添加了任何内容。我不必制作 LocalizedString2 类型等,因为我想将它用于很多字段。到目前为止,请帮助并非常感谢您的帮助,这正是我所需要的。最好的问候理查德

标签: ruby-on-rails ruby mongodb multilingual mongomapper


【解决方案1】:

最好的方法是将翻译放在语言环境文件中(在 config/locales/ 中)。例如(英语语言环境):

en:
  categories:
    car:
      length: Length

然后在显示字段名称时类似:

I18n.t("categories.#{category.name}.#{field_name}")

这样您可以只维护一个语言环境文件,而将其他语言环境文件发送给翻译人员。

【讨论】:

  • 感谢您的解决方案。唯一的问题是我需要重新启动应用程序才能对语言环境文件进行新的更改。还是我不?我的用户是否可以从我的应用程序中将某些字段的翻译添加到这些文件中?谢谢
  • 是的,您需要重新启动应用程序才能重新加载语言环境文件。我认为字段名称已经知道,您只需要一些简单的方法来翻译它们,我不认为您希望您的用户通过正在运行的应用程序添加翻译。如果是这种情况,我的解决方案可能不容易适用。无论如何,如果您需要一些简单的翻译方法,您应该查看99translations.com
  • 如果您只希望 UI 是多语言的,则区域设置文件很好,但如果您希望内容也是多语言的怎么办?也就是说,如果您只希望网站的西班牙语版本等上的西班牙语内容等。您会为此使用单独的数据库吗?每种语言、每列的键值对?例如$obj[name][english] = 表格
【解决方案2】:

在 MongoDB 中模型翻译相当容易。

这里有一个使用自定义 MongoMapper 类型来透明地处理本地化的要点:https://gist.github.com/828114

你的 LocalizedString 看起来像

name: {  
   en: '...',
   cn: '...',
   de: '...'
}

自定义类型只是存储/返回当前 I18n.locale 的值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    相关资源
    最近更新 更多