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

红河蒙自网站开发网站默认样式

红河蒙自网站开发,网站默认样式,百事可乐网络营销推广方法,重庆网红一、问题的提出开学了,我本学期教授的是大学英语三。所教班级人数多,学生基础参差不齐,为了辅助学生更好地学习英语,我特地制作了一些教学资料供学生自主学习。双语阅读工具就是其中之一。这个工具的特点是可以导入双语语料库&…

一、问题的提出

开学了,我本学期教授的是大学英语三。所教班级人数多,学生基础参差不齐,为了辅助学生更好地学习英语,我特地制作了一些教学资料供学生自主学习。

双语阅读工具就是其中之一。这个工具的特点是可以导入双语语料库,选择文本分隔方式后,可以以不同的颜色间隔显示原文和译文,便于学生对照和辨识。同时学生还可以一键切换双语的上下位置,转移学生的视觉焦点,提升阅读效率。点击播放,还可以播放当前目录下的音频,这样一款妥妥的自定义的双语英语阅读学习辅助工具。

二、问题的解决

然而实现这一点,其实并不简单。

第一步,我要找到课文原文和译文,通过语料清洗,删除行首的数字、空行,进行除噪后,分别存储为原文和译文两个不同的txt文本,接着再导入到tmxmall的aligner,把文本进行句对齐。

第二步,我还要从tmxmall中导出我对齐的文本,放在Word文件中,把我要标注的单词加粗,并存为【课文.docx】。

第三步,我使用无障碍标注工具,把【课文.docx】文件中的加粗单词进行标注,主要是调用了小牛机器翻译的API,把单词的文中释义标注在单词旁边。如下图所示:

图片

第四步,我们把标注好的文本复制到【课文带释义.TXT】文件当中备用。接着,我们打开ChatGPT,输入以下命令。

我想生成一个可以导入txt文件,用间隔颜色展示双语语料库的html文件,顶部设置有导入、重置、字体放大或缩小按钮,可以播放当前目录下的音频。右侧有滚动条,滚动时,顶部按钮一直显示,界面漂亮、清爽,可以大屏显示,在课堂上使用。可以添加一些必要的功能和参数,给出html代码。

