我想從瀏覽器中得到非符號的語言的用戶爲了這個,我有這樣的代碼在我的應用程序控制器允許現場切換的Rails的I18n HTTP_ACCEPT_LANGUAGE
def set_locale
if user_signed_in? && !current_user.language.blank?
I18n.locale = current_user.language
else
I18n.locale = extract_locale_from_accept_language_header
if user_signed_in? && current_user.language.blank?
current_user.language = I18n.locale
current_user.save
end
end
end
def default_url_options(options={})
{ :locale => I18n.locale }
end
private
def extract_locale_from_accept_language_header
preferred_language = request.env['HTTP_ACCEPT_LANGUAGE'] || ''
preferred_language = preferred_language.scan(/^[a-z]{2}/).first
available_locales= ("en" "fr")
if available_locales.include?(preferred_language)
preferred_language
else
"en"
end
end
想我的瀏覽器語言是法語,這給我http://localhost:3000/fr
但問題是,當用戶改變語言的非標誌英語,去例如http://localhost:3000/en/users/sign_up
另一個頁面的語言會改變法國,所以我得到http://localhost:3000/fr/users/sign_up
而不是http://localhost:3000/en/users/sign_up
所以我不知道我怎樣才能解決這個問題
這是我的路線文件
更新
scope :path => ":locale" do
.......
end
# Catch all requests without a locale and redirect to the default...
get '*path', to: redirect("/#{I18n.default_locale}/%{path}"), constraints: lambda { |req| !req.path.starts_with? "/#{I18n.default_locale}/" }
get '', to: redirect("/#{I18n.default_locale}")
請不要污衊你的帖子。 Stack Overflow的內容旨在幫助* everyone,而不僅僅是你。 – BradleyDotNET
此外,如果您希望與內容無關(無論出於何種原因),您可以使用「自定義」/「其他」標誌(不能取消關聯內容,但可以* *聯繫開發人員/ SE員工讓他們這樣做),或者您可以[直接聯繫團隊](http://stackoverflow.com/contact),讓他們代表您這樣做。 –