完整汉化:将所有用户可见文本翻译为简体中文

- index.html: 页面标题、meta 标签、按钮文字/提示、状态栏
- docs.html: 完整文档页面 9 个章节
- js/main.js: 模式名称、分区标题、滑块标签、toast 消息、按钮文字
- js/ui.js: 新种子按钮、随机化提示
- js/modals.js: 导出对话框标题/选项/标签、套装生成器文本
- js/exporter.js: 渲染进度文本、完成/错误 toast 消息
- js/palettes.js: 16 种调色板名称
- README.md: 项目说明全文
This commit is contained in:
2026-06-16 19:58:21 +08:00
parent 3c54400025
commit d3471018b4
8 changed files with 232 additions and 232 deletions
+26 -26
View File
@@ -1,14 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>LUMEN, the generative shader studio</title>
<meta name="description" content="Generate looping abstract shader art: liquid chrome, silk, halftone, aura and more. Randomize, fine-tune, share design codes and export PNG, video or GIF." />
<title>LUMEN 生成式着色器工作室</title>
<meta name="description" content="生成循环抽象着色器艺术:液态铬、丝绸、半调、光环等。随机化、微调、分享设计代码并导出 PNG、视频或 GIF" />
<link rel="icon" type="image/png" sizes="64x64" href="assets/favicon.png" />
<link rel="apple-touch-icon" href="assets/apple-touch-icon.png" />
<meta property="og:title" content="LUMEN, the generative shader studio" />
<meta property="og:description" content="Looping abstract shader art in your browser. Randomize, fine-tune, share design codes and export PNG, video or GIF. No dependencies." />
<meta property="og:title" content="LUMEN 生成式着色器工作室" />
<meta property="og:description" content="在浏览器中生成循环抽象着色器艺术。随机化、微调、分享设计代码并导出 PNG、视频或 GIF。零依赖。" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://lumenshaders.vercel.app/" />
<meta property="og:image" content="https://lumenshaders.vercel.app/assets/og.jpg" />
@@ -16,10 +16,10 @@
<meta property="og:image:type" content="image/jpeg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="LUMEN generative shader studio with reeded glass ember art" />
<meta property="og:image:alt" content="LUMEN 生成式着色器工作室,展示罗纹玻璃余晖艺术" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="LUMEN, the generative shader studio" />
<meta name="twitter:description" content="Looping abstract shader art in your browser. Randomize, fine-tune, share design codes and export PNG, video or GIF." />
<meta name="twitter:title" content="LUMEN 生成式着色器工作室" />
<meta name="twitter:description" content="在浏览器中生成循环抽象着色器艺术。随机化、微调、分享设计代码并导出 PNG、视频或 GIF" />
<meta name="twitter:image" content="https://lumenshaders.vercel.app/assets/og.jpg" />
<link rel="canonical" href="https://lumenshaders.vercel.app/" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
@@ -36,7 +36,7 @@
<path d="M10 5.5 L14.5 10 L10 14.5 L5.5 10 Z" fill="currentColor"/>
</svg>
<span class="brand-name">LUMEN</span>
<span class="brand-sub">generative shader studio</span>
<span class="brand-sub">生成式着色器工作室</span>
</div>
<div class="topbar-center">
@@ -44,31 +44,31 @@
</div>
<div class="topbar-actions">
<button class="btn btn-primary" id="btn-random" title="Randomize everything (R)">
<button class="btn btn-primary" id="btn-random" title="随机化全部 (R)">
<svg viewBox="0 0 16 16" aria-hidden="true"><rect x="1.5" y="1.5" width="13" height="13" rx="3" fill="none" stroke="currentColor" stroke-width="1.5"/><circle cx="5.4" cy="5.4" r="1.25" fill="currentColor"/><circle cx="10.6" cy="10.6" r="1.25" fill="currentColor"/><circle cx="10.6" cy="5.4" r="1.25" fill="currentColor"/><circle cx="5.4" cy="10.6" r="1.25" fill="currentColor"/></svg>
Randomize
随机化
</button>
<div class="topbar-divider"></div>
<button class="btn" id="btn-export-png" title="Save still image (S)">
<button class="btn" id="btn-export-png" title="保存静态图像 (S)">
<svg viewBox="0 0 16 16" aria-hidden="true"><rect x="1.5" y="1.5" width="13" height="13" rx="2" fill="none" stroke="currentColor" stroke-width="1.5"/><circle cx="5.5" cy="5.5" r="1.5" fill="currentColor"/><path d="M2 12 L6 8 L9 11 L11.5 8.5 L14 11" fill="none" stroke="currentColor" stroke-width="1.5"/></svg>
Image
图像
</button>
<button class="btn" id="btn-export-video" title="Record looping video">
<button class="btn" id="btn-export-video" title="录制循环视频">
<svg viewBox="0 0 16 16" aria-hidden="true"><rect x="1.5" y="3.5" width="9" height="9" rx="2" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="M10.5 7 L14.5 4.5 V11.5 L10.5 9" fill="currentColor"/></svg>
Video
视频
</button>
<button class="btn" id="btn-export-gif" title="Render seamless looping GIF">
<button class="btn" id="btn-export-gif" title="渲染无缝循环 GIF">
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M13.5 8 a5.5 5.5 0 1 1 -1.6 -3.9" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="M13.8 1.6 V4.4 H11" fill="none" stroke="currentColor" stroke-width="1.5"/></svg>
GIF
</button>
<button class="btn" id="btn-set" title="Generate a consistent set of variations">
<button class="btn" id="btn-set" title="生成一组一致的变体">
<svg viewBox="0 0 16 16" aria-hidden="true"><rect x="1.5" y="1.5" width="5.5" height="5.5" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.4"/><rect x="9" y="1.5" width="5.5" height="5.5" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.4"/><rect x="1.5" y="9" width="5.5" height="5.5" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.4"/><rect x="9" y="9" width="5.5" height="5.5" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.4"/></svg>
Set
套装
</button>
<div class="topbar-divider"></div>
<a class="btn btn-ghost" href="docs.html" title="Documentation">
<a class="btn btn-ghost" href="docs.html" title="文档">
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M3 2 H10 L13 5 V14 H3 Z" fill="none" stroke="currentColor" stroke-width="1.4"/><path d="M5.5 7.5 H10.5 M5.5 10 H10.5" stroke="currentColor" stroke-width="1.2"/></svg>
Docs
文档
</a>
</div>
</header>
@@ -84,20 +84,20 @@
</div>
<div class="stage-meta">
<div class="meta-left">
<button class="icon-btn" id="btn-play" title="Play / pause (Space)">
<button class="icon-btn" id="btn-play" title="播放/暂停 (空格)">
<svg id="icon-pause" viewBox="0 0 14 14"><rect x="2.5" y="2" width="3" height="10" rx="1" fill="currentColor"/><rect x="8.5" y="2" width="3" height="10" rx="1" fill="currentColor"/></svg>
<svg id="icon-play" viewBox="0 0 14 14" style="display:none"><path d="M3.5 2 L12 7 L3.5 12 Z" fill="currentColor"/></svg>
</button>
<span class="meta-item mono" id="meta-mode">...</span>
<span class="meta-sep"></span>
<span class="meta-item mono dim" id="meta-seed">seed 0000</span>
<span class="meta-item mono dim" id="meta-seed">种子 0000</span>
</div>
<div class="meta-right">
<span class="meta-item mono dim" id="meta-loop">4.0s loop</span>
<span class="meta-item mono dim" id="meta-loop">4.0s 循环</span>
<span class="meta-sep"></span>
<span class="meta-item mono dim" id="meta-res">0×0</span>
<span class="meta-sep"></span>
<span class="meta-item mono dim" id="meta-fps">60 fps</span>
<span class="meta-item mono dim" id="meta-fps">60 帧/秒</span>
</div>
</div>
</section>
@@ -107,10 +107,10 @@
<div class="overlay" id="overlay" hidden>
<div class="overlay-card">
<div class="overlay-title" id="overlay-title">Rendering</div>
<div class="overlay-title" id="overlay-title">渲染中</div>
<div class="overlay-detail mono" id="overlay-detail">...</div>
<div class="progress"><div class="progress-fill" id="overlay-bar"></div></div>
<button class="btn overlay-cancel" id="overlay-cancel">Cancel</button>
<button class="btn overlay-cancel" id="overlay-cancel">取消</button>
</div>
</div>