经过不断调试,终于生成了以下代码,大家可以保存到html文件中使用:

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>双语语料库展示</title><style>body {font-family: "Microsoft YaHei", sans-serif;margin: 0;background: linear-gradient(135deg, #f0f3f7, #e6ebef);}header {position: fixed;top: 0;width: 100%;background: linear-gradient(90deg, #2c3e50, #1abc9c);color: white;padding: 12px 20px;display: flex;justify-content: space-between;align-items: center;z-index: 1000;box-shadow: 0 4px 6px rgba(0,0,0,0.2);}#controls {display: flex;gap: 10px;align-items: center;}#controls button, #controls select, #controls input[type="file"] {padding: 6px 12px;font-size: 14px;border-radius: 20px;border: none;cursor: pointer;background: #ecf0f1;color: #2c3e50;box-shadow: 0 2px 4px rgba(0,0,0,0.2);transition: all 0.2s ease;}#controls button:hover, #controls select:hover, #controls input[type="file"]:hover {background: #1abc9c;color: white;}#audioPlayer {height: 32px;}#content {margin-top: 100px;padding: 20px;}.entry {margin-bottom: 20px;border-radius: 12px;box-shadow: 0 4px 8px rgba(0,0,0,0.15);overflow: hidden;transition: transform 0.2s ease, box-shadow 0.2s ease;}.entry:hover {transform: scale(1.02);box-shadow: 0 6px 12px rgba(0,0,0,0.25);}.target {background: #a8e6a3; /* 亮绿色 */padding: 12px;font-weight: bold;font-size: 18px;}.source {background: #aed6f1; /* 亮蓝色 */padding: 12px;font-size: 16px;}</style>
</head>
<body><header><div id="controls"><input type="file" id="fileInput"><select id="parseMode"><option value="oddEven">奇偶行</option><option value="tab">Tab 分隔</option><option value="pipe">| 分隔</option><option value="triple">||| 分隔</option></select><button onclick="resetContent()">重置</button><button onclick="swapPosition()">交换位置</button></div><audio id="audioPlayer" controls><source src="audio.mp3" type="audio/mpeg">你的浏览器不支持音频播放。</audio></header><div id="content"></div><script>let fontSize = 16;let isSwapped = JSON.parse(localStorage.getItem("isSwapped")) || false;document.getElementById('fileInput').addEventListener('change', handleFile);function handleFile(event) {const file = event.target.files[0];if (!file) return;const reader = new FileReader();reader.onload = e => {const lines = e.target.result.split(/\r?\n/).filter(l => l.trim());const mode = document.getElementById("parseMode").value;const entries = parseCorpus(lines, mode);displayEntries(entries);};reader.readAsText(file, "utf-8");}function parseCorpus(lines, mode) {let entries = [];if (mode === "tab") {lines.forEach(line => {const parts = line.split("\t");if (parts.length >= 2) entries.push([parts[1], parts[0]]);});} else if (mode === "pipe") {lines.forEach(line => {const parts = line.split("|");if (parts.length >= 2) entries.push([parts[1], parts[0]]);});} else if (mode === "triple") {lines.forEach(line => {const parts = line.split("|||");if (parts.length >= 2) entries.push([parts[1], parts[0]]);});} else if (mode === "oddEven") {for (let i = 0; i < lines.length; i += 2) {if (i + 1 < lines.length) entries.push([lines[i+1], lines[i]]);}}return entries;}function displayEntries(entries) {const container = document.getElementById("content");container.innerHTML = "";entries.forEach(([target, source]) => {const entry = document.createElement("div");entry.className = "entry";if (isSwapped) {entry.innerHTML = `<div class="source">${source}</div><div class="target">${target}</div>`;} else {entry.innerHTML = `<div class="target">${target}</div><div class="source">${source}</div>`;}container.appendChild(entry);});}function resetContent() {document.getElementById("content").innerHTML = "";}function changeFontSize(delta) {fontSize += delta;document.getElementById("content").style.fontSize = fontSize + "px";}function swapPosition() {isSwapped = !isSwapped;localStorage.setItem("isSwapped", JSON.stringify(isSwapped));// 重新渲染已有条目const entries = [...document.querySelectorAll(".entry")].map(entry => {const target = entry.querySelector(".target").textContent;const source = entry.querySelector(".source").textContent;return [target, source];});displayEntries(entries);}</script>
</body>
</html>

最终的效果如下,可以显示双语、播放音频,同时还带有单词的注释内容。

三、学后总结

这个双语阅读工具,整合文字、音频、注释信息等,而且当鼠标放到指令行还会有突起动画,便于识别。

遗憾的是文本大小设置还有问题,不过可以用ctrl+中键滚动鼠标来实现页面字体放大或缩小。后期可以继续改进这个工具。

外语教学和英语学习过程中,都会遇到的一些个性化的小问题,看起来很难,其实都可以转化技术实现的问题,借助AI大模型,善用提示词,让AI帮助我们,轻松实现我们的编程梦想,把思想转化为现实。

关注我,学习更多Python和大模型在英语教学和学习方面的应用!

http://www.dtcms.com/a/438431.html

相关文章:

  • 新版本Jenkins(2.516.1)界面如何设置为中文
  • CentOS 7 系统安装步骤(从U盘启动到桌面详细流程)附镜像下载​
  • [xboard] 23 kernel启动流程之汇编篇
  • 教育网站开发需求说明书同步朋友圈到wordpress
  • Lua上值与闭包
  • C语言指针全解析:从内存本质到高级应用的系统化探索
  • 博客网站开发背景及意义上传网站软件
  • 数据链路层协议——以太网,ARP协议
  • stub区域 概念及题目
  • 使用QT Designer建立QT视窗操作面简介
  • 好的外贸网站的特征商务网站建设方案ppt
  • Java代码审计-Servlet基础(1)
  • 微信建网站平台的宁河网站建设
  • 做教育网站有FTP免费网站
  • 【详细】idea设置格式化方式 google style
  • 关于智能体互联协议标准的130天
  • 君正T32开发笔记之IVSP版本环境搭建和编译
  • DDR Study - MR Registers during the Clock Switch
  • Claude Code 的魔力
  • Node.js 常用工具
  • Node.js 的替代品Bun
  • 网站平台建设所需开发工具广安做网站的公司
  • 阿里云做网站送服务器吗显示网站建设中
  • 【AGI使用教程】Meta 开源视觉基础模型 DINOv3(1)下载与使用
  • JAVA之拷贝数组
  • 开源 C# 快速开发(十七)进程--消息队列MSMQ
  • [UnrealEngine] 虚幻编辑器界面 | 虚幻界面详解 | UE5界面详解
  • 旅游网站开发周期成都古怪科技网站建设公司
  • JavaEE初阶——网络原理初探:从独立模式到TCP/IP五层模型
  • 代码随想录算法训练营第五十七天|53.寻宝