vue3-ts-vite:Google 多语言调试 / 网页中插入谷歌翻译元素 / 翻译

news2024/7/6 19:02:53

一、实现目标

二、代码实现

2.1、项目vue3 - ts - vite
2.2、index.html 引入文件
<script>
  window.onload = function () {
      const script = document.createElement('SCRIPT')
      script.src = 'https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit'
      script.onerror = () => {
          console.log('google load error')
          window.googleScriptLoadError = false
      }
      document.head.appendChild(script)
  }
</script>
2.3、src/views/translate/index.vue
<template>
  <div class="container">
    <div id="google_translate_element" style="position:absolute;bottom:10px;right:10px;z-index:2000;opacity:0.7"></div>
    <div>google_translate_element</div>
  </div>
</template>

<script setup lang="ts" name="keepalive">
const translate = () => {
  new google.translate.TranslateElement(
    {
        // pageLanguage: 'zh-CN',
        // 需要翻译的语言,比如你只需要翻译成英语,这里就只写en
        includedLanguages: 'en,zh-CN,hr,cs,da,nl,fr,de,el,iw,hu,ga,it,ja,ko,pt,ro,ru,sr,es',
        layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
        // 自动显示翻译横幅,就是翻译后顶部出现的那个
        autoDisplay: true,
        // 还有些其他参数
    },
    'google_translate_element' // 触发元素的id
  );
}
setTimeout(()=>{
  translate()
},3000)
</script>

<style scoped lang="less">
</style>
2.4、测试成功

三、代码集成在一个页面

<template>
  <div class="container">
    <div id="google_translate_element" style="position:absolute;bottom:10px;right:10px;z-index:2000;opacity:0.7"></div>
    <div>google_translate_element</div>
  </div>
</template>

<script setup lang="ts" name="keepalive">
// 加载script
const loadScript = () => {
  let script = document.createElement('script')
  script.setAttribute("language", "javascript")
  script.setAttribute("type", "text/javascript")
  script.setAttribute("src", 'https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit')
  document.getElementsByTagName('head')[0].appendChild(script)
  script.onload = script.onreadystatechange = ((res:any)=>{
    check()
  })
}
loadScript()

// 检测是否获取到google
const check = () => {
  console.log("10", google.translate.TranslateElement)
  if(!google.translate.TranslateElement){
    setTimeout(()=>{
      check()
    }, 200)
  } else {
    translate()
  }
}

// 翻译
const translate = () => {
  new google.translate.TranslateElement(
    {
        // pageLanguage: 'zh-CN',
        // 需要翻译的语言,比如你只需要翻译成英语,这里就只写en
        includedLanguages: 'en,zh-CN,hr,cs,da,nl,fr,de,el,iw,hu,ga,it,ja,ko,pt,ro,ru,sr,es',
        layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
        // 自动显示翻译横幅,就是翻译后顶部出现的那个
        autoDisplay: true,
        // 还有些其他参数
    },
    'google_translate_element' // 触发元素的id
  )
}
</script>

<style scoped lang="less">
</style>

四、过程记录

必须科学上网,否则访问不到依赖文件

https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit

五、参考连接

js获取浏览器默认语言设置_js如何获取谷歌首选语言信息-CSDN博客

