在Ruby on Rails 3.0中翻译模型

问题描述:

使用Ruby on Rails 3.0,我希望页面具有并行翻译。例如,一个页面看起来像这样在Ruby on Rails 3.0中翻译模型

+---------------+---------------+-----------------+ 
| Hello   | Hola   | Bonjour   | 
+---------------+---------------+-----------------+ ... (there could be many more languages) 
| Hello, world. | Hola, mundo. | Bonjour, monde. | 
+---------------+---------------+-----------------+ 

什么是一个简单的方法来解决这个问题?我不相信这可以用I18N解决,因为这通常意味着设置一个语言环境并且将整个页面翻译成该语言。我想要多列语言(这些语言以及有多少种语言也是未知的)。我知道我可以为Posts,PostTitleTranslations和PostBodyTranslations等翻译创建大量表格,但这似乎不是最好的方式。有没有人曾经解决过这样的事情?

您可以覆盖在其中显示使用:locale选项翻译I18n.t语言环境:

I18n.locale = :de    # set default locale to German 
I18n.t('key')     # display German translation for 'key' 
I18n.t('key', :locale => :en) # display English translation for 'key' even though 
           # the default locale is still set to :de 

认识到这一点,它应该很容易建立一个表像在你的榜样。

+0

它应该是I18n.t( '键'):区域设置=>:EN)? – Hugo 2010-09-04 02:53:37

据我所知,你想翻译表的行。你可以用最简单的方法做到这一点,但我已经在3个项目中找到并使用了最佳实践。使用字段添加PostTranslation模型,如标题,文本等,还可以使用特殊列:post_id(在您的示例中)和语言环境。

它可以使用puret来完成(这是支持Rails3中从它开始),或使用开发插件,由我has_translations(现在我已经测试过它仅在轨道上2.3,但明年我会释放出非常排序时间(版本0.4)将支持rails3)。

这非常容易使用。您可以通过单击链接直接阅读自述文件。

如果您有任何问题,请在github上给我写信息。

为了完整起见

你需要为每个区域设置文件:使用

config 
| 
+- locales 
    | 
    +- es.yml 
     en.yml 
     fr.yml 

例es.yml

es: 
    :hello "Hola" 
    :world "mundo" 

像安德烈亚斯之前表示,采用t( '东西' ),:locale =>:xx你可以选择你想要的。

<p> 
    <%= t('hello', :locale => :es) %> 
    <br /> 
    <%= "#{t('hello', :locale => :es)}, #{t('world', :locale => :es)}. 
</p> 

我已经创建了一个名为acts_as_translatable一个Ruby on Rails插件,可以让你轻松转换您的模型和数据库表。

希望你可以用它!

最好的问候, 拉塞双层