【sgGoogleTranslate】自定义组件:基于Vue.js用谷歌Google Translate翻译插件实现网站多国语言开发

sgGoogleTranslate源码
<template><div :id="$options.name"> </div>
</template>
<script>
export default {name: "sgGoogleTranslate",props: ["languages", "currentLanguage"],data() {return {//语言列表,遵循 ISO 639-1 标准,俩位的code(参考:https://zh.wikipedia.org/wiki/ISO_639-1)defaultLanguages: [{ code: "en", name: "English", cname: "英语", ename: "English", },{ code: "af", name: "Afrikaans", cname: "南非语", ename: "Afrikaans", },{ code: "sq", name: "Gjuha shqipe", cname: "阿尔巴尼亚语", ename: "Albanian", },{ code: "ar", name: "العربية", cname: "阿拉伯语", ename: "Arabic", },{ code: "hy", name: "Հայերեն", cname: "亚美尼亚语", ename: "Armenian", },{ code: "az", name: "Азәрбајҹан дили", cname: "阿塞拜疆语", ename: "Azerbaijani", },{ code: "eu", name: "Euskara", cname: "巴斯克语", ename: "Basque", },{ code: "be", name: "беларуская мова", cname: "白俄罗斯语", ename: "Belarusian", },{ code: "bg", name: "български език", cname: "保加利亚语", ename: "Bulgarian", },{ code: "ca", name: "Català", cname: "加泰罗尼亚语", ename: "Catalan", },{ code: "zh-CN", name: "Chinese (Simplified)", cname: "中文 (简体)", ename: "Chinese (Simplified)", },{ code: "zh-TW", name: "Chinese (Traditional)", cname: "中文 (繁体)", ename: "Chinese (Traditional)", },{ code: "hr", name: "Српскохрватски језик", cname: "克罗地亚语", ename: "Croatian", },{ code: "cs", name: "čeština", cname: "捷克语", ename: "Czech", },{ code: "da", name: "Danmark", cname: "丹麦语", ename: "Danish", },{ code: "nl", name: "Nederlands", cname: "荷兰语", ename: "Dutch", },{ code: "et", name: "eesti keel", cname: "爱沙尼亚语", ename: "Estonian", },{ code: "tl", name: "Filipino", cname: "菲律宾语", ename: "Filipino", },{ code: "fi", name: "Finnish", cname: "芬兰语", ename: "Finnish", },{ code: "fr", name: "Français", cname: "法语", ename: "French", },{ code: "de", name: "Deutsch", cname: "德语", ename: "German", },{ code: "el", name: "Ελληνικά", cname: "希腊语", ename: "Greek", },{ code: "hu", name: "magyar", cname: "匈牙利语", ename: "Hungarian", },{ code: "id", name: "Indonesia", cname: "印度尼西亚语", ename: "Indonesian", },{ code: "ga", name: "Irish", cname: "爱尔兰语", ename: "Irish", },{ code: "it", name: "Italiano", cname: "意大利语", ename: "Italian", },{ code: "ja", name: "にほんご", cname: "日语", ename: "Japanese", },{ code: "ko", name: "한국어", cname: "韩语", ename: "Korean", },{ code: "lt", name: "lietuvių kalba", cname: "立陶宛语", ename: "Lithuanian", },{ code: "ms", name: "Malay", cname: "马来西亚语", ename: "Malay", },{ code: "no", name: "norsk", cname: "挪威语", ename: "Norwegian", },{ code: "pl", name: "Polski", cname: "波兰语", ename: "Polish", },{ code: "pt", name: "Português", cname: "葡萄牙语", ename: "Portuguese", },{ code: "ro", name: "limba română", cname: "罗马尼亚语", ename: "Romanian", },{ code: "ru", name: "Русский", cname: "俄语", ename: "Russian", },{ code: "es", name: "Español", cname: "西班牙语", ename: "Spanish", },{ code: "sv", name: "Swedish", cname: "瑞典语", ename: "Swedish", },{ code: "th", name: "ภาษาไทย", cname: "泰语", ename: "Thai", },{ code: "tr", name: "Turkish", cname: "土耳其语", ename: "Turkish", },{ code: "uk", name: "українська мова", cname: "乌克兰语", ename: "Ukrainian", },],};},mounted() {//google翻译插件初始化window[this.$options.name] = () => {new window.google.translate.TranslateElement({pageLanguage: this.currentLanguage || "auto",//默认页面源语言code:zh-CN 简体中文includedLanguages: (this.languages || this.defaultLanguages).map(v => v.code).join(','),autoDisplay: true,layout: google.translate.TranslateElement.InlineLayout.horizontal},this.$options.name);};this.loadJS(`https://translate.google.com/translate_a/element.js?cb=${this.$options.name}`);//如果该网址无法在国内访问,将无法使用google翻译插件},methods: {loadJS(url, callback) {let script = document.createElement("script");script.type = "text/javascript";script.src = url;script.onload = script.onreadystatechange = function () {if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") {callback && callback();script.onload = script.onreadystatechange = null;}};document.querySelector("html").appendChild(script);},},
};
</script>
<style lang="scss" >
body {top: revert !important;
}.skiptranslate iframe {display: none;
}.goog-te-gadget {height: 50px;overflow: hidden;pointer-events: none;.goog-te-combo {pointer-events: auto;box-sizing: border-box;padding: 10px;background-color: white;box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);border-radius: 4px;margin-bottom: 10px !important; //把“由Google强力驱动”几个字隐藏掉}
}
</style>
用例
<template><div><sgGoogleTranslate /><br><br><p> 我一路向北,离开有你的季节,你说你好累,已无法再爱上谁。风在山路吹,过往的画面全都是不对,细数惭愧,我伤你几回。 </p><br><p> 我想我是太过依赖,在挂电话的刚才,坚持学单纯的小孩,静静看守这份爱,知道不能太依赖,怕你会把我宠坏,你的香味一直徘徊,我舍不得离开。 </p><br><p> 缓缓飘落的枫叶像思念,为何挽回要赶在冬天来之前,爱你穿越时间,两行来自秋末的眼泪,让爱渗透了地面我要的只是你在我身边。 </p></div>
</template><script>
import sgGoogleTranslate from "./sgGoogleTranslate";
export default { components: { sgGoogleTranslate, }, };
</script>
最原始的多国语言方法一分钟上手Vue VueI18n Internationalization(i18n)多国语言系统开发、国际化、中英文语言切换!_你挚爱的强哥的博客-CSDN博客这里以Vue2为例子。https://blog.csdn.net/qq_37860634/article/details/132250859
相关文章:
【sgGoogleTranslate】自定义组件:基于Vue.js用谷歌Google Translate翻译插件实现网站多国语言开发
sgGoogleTranslate源码 <template><div :id"$options.name"> </div> </template> <script> export default {name: "sgGoogleTranslate",props: ["languages", "currentLanguage"],data() {return {//…...
论文总结《A Closer Look at Few-shot Classification Again》
原文链接 A Closer Look at Few-shot Classification Again 摘要 这篇文章主要探讨了在少样本图像分类问题中,training algorithm 和 adaptation algorithm的相关性问题。给出了training algorithm和adaptation algorithm是完全不想关的,这意味着我们…...
Postman使用_参数设置和获取
文章目录 参数引用内置动态参数手动添加参数脚本设置参数脚本获取参数 参数就像变量一样,它可以是固定的值,也可以是变化的值,比如:会根据一些条件或其他参数进行变化。我们如果要使用该参数就需要引用它。 参数引用 引用动态参数…...
【SQL】优化SQL查询方法
优化SQK查询 一、避免全表扫描 1、where条件中少使用! 或 <>操作符,引擎会放弃索引,进行全表扫描 2、in \or ,用between 或 exist 代替in 3、where 对字段进行为空判断 4、where like ‘%条件’ 前置百分号 5、where …...
Linux-相关操作
2.2.2 Linux目录结构 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始…...
二十、MySQL多表关系
1、概述 在项目开发中,在进行数据库表结构设计时,会根据业务需求以及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种对应关系 2、多表关系分类 (1࿰…...
HarmonyOS/OpenHarmony应用开发-DevEco Studio新建项目的整体说明
一、文件-新建-新建项目 二、传统应用形态与IDE自带的模板可供选用与免安装的元服与IDE中自带模板的选择 三、以元服务,远程模拟器为例说明IDE整体结构 1区是工程目录结构,是最基本的配置与开发路径等的认知。 2区是代码开发与修改区,是开发…...
去耦电路设计应用指南(三)磁珠/电感的噪声抑制
(三)磁珠/电感的噪声抑制 1. 电感1.1 电感频率特性 2. 铁氧体磁珠3. LC 型和 PI 型滤波 当去耦电容器不足以抑制电源噪声时,电感器&磁珠/ LC 滤波器的结合使用是很有效的。扼流线圈与铁氧体磁珠 是用于电源去耦电路很常见的电感器。 1. …...
Spring Bean的获取方式
参考https://juejin.cn/post/7251780545972994108?searchId2023091105493913AF7C1E3479BB943C80#heading-12 记录并补充 1.通过BeanFactoryAware package com.toryxu.demo1.beans;import org.springframework.beans.BeansException; import org.springframework.beans.facto…...
4795-2023 船用舱底水处理装置 学习记录
声明 本文是学习GB-T 4795-2023 船用舱底水处理装置. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了船用舱底水处理装置(以下简称处理装置)中舱底水分离器(以下简称分离器)和舱底 水报警装置(以下简称报警装置)的要求、试验方法…...
[框架设计之道(二)]设备、任务设置及业务流程
[框架设计之道(二)]设备、任务设置及业务流程 说明 此文档是开发中对设备设置项的管理。因为硬件在使用的过程中涉及大量设置项,因此需要单独开一篇文档说明设备的设置和任务的设置。 一、设备设置 1.基础接口 /// <summary> /// 配置…...
Nuxt3+Vite批量引入图片
通过计算属性获取images文件夹所有层级下所有静态资源 <script name"MarketplaceHeader" setup lang"ts"> //批量导入静态资源图片 const importImage: any computed(() > (name: string, type png, folder images) > {const glob: Record…...
采用nodejs + socket.io实现简易聊天室功能(群聊 + 私聊)
项目演示 支持群聊以及私聊 项目代码 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport…...
消息队列(一):需求分析
为什么要做这样一个项目? 首先,我们在之前学习的时候,就认识了一下 生产者消费者模式,这样一个模式有两大好处: 解耦合 本来有个分布式系统,A服务器 调⽤ B服务器(A给B发请求,B给A…...
ImageViewer技术实现细节
第1章 ImageViewer工具使用方法 1.1. 图像加载 1.1.1. 单图像加载 左上角菜单,“File”->“单图像”,或者Ctrl-S,弹出文件对话框,选择图像文件,当前支持bmp,png,jpg格式。 结果如下图所示: 1.1.2. 多图像加载 左上角菜单,“File”->“多图像”,或者Ctrl-M…...
MFC多文档程序,从菜单关闭一个文档和直接点击右上角的x效果不同
MFC多文档程序,从菜单关闭一个文档和直接点击右上角的x效果不同 若文档内容有修改,则前者会询问用户,是否保存修改;后者不保存修改直接关闭。 原因在于,从菜单关闭时,调用OnClose,一定会调用Sa…...
【数据结构】C++实现AVL平衡树
文章目录 1.AVL树的概念2.AVL树的实现AVL树结点的定义AVL树的插入AVL树的旋转左单旋右单旋左右双旋右左双旋插入代码 AVL树的验证AVL树的查找AVL树的修改AVL树的删除AVL树的性能 AVL树的代码测试 1.AVL树的概念 二叉搜索树虽然可以提高我们查找数据的效率,但如果插…...
图神经网络系列之序章
文章目录 一、为什么需要图神经网络?二、图的定义1.图的定义和种类2.一些关于图的重要概念2.1 子图2.2 连通图2.3 顶点的度、入度和出度2.4 边的权和网2.5 稠密图、稀疏图 3.图的存储结构3.1 邻接矩阵3.2 邻接表3.3 边集数组3.4 邻接多重表3.5 十字链表3.6 链式前向…...
Unity中 UI Shader的基本功能
文章目录 前言一、实现思路1、暴露一个 2D 类型的属性来接受UI的纹理2、设置shader的层级为TransParent半透明渲染层级,一般UI都是在这个渲染层级3、更改混合模式,是 UI 使用的纹理,该透明的地方透明 二、代码实现 前言 Unity中 UI Shader的…...
【自学开发之旅】Flask-标准化返回-连接数据库-分表-orm-migrate-增删改查(三)
业务逻辑不能用http状态码判断,应该有自己的逻辑判断。想要前端需要判断(好多if…else),所以需要标准化,标准化返回。 json标准化返回: 最外面:data,message,code三个字段。 data:返回的数据 co…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
