2010-06-30 43 views
1

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

例如类别汽车领域 - {名称:长度,单位:mm},{名称:重量,单位:kg}。

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

我可以把他们联:

例如类汽车领域 - {EN-名称:长度,CN-名称:.....,去名:.....,单位:mm }

有没有更好的方法?

不知道这是否是最好的方式,因为我想能够传递名称需要翻译为翻译所有类别的所有字段名称的文件,因此存储这种方式我将不得不抓住所有然后把进入另一篇文章,然后翻译并插入新的翻译naes回!

任何帮助或想法?

感谢 里克

+0

非常感谢迈克尔 我试着克至使用您的要点在我的应用程序及其对一个领域的工作称为测试,但如果我创建一个名为同一类型的test2的新领域像 键:TEST2,LocalizedString 然后TEST3的价值是相同的作为测试,并且我还为test2添加了任何内容。 我不必做LocalizedString2类型等我做我想用这很多领域。 请帮助和感谢你的帮助,迄今为止,这正是我所需要的。 最好的问候 理查德 – rick 2011-02-17 12:02:28

回答

1

最好的办法是把在区域设置文件的翻译(在配置/区域设置/)。例如(英语语言环境):

en: 
    categories: 
    car: 
     length: Length 

然后像场的那个显示时的名字:

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

这样你就可以只保留一个区域设置文件和发送其他的人来翻译。

+0

感谢您的解决方案。 唯一的问题是我需要重新启动应用程序以引入对区域设置文件的新更改。或不要我? 我的用户也有可能从我的应用程序中将某些字段的翻译添加到这些文件中? 谢谢 – 2010-06-30 16:37:36

+0

是的,你需要重新启动应用程序来重新加载语言环境文件。 我认为字段名称已经知道了,你只需要一些简单的方法来翻译它们,我没有假设你想让你的用户通过正在运行的应用程序添加翻译。如果是这种情况,我的解决方案可能不容易适用。 无论如何,如果你需要一些简单的方法来处理翻译,你应该检查http://99translations.com – 2010-06-30 22:11:31

+0

如果你只想要UI是多语言的,但是如果你希望内容也是多种语言?也就是说,如果你只想要西班牙语版本的网站上的西班牙文内容等,你会使用单独的数据库吗?每列每种语言的键值对?例如$ obj [name] [english] =表格 – 2011-01-18 17:23:27

0

在MongoDB中,模型翻译相当简单。

这是一个使用自定义MongoMapper型透明地处理要点定位:https://gist.github.com/828114

你LocalizedString会是什么样子

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

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