在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
认识到这一点,它应该很容易建立一个表像在你的榜样。
答
据我所知,你想翻译表的行。你可以用最简单的方法做到这一点,但我已经在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>
它应该是I18n.t( '键'):区域设置=>:EN)? – Hugo 2010-09-04 02:53:37