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

vue3 环境配置vue-i8n国际化

一.依赖和插件的安装

主要是vue-i18n和 vscode的自动化插件i18n Ally

https://vue-i18n.intlify.dev/

npm install vue-i18n@10
pnpm add vue-i18n@10
yarn add vue-i18n@10

vscode在应用商城中搜索i18n Ally:如图

二.实操

安装完以后在对应项目中的跟package.json同级的目录下建立对该i8n ally插件的设置,也可以设置为全局 在.vscode文件下新建setting.json配置如下:

{
	"i18n-ally.localesPaths": ["src/lang"], // 项目的翻译的储存路径
	// 如下须要手动配置
	"i18n-ally.keystyle": "nested", // 翻译路径格式 (翻译后变量格式 nested:嵌套式  flat:扁平式)
	"i18n-ally.sortKeys": true,
	"i18n-ally.namespace": true,
	"i18n-ally.enabledParsers": ["json"], // 翻译文件可允许的格式,默认json
	"i18n-ally.sourceLanguage": "zh", // 根据此语言文件翻译其他语言文件的变量和内容
	"i18n-ally.displayLanguage": "zh", // 显示语言
	"i18n-ally.extract.keygenStyle": "camelCase", // 翻译字段命名样式采用驼峰
	"i18n-ally.translate.engines": ["google"],
	"i18n-ally.enabledFrameworks": ["vue"],
	"i18n-ally.editor.preferEditor": true,
	"i18n-ally.extract.autoDetect": false
}

项目的语言国际化目录如图:

 

新建lang文件夹,新建en.json,zh.json,index.js

其中index.js是初始化vue-I18n的实例如下:

import { createI18n } from "vue-i18n";
import EN from "./en";
import ZH from "./zh";

const messages = {
	zh: {
		...ZH,
	},
	en: {
		...EN,
	},
};
const currentLang = window.sessionStorage.getItem("lang_IAP") || "zh";
const i18n = createI18n({
	locale: currentLang, // 设置当前语言类型
	legacy: false, // 如果要支持compositionAPI,此项必须设置为false;
	globalInjection: true, // 全局注册$t方法
	messages,
});

export default i18n;

 然后在main.ts中全局注册:

import i18n from "./lang";
import App from "./App.vue";


const app = createApp(App);


app.use(i18n);
app.mount("#app");

然后选中某个要翻译的vue单文件,在最左侧会出现一个关于i18n Ally插件的ui图标点击打开可以出现一个UI编辑器 对应的就是该vue单文件的文字解析如图:

需要知道两个功能一个是hard-coded,单击选择第一个生成对应的k-v值

第二个就是中文翻译成英文需要再下方确实的文案中选中 ,单击然后选择全部翻译如图:

此时就会自动在json中生成en.json,zh.json对应的k-v

自动捉取文字,翻译录入json,vue替换对应的语法就都自动完成了但是需要注意的vue单文件可能会报错,因为这个环境使用的是vue3而非vue2,所以$t可能找不到需要单独手动在每个vue单文件中 使用useFN去引出t函数:

import { useI18n } from "vue-i18n";
const { t } = useI18n();

至此大功告成!!! 希望学习的小伙伴也能成功,今天的学习就到这里啦

三.总结:

后续再总结,先发布一版哈哈


http://www.kler.cn/news/328496.html

相关文章:

  • Linux高级IO之poll与epoll
  • 基于Springboot+微信小程序 的高校社团管理小程序(含源码+数据库+lw)
  • TypeScript 算法手册【插入排序】
  • 搜维尔科技:SenseGlove DK1触觉反馈手套,远程操作机器人任务,保证你工作时的安全
  • js无法获取执行的线程号(Thread ID)
  • 【Golang】关于Go语言中的包
  • 超分服务的分量保存
  • Gateway和VirtualService
  • 代码随想录算法训练营day44
  • PostgreSQL 数据库语法学习:深入理解 `JOIN` 操作
  • 【AI基础】pytorch lightning 基础学习
  • 【JavaEE初阶】深入解析死锁的产生和避免以及内存不可见问题
  • 药品识别与分类系统源码分享
  • 【Transformer】长距离依赖
  • 微信小程序中的 `<block>` 元素:高效渲染与结构清晰的利器
  • 初识C语言(五)
  • 鸿蒙开发(NEXT/API 12)【硬件(传感器开发)】传感器服务
  • Unity 2D RPG Kit 学习笔记
  • 滚雪球学Oracle[8.1讲]:高级主题与未来趋势
  • vite 快速入门指南
  • Flask+微信小程序实现Login+Profile
  • python-ds:Python 中的数据结构库(适用于面试的数据结构和算法合集)
  • 眼镜识别数据集类别和数量已经在文档中说明,训练集和验证集共2200,g是眼镜,ng是没有眼镜。
  • 可视化图表与源代码显示配置项及页面的动态调整功能分析
  • 9、论文阅读:无监督的感知驱动深水下图像增强
  • Arduino UNO R3自学笔记6 之 Arduino引脚(IO)功能介绍
  • 电笔有用吗
  • 【PostgreSQL 】入门篇——支持的各种数据类型介绍,包括整数、浮点数、字符串、日期、JSON、数组等
  • 2024双十一有什么值得买?分享五款优质好物提高幸福感!
  • GPT对话知识库——bootloader是什么?ymodel协议是什么?