jQuery验证没有设置正确的语言

时间:2018-03-07 10:46:25

标签: jquery ruby-on-rails coffeescript jquery-validate

我尝试使用jQuery验证来验证表单,但它似乎并没有以正确的语言返回错误消息。

在我的Rails应用程序中,我有:

的Gemfile

gem 'jquery-validation-rails'

的application.js

//= require rails-ujs
//= require turbolinks
//= require jquery
//= require bootstrap-sprockets
//= require jquery.validate
//= require jquery.validate.localization/messages_it
//= require jquery.validate.localization/messages_ja
//= require_tree .

我用以下方法调用验证器:

document.addEventListener 'turbolinks:load', ->
  $("#contact-form").validate
    submitHandler: (form) ->
      form.submit()

  $('#first_name').rules 'add',
    required: true,
    maxlength: 15

  $('#last_name').rules 'add',
    required: true,
    maxlength: 15

  $('#entry_email').rules 'add',
    required: true,
    maxlength: 60

  $('#phone-number').rules 'add',
    required: true,
    digits: true

我看到错误消息,但即使我将页面区域设置切换为enit,它们也会以日语显示。

出现的语言基本上是我在 application.js 文件中设置的最后一种语言。因此,如果我删除//= require jquery.validate.localization/messages_ja,那么我会收到意大利语的错误消息。

如何基于每个区域设置获取错误消息?

任何有关修复此问题的帮助都将非常感谢!

提前致谢

1 个答案:

答案 0 :(得分:1)

不要在app.js中加载jquery的翻译。直接在您的应用程序布局中执行

// in your layout file you have something like this:
<%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

// additionally load translations based on given params
<% if params[:locale].present? %>
  <%= javascript_include_tag "jquery.validate.localization/messages_#{params[:locale]}" %>
<% end %>

// OR loading based on I18n.locale
<%= javascript_include_tag "jquery.validate.localization/messages_#{I18n.locale}" %>