WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 生活趣事
    • 生活日记
    • 防骗指南
  • 编程教学
    • API日记
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
    • 严选源码
  • 专题
  • 基友
  • 隐私
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君
首页 初创 关于自动翻译网页所有文本的总结(英文中文互译)

关于自动翻译网页所有文本的总结(英文中文互译)

夏柔 1月 9, 2024

之前接了个中英文互译的需求,比如用户打开网页,则自动将文本翻译成中文;

于是乎写了这篇文章,用于记录;

目前能想到的就是,每个文本去请求翻译api,然后返回翻译内容并替换;

但网页的文本元素错综复杂,本文章只写一篇例子,并讲解其中的原理;

注:翻译api需要自备哦~,本文章不提供;

本代码块支持所有网页内的文本请求翻译,注意是所有,WP也试过了,夏柔都尝试过,无一例外都会翻译;

当然支持多种语言,具体看你的翻译api给你返回的都是什么内容,比如你给他发送中文,他给你返回的一个文本内容,则将那个文本内容替换过来;

废话不多说,上代码例子:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>自动翻译示例</title>
<!-- 引入 jQuery -->
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body>
<h1>你好,世界!</h1>
<p>这是一个要翻译的示例网页。</p>
<div id="fullscreen-text">
<p>夏柔公益,提供更多的公益产品。</p>
<!-- Add more paragraphs as needed -->
</div>

<!-- 引入自动翻译脚本 -->
<script>
async function translateText(text) {
const apiUrl = `https://api.aa1.cn/ydfanyi/?type=1&text=${encodeURIComponent(text)}`;

try {
const response = await fetch(apiUrl);
const data = await response.json();

if (data && data.TargetText) {
return data.TargetText;
} else {
console.error("翻译失败");
return text; // 返回原始文本
}
} catch (error) {
console.error("发生错误", error);
return text; // 返回原始文本
}
}

// 替换页面中的文本
async function replacePageText() {
// 获取所有文本节点
const allTextNodes = document.createTreeWalker(
document.body,
NodeFilter.SHOW_TEXT,
null,
false
);

let currentTextNode;

// 遍历所有文本节点
while ((currentTextNode = allTextNodes.nextNode())) {
const originalText = currentTextNode.nodeValue.trim();

// 排除空白节点
if (originalText !== "") {
// 翻译文本
const translatedText = await translateText(originalText);

// 替换文本
currentTextNode.nodeValue = translatedText;
}
}
}

// 在页面加载完成后执行替换
window.addEventListener("load", replacePageText);

</script>
</body>
</html>

演示视频

https://www.wpon.cn/wp-content/uploads/2024/01/2024010901181661.mp4

 

讲解

  • async function translateText(text) { ... }: 定义了一个异步函数translateText,用于将传入的文本进行翻译。它使用了一个API(https://api.aa1.cn/ydfanyi/)来获取翻译结果。
  • async function replacePageText() { ... }: 定义了另一个异步函数replacePageText,用于替换页面中所有文本节点的内容。它通过调用translateText函数来获取翻译后的文本,并将其替换到原始文本节点中。
  • window.addEventListener("load", replacePageText);: 在页面加载完成后,执行replacePageText函数,触发自动翻译过程。
1
J2dcg1.png
猜你喜欢
  • 最近三个月没更新,总结一下
  • 绿联NAS搭建ubantu虚拟机安装宝塔面板保姆级教程
  • 阿里云用了管家备案感觉效率提高了
  • 自动化更新资源站系统上线
  • WP资源下载数据根据SQL语句导出
  • 三年腾讯云服务器到期了
  • 宝塔设置自动重启停止运行的Mysql数据库
  • 融合怪脚本:一键测试linux服务器性能、网络、IP质量等
  • 免费ssl数字证书申请-freegetssl
  • 朋友当兵去了
01 5月, 2025
05月01日,星期四, 每天60秒读懂世界!
夏柔
站长
夏山如碧 - 怀柔天下
1737
文章
25
评论
58145K
获赞
版权声明

文章采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议,与本站观点无关。

如果您认为本文侵犯了您的版权信息,请与我们联系修正或删除。
投诉邮箱wpsite@aliyun.com

栏目推荐
Python基础入门33
WordPress技术教程267
前沿技术情报所22
城市创新——新消费11
最近有哪些不可错过的热文23
程序员的养生之道0
节
春
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2025 WordPress极简博客. Designed by 夏柔. 辽公网安备21010502000474号 辽ICP备19017037号-2