语言选项 语言切换 注意 前言 上一篇介绍了ABP扩展实体,并且在前端部分新增了身份认证管理和租户管理的菜单,在实现这两个功能模块前,先来解决一下界面文字国际化的问题。...vue-i18n中,就可以使用了。...这跟直接在前端做国际化有一点区别就是,后者的文本信息是写在前端,vue-i18n可以直接使用。而这里只是把文本信息改到后端,从后端获取后再设置到i18n中,本质是一样的。...接下来只需要把界面上对应的文本使用vue-i18n的$t()方法渲染就好了,比如: ? 前端需要改动的地方比较多,但都是类似的修改。。。直接看效果: ? ? ?...其实还是有点繁琐的,要配置的比较多,不知道有没有更好的方法,欢迎评论交流。。。
安装vue-i18n 直接在项目中执行安装命令:npm install vue-i18n --save 全局引入vue-i18n 在项目中引入vue-i18n,实例化vue-i18n将需要加载的语言包通过...步骤 1.在src下新建locale文件夹 在locale下建lang文件夹—-用来存放自己设置的多语言文件 index.js 入口文件 index.js里放置内容如下 import Vue...lib/locale/lang/en-US' import jaJP from 'vant/lib/locale/lang/ja-JP' Vue.use(VueI18n) // 自动根据浏览器系统语言设置语言...页面渲染 静态渲染时,用双大括号包裹,把数据当成变量引入,$t用来调用语言包中键对应的值。如果用的是element-ui动态绑定值,双引号即可。...$t('nav') } } ---- ---- 以上是根据浏览器自动切换语言 点击切换 //手动切换语言 change(){ if (this.
,或者标签的切换来展示不同的语言,控制语言的配置信息在locale中。...uni.getStorageSync('locale') :'zh_cn'4.在页面中使用使用$t('字段名')在html中获取,使用this....$t('字段名')在js中获取 {{$t('home')}} </view...uni.getStorageSync('locale') :'zh_cn'2.在until.js等一些公共方法的文件中无法使用this....checkLogin()) {toLogin();return Promise.reject({msg: i18n.t(`not_logged_in`)});}}总结在一些多语言项目中,固定的文字就需要定义在语言包中
在web开发中,国际化大部分情况是不用考虑的,因为大部分人开发的软件程序都只是给一小部分相同语言人用的。...在以往的的web开发中国际化的任务也是交给后端来处理,即生成html页面的时候已经是经过语言转换的了。在现在前段如此盛行的时刻,前段国际化也逐渐流行开来。...vue-i18n引入 vuejs官方的国际化插件推荐中,vue-i18n是相对来说入侵代码最小的,也是最容易上手的。 那么,从哪里引入vue-i18n呢?...最简单的办法就是从jscdn网站上引用,当然你也可以采用官方readme中的引入办法。...在模板中也可以使用,但是注意字符串转义,类似''
当然是直接用插件了,并不是自己实现 vue-i18n使用很简单: 安装依赖:npm i vue-i18n -S 引入、调用: import VueI18n from 'vue-i18n'; Vue.use...$mount('#app') 内部会把i18n通过mixin合并到vue实例上,新加属性i18n、t等属性方法。 直接使用: {{$t('lang.login')}} 切换语言: this....实现起来很简单,你可以打印$t看看,其实就是一个方法,返回对应的内容: ? 难的是内容对应的zh.js和en.js,更别说其他语言了。...当然,vue-i18n还提供了其他属性和方法,只是官网我打不开,没办法多说一些。 element-ui也是通过切换语言文件实现的。...另外就是如果要切换过程页面整体布局不会很明显,对每一个内容高度宽度要稍微注意一下,毕竟不同语言宽高比例不一样。至于vue官网的,我看见是直接地址都变了,也不知道是不是采用这种思路,直接替换文本内容。
安装 vue-i18n 国际化 安装依赖: npm i vue-i18n 新建文件夹 i18n: //新建index.ts import { createI18n } from 'vue-i18n...`common.test`) }} import i18n from '@/i18n'; i18n.global.t('common.test'); //修改语言 i18n.global.locale.value...import { ElMessage } from 'element-plus' 使用 unplugin-element-plus 自动导入,使用 ElMessage、ElLoading 等组件,需要手动导入样式...tailwind.config.js 把缺失的补全,可能会好一点,还有一种生效了,但是不知道有没有另外的问题: // tailwind.config.js plugins: [ function...,看了很久,也试了很多次,发现全部替换都不生效,一直在 additionalData:这个配置里面引入,看 sass 变量混合之类的问题,忽略了一句:然后在你的项目入口文件中,导入这个样式文件以替换 Element
> export default { name: "Bilingual" } 你先在另一个文件中弄好翻译,然后通过 $t 引用,这就是 vue-i18n 的工作方式...$t is not a function" 这是因为我们并未安装 vue-i18n,所以全局的 $t 方法并不存在。...(译注:通过这种方式就不能在单元测试中耦合与特定语言相关的内容了,因为翻译功能实际上已失效,也更无法处理可选参数等) 使用配置设置默认的 mocks 有时需要一个 mock 的默认值,这样就不用为每个测试用例都设置一遍了...Mock Value" 这个示例中用到了 Jest,所以我将把默认 mock 描述在 jest.init.js 文件中 -- 该文件会在测试运行前被自动加载。... (译注:依然无法应付复杂的翻译) 总结 本文论述了: 在测试用例中使用 mocks 以 mock 一个全局对象 用 config.mocks 设置默认的 mock
基本使用 安装 npm install –save vue-i18n 创建lang 文件夹 index.js中引入 i18n并使用 import Vue from 'vue' import VueI18n...from 'vue-i18n' Vue.use(VueI18n) const i18n = new VueI18n({ // 设置当前语言 locale: 'zh', messages...,比如默认的是中文,无论你后期改成什么状态,最后重新加载时一定是中文 此时需要设置系统的语言环境 使用localStorage去辅助完成国际化的语言环境设置 比如目前只支持中英文 此时需要获取当前的语言状态.../en' Vue.use(VueI18n) //设置语言环境 //获取浏览器的语言 //console.log(navigator.language) //浏览器的语言 const navLang =...== 'en-US'){ localLang = en } //console.log(localLang) //获取localStorage(本地存储)的语言状态,如果没有设置为默认的语言环境
官方文档有提供引入和使用方法。...亲测无效 不知道是不是我nuxt3 3.8版本的原因, 在nuxt.config.ts中配置vueI18n会提示 输入内容错误,因为输入的是对象,但是检测需要我传一个地址。报错。...nuxt3提供的i18n使用方法 也是没什么用。也是第一次遇到官网示例没用的情况。.../locales/*.json') ] }) ] }})plugins中将i18n在vue中使用配置好后 在plugins目录下创建i18n.ts文件。.../i18n/zh'export default defineNuxtPlugin(({ vueApp }) => { // 这里设置了默认启动时从cookie获取语言配置。
/dist/vue-i18n.js"> npm npm install vue-i18n yarn yarn add vue-i18n vue-i18n 在 vue 单页面中使用...}); vue-i18n 在 vue,vuetify 项目中使用 src/plugins/vuetify.js 中引入 vue-i18n..., 设置后导出 import Vue from 'vue' import Vuetify from 'vuetify' import 'vuetify/dist/vuetify.min.css' import...(opts) // 导出 i18n export { vuetify, i18n } 设置单个按钮国际化文本, 注意: vuetify 中的模板和常规 vue 项目中的模板不一致 {{$vuetify.lang.t...('$vuetify.examplesButton')}} 设置列表国际化处理,列表为通过 Data 动态生成的,Data 数据必须写在 computed 中 ...
// 准备翻译的语言环境信息 // 设置地区信息 messages: { en: { message...的 $t 方法的实现,揭开国际化翻译的神秘面纱 在 extent.js 中,我们看到在 Vue 的原型中挂载 $t 方法,这是我们为什么能够直接在模板中使用的原因。...// 在 Vue 的原型中挂载 $t 方法,这是我们为什么能够直接在模板中使用的原因 // 把 VueI18n 对象实例的方法都注入到 Vue 实例上 Vue.prototype....现在要做的就是去监听这些 data 的变化 Vue-i18n 的这一块的逻辑主要是在 mixin.js 文件中,在 beforeCreate 中调用 watchI18nData 方法,这个方法的实现如下...-- `preserve` 修饰符 --> 在 directive.js 中,我们看到实际上是调用了 t 方法和 tc 方法,并给 textContent
i18n = createI18n({ locale: getCookie('blueking_language') || 'zh-cn', fallbackLocale: 'zh-cn',// 设置备用语言... { ...chineseJson }, },});// window.i18n = i18n;export default i18n;注意:globalInjection 为true使用注意事项:在vue...模板()中与 defineComponent render 函数中直接使用this....$t 是没有任何问题的。...$t('国际化示例')} ); },});但是 在step 函数中,需要import { defineComponent } from
// 准备翻译的语言环境信息 // 设置地区信息 messages: { en: { message...其中左侧是 Vue-i18n 提供的一些方法、组件、自定义指令等能力,右侧是 Vue-i18n 对数据的管理 入口文件为 index.js,在 VueI18n 类中的 constructor 中先调用...的 $t 方法的实现,揭开国际化翻译的神秘面纱 在 extent.js 中,我们看到在 Vue 的原型中挂载 $t 方法,这是我们为什么能够直接在模板中使用的原因。...// 在 Vue 的原型中挂载 $t 方法,这是我们为什么能够直接在模板中使用的原因 // 把 VueI18n 对象实例的方法都注入到 Vue 实例上 Vue.prototype....现在要做的就是去监听这些 data 的变化 Vue-i18n 的这一块的逻辑主要是在 mixin.js 文件中,在 beforeCreate 中调用 watchI18nData 方法,这个方法的实现如下
详细步骤 安装vue-i18n npm install vue-i18n -S 引入 在main.js中引入vue-i18n import VueI18n from 'vue-i18n' Vue.use...初始化 const i18n = new VueI18n({ locale: 'cn', // 默认语言 messages }) vue-i18n挂载到vue实例 new Vue({ el:...'#app', router, i18n, // i18n template: '', components: { App } }) vue模板文件中使用 {{ $t(...$t("message.hello") + this.$t("message.author"); } } 切换语言 this....$i18n.locale = 'en' // 切换英文 单独定义语言文件 并加载到vue-i18n初始化中 // cn.js export default { message: { hello
安装vue-i18n yarn add vue-i18n 在public文件夹下新建languages文件夹,在新建langs文件夹和i18n.js,langs文件夹下新建index.js、cn.js、...,接下来我们写切换多语言功能,在src下的app.vue文件中引入多语言文件和我们写切换的方法: created内容如下: created() { // 默认中文 localStorage.lang...,在别的组件我们只要调用这个方法就可以切换多语言。...页面适配多语言分为view中使用和js中 view中我们用 :label="$t('logistics.search')" 或者 {{$t('logistics.search')}} js中我们用 this...$t("logistics.search") 简单测试下切换多语言,在login.vue(你可以是任意组件中)写调用方法 显示效果 多语言适配完成,但是,如果我们系统文字多,那一个文件会很大,加载很慢
最近vue项目需要中英文切换,查了资料,发现大部分都是采用 vue-i18n,但是写的比较简单,大部分都是全局引入语言包,遇到的几个问题 1、如何结合element-ui 实现中英文切换 2、如何在组件中使用各自的语言包...3、中英文切换如何刷新页面,特别是中英文切换时根据当前语言调用中文或者英文接口 全局引入语言包实现中英文切换 一、安装vue-i18n,我安装的版本是 "vue-i18n": "^8.22.0",...} } 关于如果实现中英文切换时根据当前语言调用中文或者英文接口 ( 通过provide inject 实现 ),假如中英切换按钮在Home.vue上,Home.vue含有 <el-button @click="changeLanage...console.log(res.data.info); this.info = res.data.info; }); }, }, }; 发现在子组件<em>中</em>同时使用全局的<em>语言</em>包和局部<em>语言</em>包
请求public目录下的对应json文件,调用VueI18n的方法动态进行设置。...type=module字段,但是都要做很多修改,这咋办呢,有没有更简单的方法呢?...然后在main.js里面获取完用户信息后立刻请求并设置多语言: // /src/main.js import { setLanguage } from '....(`/i18n/${language}/index.json`) languageCache[language] = languageData = data } // 设置语言环境的...通过CLI插件生成初始多语言文件 最后还有一个问题,就是项目初始化时还没有多语言文件怎么办,难道项目创建完还要先手动运行命令编译一下多语言?
vite 天生支持 typescript 使用ts更加友好 vite 带有css 预处理器,包括less scss 使用都可以不用安装loader,(在webpack中需要安装loader) vite在修改...创建i18n文件 使用方法如下 import { App } from 'vue' import { createI18n } from 'vue-i18n' import { zh } from '...({ legacy: false, locale: localStorage.getItem('lang') || language, // 优先从本地存储获取语言设置,如果没有则使用浏览器默认语言...fallbackLocale: 'en', // 当前语言无法找到匹配的翻译时,使用的备选语言 messages: { en, zh } }) // 封装i18n方法 export...as any)[name]) 做了这些工作,在页面内修改path就可以进行页面切换了, 切换语言 封装切换项目语言组件,可以写在项目公用组件库里 components文件夹里 changeLang组件内容
vue2异步加载之前说过,vue3还是之前的方法,只是把 i18n.setLocaleMessage改为i18n.global.setLocaleMessage但是本文还是详细说一遍:为什么需要异步加载语言包主要还是缩小提代码包...dayjs.locale('zh-cn');}const i18n = createI18n({ locale: currentLang, fallbackLocale: 'zh-cn', // 设置备用语言...{ ...chineseJson },};*/const i18n = createI18n({ locale: currentLang, fallbackLocale: 'zh-cn', // 设置备用语言...,比如初始化只加载 fallbackLocale ,代码中注释的部分vue3使用vue-i18n 9.x ,相关方法在i18n.global.xxx但是这个加载包还是有些打,需要进一步拆分按模块或路由加载语言包这个优化有很多措施拆分模块之前的语言包全部是在一个...然后在路由钩子里面,按需注入。
' } }, zh: { message: { hello: '世界' } } } 从上面的代码中可以看出,hello是一个公众变量,在中文网站中显示为“世界”,在英文网站中为“...如何加载到全局呢,在Vue的项目中,就需要用到Vue-i18n这个模块。代码如下: main.js import Vue from 'vue' import App from '....$t("message.hello")) } } 打印结果为世界,因为在创建vue-i18n实例的过程中我们传入了两个参数,local和messages...然后在实例化组件的过程中将i18n传入,这样组件中就可以访问$t这个函数了,通过这个函数,我们可以取出messages中的属性值,将其渲染到页面中。...核心是在实例化的过程中通过local这个参数来实现实现语言的切换,message来实现语言包的加载,开发者只需将需要翻译的公共部分抽离出来放到message中即可。
领取专属 10元无门槛券
手把手带您无忧上云