2010-08-03 150 views
2

使用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等翻譯創建大量表格,但這似乎不是最好的方式。有沒有人曾經解決過這樣的事情?

回答

0

您可以覆蓋在其中顯示使用: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

1

據我所知,你想翻譯表的行。你可以用最簡單的方法做到這一點,但我已經在3個項目中找到並使用了最佳實踐。使用字段添加PostTranslation模型,如標題,文本等,還可以使用特殊列:post_id(在您的示例中)和語言環境。

它可以使用puret來完成(這是支持Rails3中從它開始),或使用開發插件,由我has_translations(現在我已經測試過它僅在軌道上2.3,但明年我會釋放出非常排序時間(版本0.4)將支持rails3)。

這非常容易使用。您可以通過單擊鏈接直接閱讀自述文件。

如果您有任何問題,請在github上給我寫信息。

1

爲了完整起見

你需要爲每個區域設置文件:使用

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>