【发布时间】:2015-07-19 07:06:21
【问题描述】:
我的 Rails 应用程序在 rails 4.0.2 上,我在使用官方 rails guide 之后的 url 方案中的 locale 变量和 params[:locale] 切换翻译时遇到问题。我有一个单页网站my site。
我的国际化路线:
scope "(:locale)", locale: /en|de/ do
#my routes here
end
我的应用程序控制器
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
在视图中更改语言环境变量的链接:
<%= link_to_unless I18n.locale == :en, "English", locale: :en %>
|
<%= link_to_unless I18n.locale == :de, "Deutsch", locale: :de %>
发生了什么:locale 变量设置正确,但翻译没有切换。如果我删除其中一个翻译文件(当前为英语和德语),语言将切换到剩余的翻译文件。当我放回另一个翻译文件并尝试通过更改语言环境变量来切换到它时,它永远不会切换到另一种语言。
为什么我的代码没有改变翻译?
【问题讨论】:
-
我希望你能修补它,因为 Rails 4.0.2 存在一些严重的安全问题,强烈建议使用 4.0.13。像Gem Canary 这样的工具可以让您在此类问题成为麻烦之前提前发现问题。
-
我修补了 gemset rails 4.0.13,感谢您的建议。
标签: ruby-on-rails ruby ruby-on-rails-4 rails-i18n