我正在学习Rails,我想为我的应用设置本地化。我可以毫无问题地为每个用户做到这一点(即每个用户都可以选择他们的语言并且应用程序更改为所选语言)但我想在登录前添加更改语言的选项,这样每个人都可以理解应用程序的工作方式或内容它提供,联系和关于页面等。
我添加了一个包含语言列表的下拉菜单,每个按钮都会在我的“staticpages”控制器上调用一个操作。以下是下拉列表的结果:
<ul class="dropdown-menu">
<% get_languages_list.each do |lan| %>
<li> <%= link_to lan[0], {controller: "static_pages", action: "change_locale", locale: lan[1]}, method: "post" %></li>
<%end%>
</ul>
其中get_languages_list是一个帮助器,它返回数组,其数组包含我的应用程序支持的人类名称,例如[[“English”,“en”],[“Español”],[“es”], ...]。它所称的行动就是这个:
def change_locale
if params.include? :locale
I18n.default_locale = lan locale
end
redirect_to root_path
end
我认为这样就足够了,但似乎I18n不记得该语言环境是什么。使用我的用户模型,为了更改语言环境,我所做的是before_action过滤器并将语言环境设置为用户的语言环境,但在这种情况下,当我没有打开任何会话时,如何将语言环境更改为特定的一个由用户选择?