2012-12-09 29 views
0

我已經建立了一個簡單的Rails應用程序,它基於Post,Comment的默認文檔。 - >http://edgeguides.rubyonrails.org/getting_started.html如何本地化Rails 3中的現有內容?

什麼會從這些帖子本地化現有內容的適當的方式?

如果我假設郵政有一個:標題和「內容,我希望這個內容不僅用英文輸入,還用德語和荷蘭語輸入,那麼如果我想要最終結果以類似於此:

http://0.0.0.0:3000/en/posts.json獲得英語的所有帖子,並分別 http://0.0.0.0:3000/de/posts.json德國

我還沒有找到一個寶石然而,這將支持這樣multilangual內容

我所看到的?許多現有的方法,主要是在應用中離子像Wordpress或Drupal,它們不是基於軌道的。

我想首選的方法是將EN和DE帖子存儲在單獨的表格中(但是接着如何添加新的語言?),或者將所有的翻譯放在同一個數據庫表格中,但是以不同的方式分開翻譯,但如何使用正確的語言輕鬆地在json中使用它們?

我真的很困惑和不解,爲什麼這樣一個「共同」的問題,是不是在Rails的默認情況下解決,或者也許我只是找錯了地方。

回答

1

Globalize3會做你想做的事情。它將特定模型的所有翻譯存儲在單獨的表格中,locale列標識特定翻譯的語言。這使得添加新語言成爲可能,而無需遷移數據庫,因此這種方法具有很高的可擴展性。

還有其他的翻譯內容的寶石,例如, Traco是我所知道的,但是這個將翻譯存儲在與模型相同的表中,所以當您添加新語言時,您必須遷移每個模型表。我個人更喜歡Globalize3的方法,雖然它讓寶石本身在內部更加複雜。

+0

我看着Globalize3寶石。我不清楚,它將如何影響表單,以及在應用運行時如何選擇語言。也許你可以詳細說明一下? – Cninroh

+1

語言選擇基於'I18n.locale'和(可選)'Globalize.locale'設置進行。如果將'I18n.locale'設置爲':de',那麼無論何時訪問模型上的屬性,比如說'post.title',Globalize都會攔截它,而不是在'posts中查找'title'列'表中,它會在'post_translations'表(Globalize3創建的用於存儲模型翻譯的表)中查找它。當它搜索該數據庫表時,它還會將當前語言環境(':de')添加到該查詢中,以便只用德語獲取'title'。那有意義嗎? –

+0

它是非常有意義的,我從一個視圖更多地考慮「如何更改區域設置」。 – Cninroh

相關問題