Rails 3 I18n接近

Ion*_*Br. 2 internationalization ruby-on-rails-3

我是Rails的新手,我需要在应用程序中实现国际化.直到现在我查看了r18n-rails,globalize3和gettext_i18n_rails.

我必须将模板文本与一些数据库数据(一些类别作为示例)国际化.

我喜欢gettext_i18n_rails与模板文本一起使用的方式,但它没有为DB数据提供任何解决方案(或者它是什么?).从另一方面来看,r18n-rails和globalize3似乎可以完成DB数据的工作,但不能用于模板.起初我想把它们组合起来(globalize或r18n + gettext_i18n_rails),但这可能是一个好主意,特别是如果这将是一个大项目.

所以我的问题是:

考虑到模板文本+ DB文本+项目大小,Rails 3的最佳I18n方法是什么?

hju*_*ycz 5

Rails 3中最好的方法是使用内置机制I18n gem.我不确定我是否了解DB数据的问题.如果在数据库中定义类别,只需向它们添加i18n键,然后在模型中返回已翻译的标题.

例如

class Category
  # with a column that holds the i18n_lookup_key (maybe you think of a better name)
  ...

  def translated_title
    I18n.translate(i18n_lookup_key)
  end

end
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用translated_title方法显示类别的标题.

如果您对Rails中的I18n有更多疑问,我们只是在我们的博客上做了一系列:

Ruby on Rails 3中的国际化(I18n)API(第一部分)

  • 国际化与本土化的定义
  • i18n机制如何在Rails中运行
  • 关于i18n机制的设置/配置
  • 使用带插值的I18n
  • 使用I18n与复数

Ruby on Rails 3中的国际化(I18n)API(第二部分)

  • 时间/日期的本地化
  • 使用视图进行翻译
  • 翻译ActiveRecord错误
  • 资源文件的组织
  • 从域名设置区域设置
  • 从URL参数设置区域设置

第3部分将在下周发布,其中包含所有主题的PDF.