Rails i18n同时显示两种语言

时间:2018-07-31 10:12:40

标签: ruby-on-rails rails-i18n

我在网站上使用两种语言,英语和丹麦语。

1)我有一个看起来像这样的链接列表:

<%= link_to html_viewer_url(activity.course, activity), target: '_blank' do %>
    <%= t('.show') %>
    <i class="fa fa-angle-right" aria-hidden="true"></i>
<% end %>

翻译t('.show')在大多数情况下会显示正确的语言,但是如果该语言设置为英语,则时不时地会以丹麦语显示其中一个或两个链接,反之亦然。

2)我有一个指向http://localhost:3000/da/users/edit的链接。当我在此页面上并按链接切换语言时,URL更改为...:3000/en/...,但语言仍为丹麦语。如果然后我单击最初将我带到/users/edit的链接,则语言将切换为英语。每次单击时,它会在英语和丹麦语之间切换。但是URL保持不变,包含/en/。这仅在.../users/edit页上发生,在其他地方则没有发生。

要切换语言,请使用以下链接。 default_localeda

<% if I18n.locale == I18n.default_locale %>
    <%= link_to "English", { :locale=>'en' } %>
<% else %>
    <%= link_to "Dansk", { :locale=>'da' } %>
<%end%>

在我的routes.rb中,用户URL如下:

scope "/:locale" do
    resources :users, except: [:new, :create, :edit]
end

与其他更改语言的页面相同。

有什么想法会导致这种情况吗?

编辑: 这是呈现列表时的外观示例。 enter image description here

您会看到第三行是英语,其他行是丹麦语。选择的语言是英语。

1 个答案:

答案 0 :(得分:4)

您使用的是哪个版本的Rails?

我的猜测是您正在使用fragment caching(可能默认情况下),但是没有在缓存键中包含语言环境。我还没有尝试过,但是也许cache_with_locale gem可以解决您的问题。