我有一個簡單的rails應用程序(甚至沒有數據庫驅動)。基本上我想讓它支持兩種語言。我對這樣的做法是有兩個小標誌在頁腳,GB之一(英語)和德國(爲德國)之一。當用戶點擊其中一個時,網站的語言將更改爲國家/地區標誌的相應語言。全球化我的rails應用程序
我有我的[en.yml]和[de.yml]所有的設置,我有用自己的鑰匙在我所有的意見,我也甚至測試他們通過交換[配置工作。 i18n.default_locale]屬性[config/application.rb]中的[en]和[de]之間。在這方面一切運作良好。
但是我堅持如何才能實現語言更改機制。我創建了一個名爲[語言]控制器和它,我已經定義了一個名爲[設置],但比其他方法,它是非常空,這裏是我認爲應該發生:
class LanguageController < ApplicationController
def set
I18n.locale = params[:lang]
redirect_to(:controller => 'home', :action => 'index')
end
end
以上沒有按似乎沒有用。當我撥打[/language/set?lang =「de」]時,本地化字符串將變爲鍵而非實際的德語翻譯文本!
另一件我被困在(我無法在i18n文檔中找到)的是我如何爲每個區域加載不同的圖像!
任何幫助將不勝感激。
謝謝。
謝謝米莎。我也在考慮這個問題,但沒有在文件中提出建議,因爲它建議不要爲此使用會話。無論如何,我已經按照你的建議完成了,但翻譯後的文本仍然不顯示,只有鍵,顯示的不是翻譯的值! – Ciwan 2013-03-09 14:36:43
@Ciwan - 我想你應該在'params [:lang]'上調用'.to_sym'來使它成爲一個符號而不是一個字符串。另外,你是在調用'/ language/set?lang =「de」'還是'/ language/set?lang = de'?它應該是後者。 – Mischa 2013-03-09 15:16:42
我看到了關於不在指南中使用會話的評論。我想這是有道理的。如果你想避免會話,你必須始終保持URL中的'?lang = de'。有(付費的)[Railscast](http://railscasts.com/episodes/138-i18n-revised)解釋瞭如何做到這一點。儘管有警告,但使用會話是最簡單的解決方案。 – Mischa 2013-03-09 15:23:23