【问题标题】:Rails i18n is showing two languages at the same timeRails i18n 同时显示两种语言
【发布时间】:2018-07-31 10:12:40
【问题描述】:

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

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

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

有什么可能导致这种情况的想法吗?

编辑: 这是渲染列表时的示例。

如您所见,第 3 行是英语,其他是丹麦语。并且选择的语言是英语。

【问题讨论】:

  • 你在使用turbolinks吗?
  • 是的,我正在使用 turbolinks。
  • 这是在黑暗中拍摄的,但请尝试不使用它们。

标签: ruby-on-rails rails-i18n


【解决方案1】:

您使用的是什么版本的 Rails?

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

【讨论】:

    猜你喜欢
    • 2020-09-27
    • 2023-03-28
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多