Files
Serendipity 86d788e57c feat: vCard 扩展 + 格式扩展 + 解码透视矫正 — v0.3.0
Phase 1: 格式扩展
- png.rs → image.rs,OutputFormat 枚举 (PNG/BMP/JPEG/WebP)
- CLI -f/--format,Web fmt 参数扩展,image crate +bmp feature

Phase 2: 解码增强
- 新增 decoder/perspective.rs — 旋转矫正(MVP)
- auto_correct: finder 检测→计算旋转角→仿射变换→再解码
- decode_image 自动重试矫正流水线

Phase 3: vCard 扩展
- 新增 5 字段:TITLE/URL/BDAY/NOTE/PHOTO
- Rust text_builder + TS qrText + VCardMode UI 同步
- CLI 新增 --title --vcard-url --birthday --note --photo
- 中/英 i18n 翻译

测试: 81 Rust + 19 前端全部通过
2026-06-19 21:38:58 +08:00

86 lines
1.8 KiB
JSON

{
"app": {
"title": "QRGen",
"encodingModes": "编码模式",
"exportOptions": "导出选项",
"decode": "解码"
},
"mode": {
"text": "文本",
"url": "URL",
"wifi": "WiFi",
"vcard": "vCard",
"email": "Email",
"phone": "电话",
"sms": "SMS"
},
"export": {
"eccLevel": "纠错级别",
"moduleSize": "模块大小",
"margin": "边距",
"copySvg": "复制 SVG",
"exportPng": "导出 PNG",
"exportSvg": "导出 SVG",
"exporting": "导出中...",
"selectImage": "选择图片解码",
"decoding": "解码中..."
},
"preview": {
"loading": "生成中...",
"empty": "输入内容生成 QR 码",
"version": "版本",
"mask": "掩码"
},
"history": {
"title": "历史记录",
"clear": "清空",
"empty": "暂无记录"
},
"wifi": {
"ssid": "SSID",
"password": "密码",
"none": "无密码",
"hidden": "隐藏"
},
"vcard": {
"name": "姓名",
"phone": "电话",
"email": "邮箱",
"company": "公司",
"title": "职位",
"address": "地址",
"url": "网址",
"birthday": "生日",
"note": "备注",
"photo": "照片URL"
},
"email": {
"to": "收件人",
"subject": "主题",
"body": "正文"
},
"phone": {
"placeholder": "输入电话号码"
},
"sms": {
"number": "电话号码",
"message": "短信内容"
},
"text": {
"placeholder": "输入任意文本..."
},
"error": {
"appError": "应用发生错误",
"reload": "重新加载",
"decodeFailed": "解码失败",
"exportPngFailed": "导出 PNG 失败",
"exportSvgFailed": "导出 SVG 失败",
"copyFailed": "复制失败"
},
"dialog": {
"imageFiles": "图片文件",
"pngImage": "PNG 图片",
"svgImage": "SVG 图片"
}
}