nux*_*xxx 7 ruby ruby-on-rails rails-i18n ruby-on-rails-4
我的Rails应用程序是在rails 4.0.2上,我在使用locale变量和params[:locale]从官方rails 指南之后的url方案切换翻译时遇到问题.我有一个单页的网站我的网站.
我的国际化路线:
scope "(:locale)", locale: /en|de/ do
#my routes here
end
Run Code Online (Sandbox Code Playgroud)
我的应用控制器
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
#Rails.application.routes.default_url_options[:locale]= I18n.locale
end
# app/controllers/application_controller.rb
def default_url_options(options = {})
{ locale: I18n.locale }.merge options
end
Run Code Online (Sandbox Code Playgroud)
用于更改视图中区域设置变量的链接:
<%= link_to_unless I18n.locale == :en, "English", locale: :en %>
|
<%= link_to_unless I18n.locale == :de, "Deutsch", locale: :de %>
Run Code Online (Sandbox Code Playgroud)
会发生什么:locale变量设置正确但翻译没有切换.如果我删除其中一个翻译文件(目前用于英语和德语),语言将切换到剩余的翻译文件.当我放回另一个翻译文件并尝试通过更改语言环境变量切换到它时,它永远不会切换到另一种语言.
为什么我的代码没有改变翻译?
我认为您需要更明确地定义对区域设置的约束:
scope path: '(:locale)', constraints: { locale: /en|de/ } do
# routes you want to localize
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1088 次 |
| 最近记录: |