【问题标题】:Ruby on rails - moment.js switch languages with I18nRuby on rails - moment.js 使用 I18n 切换语言
【发布时间】:2016-08-10 10:47:04
【问题描述】:

我有时间使用momentjs-rails gem,并且我在javascripts/moment/es.js 中添加了西班牙语言环境。我使用 I18n gem,当我切换应用程序的全球语言时,我无法切换 moment 语言。

添加,moment.locale('es'); 使其显示为西班牙语,并添加; moment.locale('en'); 使其显示为英文,但不会随 I18n 改变。

我已经在 application.js.erb 中尝试过

<% if I18n.locale == :es %>
     moment.locale('es');
<% end %>
<% if I18n.locale == :en %>
     moment.locale('en');
<% end %>

moment 的语言仍保留为“顶部”选项,在本例中为“es”。

如此;

<% if I18n.locale == :en %>
     moment.locale('en');
<% end %>
<% if I18n.locale == :es %>
     moment.locale('es');
<% end %>

顶部选项是“en”,因此它以英文显示。

当我在 I18n 中更改语言时,如何使 moment.js 语言更改????

【问题讨论】:

  • 您是否在 application.js 文件中包含 //= require moment/es.js?
  • 是的,我的 application.js 文件中有 //= require moment //= require moment/es.js
  • 把这段代码放到application.html中,切换语言并刷新页面,看看它是否适合你,而不是把它放到application.js.erb中。
  • 好吧,我之前尝试过,但我一定犯了一个错误,因为您的代码对我有用。把它作为一个答案,我会接受它。

标签: jquery ruby-on-rails internationalization momentjs


【解决方案1】:

将此代码放在application.html中,切换语言并刷新页面。检查它是否适合你,而不是把它放到 application.js.erb 中。

 <script type="text/javascript">
   <% if I18n.locale == :en %>
     moment.locale('en');
   <% end %> 
   <% if I18n.locale == :es %>
     moment.locale('es');
   <% end %> 
</script>

谢谢

【讨论】:

    【解决方案2】:

    要做到这一点,你需要把web的实际i18n语言写成js,可以这样:

    在主布局或 application.js 中

    var i18n_locale = "<%= I18n.locale %>"
    

    以及何时初始化momentjs:

    moment.locale('en');
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-13
      • 2012-07-05
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 2021-09-11
      相关资源
      最近更新 更多