0

目标
以各种语言显示多选字段(使用 selectpicker 样式)的默认错误消息。

描述
我有一个多步骤向导,想使用formvalidation.io JS 插件验证多选下拉菜单。我不知道如何使它工作,显示来自相应语言文件(en_US.js, de_DE.js)的默认消息。
我不明白的是如何使用默认错误消息进行来自 formvalidation.io 的选择验证。单语言的文档在这里,但我不知道如何使它适用于多种语言。

JS代码

 var _initValidation = function () {
        let language = window.uh.localeIso

        const plugins = () => {
            return {
                trigger: new FormValidation.plugins.Trigger(),
                bootstrap: new FormValidation.plugins.Bootstrap(),
            }
        }

        
        if (language === 'en_GB') { language = 'en_US'}
       
       // Step 1
        _validations.push(FormValidation.formValidation(
            _formEl,
            {

                locale: language,
                localization: FormValidation.locales[language],

                fields: {
                    company: {
                        validators: {
                            notEmpty: {},   // <---- this works with multiple languages
                        },
                    }
                    // and so on...
            },
                plugins: plugins(),
            },
        ))

        // Step 2
        _validations.push(FormValidation.formValidation(
            _formEl,
            {
              fields: {
                'job_ad_visible_country[]': {
                    validators: {
                        choice: {
                            min: 1,
                            max: 3,
                            message: {}    // <--- what here for the default validation message in multiple languages?
                            }
                        },
                     },
                   
                },
                plugins: plugins(),
            },
        ))
}

HTML 代码

...

<div class="col-xl-6">
            <div class="form-group">
                <label>{{ "job.wizard.two.country" | trans }}</label>
                <select class="form-control form-control-lg selectpicker"
                        name="job_ad_visible_country[]"
                        title="{{ "job.wizard.nothing-selected" | trans }}"
                        multiple="multiple"
                        data-depend-select="true"
                        data-dependent="country_region">
                    {% for country in countries %}
                        <option value="{{ country.getCountryId() }}" selected="selected">
                            {{ country.getName() | trans }}
                        </option>
                    {% endfor %}
                </select>
                <span class="form-text text-dark-40">
                    {{ "job.wizard.two.country.subtitle" | trans }}
                </span>
            </div>
        </div>

...

...当然在底部是 JS 脚本

<script type="text/javascript" src="{{ '/assets/wizard.js' | asset }}"></script>
<script type="text/javascript" src="/assets/translations/validation/{% if locale_iso() == 'en_GB' %}en_US{% else %}{{ locale_iso() }}{% endif %}.js"></script>

4

1 回答 1

0

解决方案:

在第 2 步中,缺少语言。所以它必须看起来像这样(要查看我如何获取语言代码,请查看我的问题):

 _validations.push(FormValidation.formValidation(
            _formEl,
            {

              locale: language,
              localization: FormValidation.locales[language],

              fields: {
                'job_ad_visible_country[]': {
                    validators: {
                        choice: {
                            min: 1,
                            max: 3,   
                            }
                        },
                     },
                   
                },
                plugins: plugins(),
            },
        ))

于 2021-07-22T08:32:45.097 回答