TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
AI translation and rewriting on one page. Source and translation side by side. No API key to bring. Pick Efficient or Rigorous. Prepaid, no monthly fee.
Translation pending
ProductivityTypeScript · CSSGitHub @YoungLee-coderOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
AI翻译器 — 多供应商、流式输出、边缘部署
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗DeepL 风格的自托管 AI 翻译器 — 多供应商、流式输出、边缘部署
English · 特性 · 截图 · 快速开始 · 部署 · 扩展 · 路线图
ENCRYPTION_KEY 加密后落 D1,明文绝不入库。expertId 切换策略。双语对照、语言自动检测、模型切换与快捷键翻译,开箱即用。
润色、风格、正式度与精简等写作辅助,双栏对照即时输出。
用量概览 — 总请求数、总字符数与各供应商用量一目了然,并可管理用户资料。
供应商 — 新增、编辑多家 AI 供应商,切换模型并设置公开默认。
站点设置 — 登录用户限流、KV 翻译缓存、功能模块开关与数据库维护。
AI 专家 — 基于沉浸式翻译的专业策略,按场景启用科技、金融、GitHub 等领域专家。
pnpm install
pnpm db:init # 初始化本地 D1(wrangler dev 用本地 SQLite)
pnpm dev # 并行启动 web(5173) + api(8787)
打开 http://localhost:5173 ,首页会请求 /api/ping 验证前后端闭环。Vite 把 /api 代理到 http://localhost:8787,开发期同源、无需 CORS。本地密钥由 .dev.vars 提供(已 gitignore)。
打开 http://localhost:5173 。尚未创建管理员时会自动进入初始化页,设定管理员邮箱和密码后进入控制台。再到「供应商」新增(填入真实 API Key 并勾选「设为公开默认」),回到 / 即可翻译。
[!NOTE] 前端打包进同一个 Worker,
wrangler deploy一次发布前后端,同源无需 CORS、无需VITE_API_BASE_URL。部署后首次打开站点进入初始化页,建表并设定管理员账号即可。
push 到 GitHub → Cloudflare 自动构建部署,无需本地装 wrangler、无需配 CI。
1. 创建资源(Dashboard)
opentranslatorKV2. 连接 Worker(Workers Builds)
Dashboard → Workers & Pages → Create → Workers → Import a repository → 选仓库,Root directory 填 /,Build command 填 pnpm build,Deploy command 留空(用默认的 npx wrangler deploy)。
创建后进 Worker → Settings:
JWT_SECRET:JWT 签名密钥,同时作为 POST /api/init 的 X-Init-Secret 凭证ENCRYPTION_KEY:供应商 API Key 加密密钥,务必备份,丢了等于所有密钥作废DB → 选 opentranslator 数据库KV → 选刚才的命名空间3. 打开站点完成初始化
部署成功后打开 Worker 域名。首次访问会进入初始化页:填入 JWT_SECRET(Settings → Variables and Secrets),并设定管理员邮箱与密码。完成后自动登录并进入控制台。密钥不会写入地址栏。
也可以用 curl 只建表(管理员仍须在初始化页创建):
curl -X POST "https://<你的-worker-域名>/api/init" \
-H "X-Init-Secret: <你的-JWT_SECRET>"
4. 配置供应商
控制台 → 供应商 → 新增(填入真实 API Key 并勾选「设为公开默认」)→ 回首页即可翻译。
5. 后续更新
改完代码 push 到 main,Cloudflare 自动重新构建部署。若有增量迁移,打开站点会再次进入初始化页,一键升级(无需密钥)。
wrangler login
wrangler d1 create opentranslator # 用返回的 ID 取消注释 wrangler.toml 里的 d1 段并填入
wrangler kv namespace create KV # 同上,取消注释 kv 段并填入
wrangler secret put JWT_SECRET
wrangler secret put ENCRYPTION_KEY
pnpm build # 构建前端到 ./dist
wrangler deploy # 一次部署前端 + API
# 打开 Worker 域名,在初始化页完成建表与管理员账号
# 或:curl -X POST https://api.yourdomain.com/api/init -H "X-Init-Secret: $(grep JWT_SECRET .dev.vars | cut -d= -f2)"
| 类型 | 名称 | 说明 |
|---|---|---|
| Secret | JWT_SECRET | JWT 签名密钥,32 位以上随机字符串,同时作为 POST /api/init 的 X-Init-Secret 凭证 |
| Secret | ENCRYPTION_KEY | 供应商 API Key 加密密钥,务必备份 |
| Variable | ENV | 环境标识,默认 development |
| Variable | ORIGINS | 跨域来源白名单(逗号分隔);同源部署无需填写 |
| Binding (D1) | DB | 绑定到 opentranslator 数据库 |
| Binding (KV) | KV | 绑定到设置/缓存命名空间 |
| Binding (DO) | RATE_LIMITER | Durable Object,部署时自动创建,无需 ID |
| Binding (Assets) | ASSETS | 前端静态资源,wrangler.toml 里已配,无需手动绑定 |
| 层 | 技术 |
|---|---|
| 前端 | Vite、React 19、React Router 7、TypeScript |
| 后端 | Hono、Cloudflare Workers、TypeScript |
| 数据 | Cloudflare D1(持久)、KV(缓存/设置)、Durable Object(限流) |
| 部署 | Cloudflare Workers(前端产物 + API 同一 Worker,[assets] 绑定) |
| 工程 | pnpm、TypeScript paths 别名共享类型 |
src/ # Hono Worker 后端(REST/SSE + 静态资源服务)
providers/ # 供应商 adapter + 注册表 + 表单 schema
routes/ # translate / auth / admin-*
db/ # D1 表结构 + 幂等初始化器
durable-objects/ # 限流器
features/ # 功能模块后端
web/ # Vite + React SPA(构建产物输出到根 dist/)
src/routes/ # 翻译页 / 初始化页 / 登录页 / Dashboard
src/features/ # 功能模块注册表(Dashboard 动态渲染)
shared-types/ # 前后端共享的 TypeScript 类型定义
wrangler.toml # Worker 配置(含 [assets] 静态资源绑定)
docs/images/ # README 截图
src/providers/ 加一个 adapter(实现 TranslationProvider 接口);OpenAI 兼容厂商可直接复用 openai.ts。src/providers/index.ts 加一行 providerRegistry.register(...)。src/providers/schema.ts 加一条表单字段定义,Dashboard 自动渲染配置表单。核心路由与翻译逻辑无需改动。
web/src/features/ 加一个组件,并在 features/registry.ts 注册。OpenRouter 供应商的「模型」一行一个;在模型名后加 :供应商1,供应商2,即可只走指定的
上游供应商(按书写顺序优先,不回落列表外的供应商):
anthropic/claude-sonnet-4.5:anthropic,google
deepseek/deepseek-r1:deepinfra/turbo
meta-llama/llama-3.2-3b-instruct:free # :free 是模型变体,不是锁定
供应商名用 OpenRouter 的 provider slug(模型页可复制)。模型自带变体后缀时写成
模型名:free:供应商1,供应商2。对应 OpenRouter 的 provider.order +
allow_fallbacks: false,详见 Provider Routing。
/api/translate、SSE、前端翻译页/api/admin/features DB 驱动开关、Dashboard 动态导航;公开访问与 AI 专家等模块插件化欢迎提 Issue 与 PR。新增供应商或功能模块时,请遵循上面的「扩展点」两节,保持注册表式扩展。
本项目基于 GPL-3.0 发布。派生项目必须以同等协议开源。