是否可以处理存储在数据库表中的数据的文本翻译?

时间:2012-01-04 08:52:11

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 translation

我正在使用Ruby on Rails 3.1.0,我想知道是否可以处理存储在数据库表中的数据的文本翻译有可能吗?如果是这样,怎么样?

例如,如果我有一个名为Title的数据库表列,并且我有一个记录Title值设置\存储到“ car ”,我想表明

  • 意大利人的文字“汽车”;
  • 德国人的文字“ auto ”;
  • 等......

4 个答案:

答案 0 :(得分:0)

Ruby可以帮助您将单词从一种语言翻译成另一种语言,但只能提供允许您进行查找的散列和结构或代码算法。它本身并不知道单词的含义,也无法翻译单词。

为了您的目的,您应该构建一个翻译表,主要字段中包含主要语言单词,辅助字段中的翻译,每种语言一个字段。然后,您可以快速查找德语或意大利语表单的所有单词,并将其替换为表单。

答案 1 :(得分:0)

您可以使用Rails Internationalization(i18n)API设置rails应用程序以实现国际化。您需要传递并设置区域设置。语言环境文件将驻留在config / locales中。正如tin Man所提到的,locale文件是一个键:值文件。在这里,您可以覆盖自定义rails默认值。

可以从params和域名设置区域设置。在我看来,Rails指南实际上是最好的开始。

http://guides.rubyonrails.org/i18n.html

答案 2 :(得分:0)

正如其他答案中已经提到的,您将需要使用rails i18n功能来实现此功能。

但是,有其他方式可以存储您的翻译。 This railscast描述了如何设置基于redis的翻译后端,以及指向一大堆不同后端的链接。

如果您只想使用ActiveRecord将翻译存储在数据库中,我建议您查看i18n-active_record

使用这些插件,您可以轻松地将翻译存储在数据库中,并让您的应用程序使用I18n.t('some_translation_key')为您查找。

答案 3 :(得分:0)

对于用户生成的内容,最好将语言与内容一起存储。

然后,您可以让您的用户使用不同的语言参考创建此数据的“副本”。

根据您需要更改每张桌子的数据量,不同的宝石可能适合您的需求。 I18n gem在这里不是一个好选择,因为它适用于静态内容。请参阅:https://www.ruby-toolbox.com/categories/i18n