【发布时间】:2020-09-13 14:17:19
【问题描述】:
当我开始扩展我的应用程序时,我发现了一个大问题!我正在开发一个没有i18n 的多语言双向应用程序。基本上我有一个像下面这样的语言 json 文件:
{
"fa":{
"dir": "rtl",
// ....
},
"en":{
"dir": "ltr",
//....
}
}
我将它存储在我的 vuex 状态 lang 在 nuxtInitServer 上。但我有两个问题。
首先,如何在我的 scss 文件中访问它来更改字体系列?
其次,如何在我的插件中访问它? 至于插件,我的解释如下:link to question
顺便说一句,有没有办法在 nuxt 中定义一个全局变量,以便在任何地方访问,当然是可变的(不像 env 那样是静态的)。例如,当我更改语言时,能够访问 .js 和 .scss 文件中的当前语言。
更新 这是我需要访问存储的实际插件代码:
import Vue from 'vue'
import { required, email , alpha , alpha_spaces , numeric , confirmed } from 'vee-validate/dist/rules'
import { extend, ValidationObserver, ValidationProvider, setInteractionMode } from 'vee-validate'
import { store } from 'vuex'
Vue.prototype.$something= function (){
let lang = store.state.lang
}
setInteractionMode('eager')
extend('required', {
...required,
message: `{_field_} ${$lang.error_required}` // this is were i'm gonna use my vuex state
})
extend('email', email)
extend('alpha', alpha)
extend('numeric', numeric)
extend('alpha_spaces', alpha_spaces)
extend('confirmed', confirmed)
extend("decimal", {
validate: (value, { decimals = '*', separator = '.' } = {}) => {
if (value === null || value === undefined || value === '') {
return {
valid: false
};
}
if (Number(decimals) === 0) {
return {
valid: /^-?\d*$/.test(value),
};
}
const regexPart = decimals === '*' ? '+' : `{1,${decimals}}`;
const regex = new RegExp(`^[-+]?\\d*(\\${separator}\\d${regexPart})?([eE]{1}[-]?\\d+)?$`);
return {
valid: regex.test(value),
};
},
message: '{_field_} ' + ''
})
Vue.component('ValidationProvider', ValidationProvider);
Vue.component("ValidationObserver", ValidationObserver);
【问题讨论】:
标签: vue.js vuejs2 vuex nuxt.js