记录|给网站添加谷歌多语言翻译插件 - Jialezi `s blog

利用Google翻译实现网站国际化——js插件 - 灰信网(软件开发博客聚合)

网页嵌入谷歌翻译js插件 - 代码先锋网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1049142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS的通信机制

ROS是一个分布式框架&#xff0c;为用户提供多节点&#xff08;进程&#xff09;之间的通信服务&#xff0c;所有软件功能和工 具都建立在这种分布式通信机制上&#xff0c;所以ROS的通信机制是最底层也是最核心的技术。在大多数应用场景下&#xff0c;尽管我们不需要关注底层通…

缓冲技术在嵌入式中的应用

引言 在嵌入式中&#xff0c;不可避免地会遇到数据的收发。 其实&#xff0c;数据的收发有很多情况。 总体上&#xff0c;分为数据的收和发&#xff1a; 其中&#xff0c;数据发送是一个主动的行为&#xff0c;我们对要发送数据的数量特点等都是知道的&#xff0c;比如我们通过…

通俗讲解深度学习轻量网络MobileNet-v1/v2/v3

MobileNet网络是由google团队在2017年提出的&#xff0c;专注于移动端或者嵌入式设备中的轻量级CNN网络。相比传统卷积神经网络&#xff0c;在准确率小幅降低的前提下大大减少模型参数与运算量。(相比VGG16准确率减少了0.9%&#xff0c;但模型参数只有VGG的1/32)。MobileNet网络…

读取.nrrd和.dcm文件格式医学图片可视化与预处理

nrrd数据格式 MITK默认会将医学图像保存为格式为NRRD的图像&#xff0c;在这个数据格式中包含&#xff1a; 1、一个单个的数据头文件&#xff1a;为科学可视化和医学图像处理准确地表示N维度的栅格信息。 2、既能分开又能合并的图像文件。 nrrd_options输出 {u’dimension’:…

CoreData/数据存储管理, CoreDataRelationships/关系型数据结构存储管理 的使用

1. CoreData 数据的增删改查操作 1.1 创建数据实体管理文件 点击菜单栏 File -> New -> File... -> Core Data 栏下&#xff0c;选择 Data Mode&#xff0c;创建 FruitsContainer.xcdatamodeld 文件 1.2 创建 FruitEntity 实体表 打开 FruitsContainer.xcdatamodeld 文…

Quartus医院病房呼叫系统病床呼叫Verilog,源代码下载

名称&#xff1a;医院病房呼叫系统病床呼叫 软件&#xff1a;Quartus 语言&#xff1a;Verilog 要求&#xff1a; 1、用1~6个开关模拟6个病房的呼叫输入信号,1号优先级最高;1~6优先级依次降低; 2、 用一个数码管显示呼叫信号的号码;没信号呼叫时显示0;有多个信号呼叫时,显…

2023年鄂州中级职称申报时间是什么时候呢?

鄂州在6.7月份组织了一次水平能力测试&#xff0c;鄂州中级职称申报时间终于出来了&#xff0c;关于鄂州中级职称申报的一些情况&#xff0c;甘建二告诉你&#xff1a; 一、鄂州中级职称申报时间&#xff1a; 1.网上申报审核时间。个人申报2023年09月27日至2023年10月10日&…

单链表操作 C实现

struct LNode { //定义一个节点 int data; //数据域 struct LNode *next; //指针域 }; 0.初始化 typedef sturct LNode{ //定义单链表结点类型 int date ; //每个结点存放一个数据元素struct LNode *next; //指针指向下…

leetCode 62.不同路径 动态规划 + 空间复杂度优化

62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xf…

运行软件mfc100u.dll缺失是怎么办?mfc100u.dll丢失解决方法分享

Mfc100u.dll 丢失的问题可能困扰着许多使用计算机的用户。Mfc100u.dll 是一个重要的动态链接库文件&#xff0c;它包含了许多功能模块&#xff0c;如字符串处理、数学计算、文件操作等。当 Mfc100u.dll 文件丢失或损坏时&#xff0c;可能会导致许多应用程序无法正常运行&#x…

【深度学习实验】卷积神经网络(六):卷积神经网络模型(VGG)训练、评价

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集&#xff08;CIFAR10Dataset&#xff09; a. read_csv_labels&#xff08;&#xff09; b. CIFAR10Dataset 2. 构建模型&#xff08;FeedForward&…

Chrome(谷歌浏览器)如何关闭搜索栏历史记录

目录 问题描述解决方法插件解决&#xff08;亲测有效&#xff09;自带设置解决步骤首先打开 地址 输入&#xff1a;chrome://flags关闭浏览器&#xff0c;重新打开Chrome 发现 已经正常 问题描述 Chrome是大家熟知的浏览器&#xff0c;但是搜索栏的历史记录如何自己一条条的删…

学校宿舍一键视频对讲

学校宿舍一键视频对讲 大学宿舍一键视频对讲是指在大学宿舍内安装一套视频对讲系统&#xff0c;通过一键操作&#xff0c;实现与宿舍内其他人进行视频通话的功能。 该系统通常包括以下组成部分&#xff1a; 1. 室内终端&#xff1a;每个宿舍内安装一个室内终端&#xff0c;室…

JavaScript求数组的交集和差集

1. 求交集(从2个数组中找到相同的元素, 组成新数组, 注意去重): 1) Setfilterincludes // 求交集: const arr1 [0, 1, 2] const arr2 [3, 2, 0] function intersectSet(arr1, arr2) {return [...new Set(arr1)].filter(item>arr2.includes(item)) } const values inter…

26593-2011 无损检测仪器 工业用X射线CT装置性能测试方法

声明 本文是学习GB-T 26593-2011 无损检测仪器 工业用X射线CT装置性能测试方法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了工业用X 射线CT 装置(以下简称CT 装置)性能测试的术语、定义、缩略语以及空间 分辨力、密度分辨率…

BChecks 自定义poc检测 - 把BurpSuite 打造成强大的漏洞扫描器

BChecks是什么&#xff1f; BChecks可以创建和导入的自定义扫描检查。Burp Scanner在执行其内置扫描例程的同时运行这些检查&#xff0c;帮助您定位扫描并使测试工作流尽可能高效。 每个BCheck都定义为一个以.bcheck文件扩展名结尾的纯文本文件。这些文件使用自定义语言来指定…

配置OSPF路由

OSPF路由 1.OSPF路由 1.1 OSPF简介 OSPF(Open Shortest Path First&#xff0c;开放式最短路径优先&#xff09;路由协议是另一个比较常用的路由协议之一&#xff0c;它通过路由器之间通告网络接口的状态&#xff0c;使用最短路径算法建立路由表。在生成路由表时&#xff0c;…

Spring Cloud Netflix 教程和源码

本教程目标 想要系统地学习 Spring Cloud Netflix&#xff0c; 把自己的学习过程记录下来。 状态 持续更新中 微服务架构 微服务架构是一种将应用程序拆分为一组独立的、可独立部署的服务的架构模式。每个服务都运行在自己的进程中&#xff0c;可以独立地进行开发、测试和…

数据库管理-第108期 因Exadata存储节点操作系统空间异常的紧急处理(20230928)

数据库管理-第108期 因Exadata存储节点操作系统空间异常的紧急处理&#xff08;20230928&#xff09; 众所周知&#xff0c;明天放假了&#xff0c;本着对客户数据库软硬件负责任的态度&#xff0c;进行了一次深入彻底的软硬件巡检&#xff08;就是检查包括计算节点、存储节点…

vue3中状态适配

写一个函数&#xff0c;在函数中定义一个对象 用于存放键值对&#xff0c;最后返回指定状态所对应的的值&#xff0c;即对象[指定状态] 的 对象的值。 在模板中把状态传入 // vue3 setup语法糖中 const formatXXXState (xxxState)>{const stateMap {键1: 值1,键2: 值2,.…