feat: 增加中译西辅助、在线翻译、B1词库与三语语音对照

This commit is contained in:
guoqingshan
2026-08-01 17:13:05 +08:00
parent 0d5b0919da
commit a2e705aa30
9 changed files with 1530 additions and 1 deletions
+69
View File
@@ -0,0 +1,69 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>B1 核心词汇 — 西班牙语知识库</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<nav class="top-nav">
<a class="back" href="../knowledge.html">← 知识库</a>
<span class="home">📚 B1 核心词汇</span>
</nav>
<h1>B1 核心词汇与表达</h1>
<p class="page-subtitle">按主题整理的 B1 常用词汇,约 600 个核心词与表达。点击 🔊 听发音。</p>
<div id="b1-index" class="category-grid"></div>
<div id="b1-content"></div>
<script src="../b1-vocab.js"></script>
<script src="../speech.js"></script>
<script>
function escHtml(s) {
var div = document.createElement('div');
div.textContent = s;
return div.innerHTML;
}
function speakWord(es) {
speakText(es, 'es');
}
var groups = {};
B1_VOCAB.forEach(function(item) {
var cat = item[3];
if (!groups[cat]) groups[cat] = [];
groups[cat].push({ es: item[0], en: item[1], zh: item[2] });
});
var order = Object.keys(groups);
document.getElementById('b1-index').innerHTML = order.map(function(cat) {
return '<a class="category-card" href="#cat-' + encodeURIComponent(cat) + '">' +
'<h2>' + escHtml(cat) + '</h2>' +
'<span class="count">' + groups[cat].length + ' 词</span>' +
'</a>';
}).join('');
document.getElementById('b1-content').innerHTML = order.map(function(cat) {
var rows = groups[cat].map(function(w) {
return '<tr>' +
'<td class="vocab-word-cell">' + escHtml(w.es) + ' <button class="speak-btn" data-text="' + escHtml(w.es) + '">🔊</button></td>' +
'<td>' + escHtml(w.en) + '</td>' +
'<td>' + escHtml(w.zh) + '</td>' +
'</tr>';
}).join('');
return '<div class="article" id="cat-' + encodeURIComponent(cat) + '">' +
'<h2>' + escHtml(cat) + '</h2>' +
'<table><thead><tr><th>Español</th><th>English</th><th>中文</th></tr></thead><tbody>' +
rows + '</tbody></table></div>';
}).join('');
document.addEventListener('click', function(e) {
var btn = e.target.closest('.speak-btn');
if (btn) speakText(btn.dataset.text, 'es');
});
</script>
</body>
</html>