我有一个多语言应用程序,可以更改链接上的语言,它始终位于页面顶部。
<%= link_to "English", :locale => 'en' %>
<%= link_to "French", :locale => 'fr' %>
当我点击任何链接时,param [:locale]会发生变化,所有翻译都会显示正常。但是,当我单击任何URL时,链接将保持当前的区域设置。它不会更改新网址的实际路径。
控制器
before_action :set_locale
def default_url_options
{ locale: I18n.locale }
end
def set_locale
I18n.locale = params[:locale]
end
路线
namespace :admin do
scope "(:locale)", locale: /en|fr/ do
// resources
end
end
我想在单击链接更改区域设置时,页面中的所有内容都会更改,包括路径。目前它只加载正确的翻译文件,但不更新路径。
谢谢!
答案 0 :(得分:0)
将路线更改为
scope "(:locale)", locale: /en|fr/ do
namespace :admin do
// resources
end
end
它将为您提供fr fr / admin
等路线然后不要忘记视图中的路线
<%=link_to 'English', root_path(locale: 'en') %>
或管理员路线
答案 1 :(得分:0)
过了一会儿,我意识到我的应用程序控制器扩展了管理员控制器。我在两个控制器中都有before_action :set_locale
。出于某种原因,这与语言切换混淆了。不确定为什么翻译正确加载但链接没有更新。