首页 > 其他分享 >Vue中使用 vue-i18n 进行国际化支持

Vue中使用 vue-i18n 进行国际化支持

时间:2023-03-23 11:33:18浏览次数:36  
标签:vue 语言 title multilingual Vue i18n import

前端国际化学习

前端国际化是很多地方都能用到的,今天学习一下用 vue3 + vite + ts + vue-i18n 插件来开发前端国际化项目

  1. 安装插件 vue-i18n

    npm install vue-i18n
    
  2. 创建翻译文件
    -在 src 目录下新增 lang 目录,存放多语言文件
    -这里简单创建了两个文件,用于中英文翻译 后续可以继续添加多语言文件
    image

    // en.ts
    export default {
     multilingual: {
      title: 'This is multilingual page!',
      input: "Please enter the content",
      button: "switch the language",
     }
    }
    // zh.ts
    export default {
     multilingual: {
      title: '这是多语言页面',
      input: "请输入内容",
      button: "切换语言",
     }
    }
    
  3. 在vue中引入使用 vue-i18n

    // main.ts
    // 引入多语言模块
    import { createI18n } from "vue-i18n";
    // 引入cookie (使用了js-cookie用于便捷操作cookie)
    import Cookies from "js-cookie";
    // 引入多语言文件
    import enLocale from "./lang/en";
    import zhLocale from "./lang/zh";
    
    const messages = {
     en: {
      ...enLocale,
     },
     zh: {
      ...zhLocale,
     },
    };
    
    // 创建多语言实例
    const i18n = createI18n({
      legacy: false, // 使用3.x版本
      locale: Cookies.get("language") || "en", // 默认语言
      messages:messages, // 多语言配置
    });
    
    // 链式调用方法 createApp(App).use(i18n)
    app.use(i18n);
    
  4. 使用多语言在页面内替换原本文字

    <template>
      <div class="multilingual">
    	<h1>{{ $t("multilingual.title") }}</h1> <!-- 普通文本使用方式 {{ $t('multilingual.title') }} -->
    	<input
    	  type="text"
    	  :placeholder="$t('multilingual.input')" 
    	/><!-- 标签内使用方式 :placeholder="$t('multilingual.password')" -->
    	<button @click="changeLanguage">{{ $t("multilingual.button") }}</button>
      </div>
    </template>
    
    <script lang="ts" setup>
    import Cookies from "js-cookie";
    import { useI18n } from "vue-i18n";
    
    const { t } = useI18n();
    console.log(t("multilingual.title")); // js内使用方式 t("multilingual.title")
    
    /**
     * 切换语言
     */
    const changeLanguage = () => {
      Cookies.set(
    	"language",
    	Cookies.get("language") === "zh" ? "en" : "zh",
      );
      window.location.reload(); // 刷新页面
    };
    </script>
    
    • 页面内效果
      • 中文
        image

      • 英文
        image

标签:vue,语言,title,multilingual,Vue,i18n,import
From: https://www.cnblogs.com/nancheng0/p/17246846.html

相关文章

  • vue3 使用reactive定义变量时,会出现数据变化,页面未更新渲染
    vue3使用reactive定义变量时,会出现数据变化,页面未更新渲染,具体情况如下:import{reactive}from'vue';consttestObject=reactive({ show:false, titleL:'这里是标......
  • 如何创建electron-vue项目?
    简介electron是一个开源的桌面端框架,上手快,界面美观,跨平台,但由于是封装的网页,性能一般,适用于一些追求外观,对性能要求不高的项目,此处记录基于electron-vue创建项目的全流程......
  • vue设置input不可编辑切换
    <a-inputname="a"v-model="formValidate.coName"placeholder="请输入姓名"v-bind:disabled="diasabledInput"></a-input>exportdefault{data()......
  • Vue3中KeepAlive的使用
      我们在开发一个功能是,经常会遇到从一个列表页面,点击列表项跳转到详情页面的需求,理想的情况下,从详情页面返回到列表页,应该回到跳转前的状态,可以继续浏览其他内容;但是在......
  • Vue进阶(二十五):<component>实现动态组件
    一、前言<component>元素是vue里面的内置组件。在<component>里面使用:is,可以实现动态组件的效果。二、示例解析下面例子创建一个包含多子组件的vue实例。vue......
  • 在基于vue-next-admin的Vue3+TypeScript前端项目中,为了使用方便全局挂载的对象接口
    在基于vue-next-admin 的Vue3+TypeScript前端项目中,可以整合自己的.NET后端,前端操作一些功能的时候,为了使用方便全局挂载的对象接口,以便能够快速处理一些特殊的操作,如......
  • vue学习笔记01
    vue3带来的变化vue3的发布时间2020/09/19。优点:更好的性能、更小的包体积、更好的TypeScript集成、更优秀的API设计。optionsAPI->CompositionAPI,由选项API......
  • Vue.js 具名插槽
    视频componentsCategray.vue<template> <divclass="category"> <h3>{{title}}分类</h3> <!--定义一个插槽(挖个坑,等着组件的使用者进行填充)--> <slotname="ce......
  • Vue.js 默认插槽
    默认插槽视频componentsCategray.vue<template> <divclass="category"> <h3>{{title}}分类</h3> <!--定义一个插槽(挖个坑,等着组件的使用者进行填充)--> <slot>......
  • Vue3学习笔记 —— 状态管理、Vuex、Pinia (未完结)
    优秀文章分享:vue中使用vuex(超详细)-掘金(juejin.cn)一、状态管理1.1、什么是状态管理?理论上来说,每一个Vue组件实例都已经在“管理”它自己的响应式状态了。我们以......