【问题标题】:Spree_i18n front-end custom localeSpree_i18n 前端自定义语言环境
【发布时间】:2015-01-21 04:05:03
【问题描述】:

我正在尝试自定义 Spree_i18n 前端导航栏语言环境,但在将其从 select_tag 更改为 link_to 时遇到了一些问题。我试图让它出现只有两个语言环境选择 EN/CN。最好的解决方案是什么?

locale.js

load = function() {
  return $('#locale-select select').change(function() {
    return $.ajax({
      type: 'POST',
      url: $(this).data('href'),
      data: {
        locale: $(this).val()
      }
    }).done(function() {
      return window.location.reload();
    });
  });
};

navbar.html.erb

<li id="locale-select" data-hook>
  <%= form_tag set_locale_path, class: 'navbar-form' do %>
    <div class="form-group">
      <label for="locale" class="sr-only"><%= t(:'i18n.language') %></label>
      <%= select_tag(:locale, options_for_select(supported_locales_options, I18n.locale), class: 'form-control', data: { href: set_locale_path }) %>
      <noscript><%= submit_tag %></noscript>
    </div>
  <% end %>
</li>

【问题讨论】:

  • 您有什么问题?
  • 我相信 Spree 正在使用会话来更改语言环境。当我尝试 。该 url 将呈现 localhost:3000/localeset?locale=en,并将重定向到 root_path。我想摆脱 localeset?locale=en 并让它不重定向到 root_path。

标签: internationalization locale spree


【解决方案1】:

我的自定义变体

<%= link_to 'en', spree.set_locale_path(switch_to_locale: :en), method: :post %>

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 2017-02-25
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多