当前位置: 首页 > news >正文

vue3+ts使用vue-i18n

vue3+ts使用vue-i18n

1、安装插件

npm install --save vue-i18nyarn add vue-i18n

2、配置文件

locale/index.ts

import { createI18n } from 'vue-i18n'
import zhCN from './lang/zh-CN'
import enUS from './lang/en-US'export const LOCALE_OPTIONS = [{ label: '中文', value: 'zh-CN' },{ label: 'English', value: 'en-US' },
];
const defaultLocale = localStorage.getItem('locale') || 'zh-CN';
const i18n = createI18n({locale: defaultLocale,legacy: false, // 解决控制台报错 Uncaught SyntaxError: Not available in legacy modemessages: {'zh-CN': zhCN,'en-US': enUS,}
})export default i18n

locale/lang/zh-CN.ts

export default {'menu.list': '列表','menu.message': '信息',
}

locale/lang/en-US.ts

export default {'menu.list': 'List','menu.message': 'Message'
}

3、在main.ts引入

main.ts

import i18n from './locale'// 在app.mount之前
app.use(i18n)

4、在页面中使用

<template><div><ul><liv-for="(item, index) in locales":key="index"@click="changeLocale(item.value)">{{ item.label }}</li></ul><p>{{ $t('menu.list') }}</p><p>{{ $t('menu.message') }}</p><p></p></div>
</template><script setup lang="ts">
import { LOCALE_OPTIONS } from '@/locale'
import { useI18n } from 'vue-i18n'const locales = [...LOCALE_OPTIONS
]const i18n = useI18n()
function changeLocale(value: string) {i18n.locale.value = value;localStorage.setItem('locale', value)
}
</script>

5、解决控制台报错/警告

5.1、需要配置全局变量

  • 警告信息
You are running the esm-bundler build of vue-i18n. It is recommended to configure your bundler to explicitly replace feature flag globals with boolean literals to get proper tree-shaking in the final bundle.
  • 解决方案

vue.config.js

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({chainWebpack: (config) => {config.resolve.alias.set('vue-i18n', 'vue-i18n/dist/vue-i18n.cjs.js')},
})

5.2、遗留模式报错

  • 报错信息
Uncaught SyntaxError: Not available in legacy mode
  • 解决方案
import { createI18n } from 'vue-i18n'const i18n = createI18n({...legacy: false, // 解决控制台报错 Uncaught SyntaxError: Not available in legacy mode...
})
http://www.lryc.cn/news/137751.html

相关文章:

  • 在Ubuntu上安装和设置RabbitMQ服务器,轻松实现外部远程访问
  • Redis多机实现
  • ClickHouse安装及部署
  • [HarekazeCTF2019]Easy Notes-代码审计
  • nginx-location正则
  • 微信小程序胶囊位置计算,避开胶囊位置
  • 快速指南:使用Termux SFTP通过远程进行文件传输——”cpolar内网穿透“
  • 记录一个用C#实现的windows计时执行任务的服务
  • “深入剖析JVM内部机制:了解Java虚拟机的工作原理“
  • golang远程开发调试设置vscode插件失败解决方法记录
  • 数据结构:二叉树及相关操作
  • 4.物联网LWIP之C/S编程,stm32作为服务器,stm32作为客户端,代码的优化
  • 【C语言】扫雷游戏(可展开)——超细教学
  • 数据的深海潜行:数据湖、数据仓库与数据湖库之间的微妙关系
  • Docker 安装 Redis集群
  • 数据结构入门 — 链表详解_单链表
  • 从零学算法151
  • 【Vue】动态设置元素类以及样式
  • node和前端项目宝塔部署
  • 【Python原创毕设|课设】基于Python Flask的上海美食信息与可视化宣传网站项目-文末附下载方式以及往届优秀论文,原创项目其他均为抄袭
  • 【HTML】HTML面试知识梳理
  • Java进阶篇--IO流的第二篇《多样的流》
  • iPhone 14 Pro 动态岛的功能和使用方法详解
  • 掌握这20条你将超过90%的测试员
  • LightDB create table时列约束支持enable/disable关键字
  • 使用BeeWare实现iOS调用Python
  • 无公网IP内网穿透使用vscode配置SSH远程ubuntu随时随地开发写代码
  • 二叉树、红黑树、B树、B+树
  • 12,【设计模式】工厂
  • mysql 8.0 窗口函数 之 分布函数 与 sql server (2017以后支持) 分布函数 一样