# mars-dict **Repository Path**: mars369/mars-dict ## Basic Information - **Project Name**: mars-dict - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-27 - **Last Updated**: 2025-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mars Dict - 现代化翻译工具 一个基于 Rust 开发的现代化翻译工具,采用嵌入式 WebView 架构,提供美观的用户界面和强大的翻译功能。 ## ✨ 功能特性 ### 🎯 核心功能 - **🚀 嵌入式 WebView**: 原生 GUI + Web 界面的完美结合 - **📋 智能剪贴板**: 自动获取选中文本,支持 Wayland/X11 - **🌍 多翻译引擎**: 支持 8+ 主流翻译网站,可自定义扩展 - **⚡ 实时翻译**: 快速响应,一键翻译 - **🔧 灵活配置**: 多种配置方式,满足不同需求 ### 🎨 用户界面 - **现代化设计**: 渐变背景、卡片布局、流畅动画 - **响应式布局**: 适配不同屏幕尺寸 - **快捷键支持**: Ctrl+Enter 翻译,Escape 清空 - **主题切换**: 支持浅色/深色主题 - **多语言界面**: 支持中文、英文、日文、韩文 ### 🔧 系统集成 - **全局热键**: GNOME 环境下 Super+E 快速启动 - **新窗口打开**: 翻译后自动在新的浏览器窗口中打开所有链接 - **隐私模式**: 优先使用浏览器的隐私/无痕模式 - **批量打开**: 一键在新窗口中打开所有翻译结果链接 - **单实例模式**: 避免重复启动,智能窗口管理 - **系统托盘**: 最小化到系统托盘,后台运行 - **跨平台**: 支持 Linux、Windows、macOS ## 🏗️ 系统架构 ### 架构设计 Mars Dict 2.0 采用分层架构设计,实现了前后端分离和模块化开发: ``` ┌─────────────────────────────────────────┐ │ GUI 层 (Rust) │ │ ┌─────────────┐ ┌─────────────────┐ │ │ │ egui │ │ WebView │ │ │ │ 主窗口 │ │ HTML界面 │ │ │ └─────────────┘ └─────────────────┘ │ └─────────────────────────────────────────┘ │ ┌─────────────────────────────────────────┐ │ 桥接层 (IPC) │ │ ┌─────────────┐ ┌─────────────────┐ │ │ │ JavaScript │ │ Rust Bridge │ │ │ │ Bridge │ │ IPC管理 │ │ │ └─────────────┘ └─────────────────┘ │ └─────────────────────────────────────────┘ │ ┌─────────────────────────────────────────┐ │ 服务层 (Rust) │ │ ┌─────────────┐ ┌─────────────────┐ │ │ │ Translation │ │ Clipboard │ │ │ │ Service │ │ Service │ │ │ └─────────────┘ └─────────────────┘ │ │ ┌─────────────┐ ┌─────────────────┐ │ │ │ Config │ │ Template │ │ │ │ Service │ │ Engine │ │ │ └─────────────┘ └─────────────────┘ │ └─────────────────────────────────────────┘ ``` ### 技术栈 - **后端**: Rust + egui + wry (WebView) - **前端**: HTML5 + CSS3 + Vanilla JavaScript - **模板引擎**: Tera - **通信机制**: JavaScript Bridge + IPC - **配置管理**: JSON + serde - **剪贴板**: arboard (跨平台) ## 📁 项目结构 ``` mars-dict/ ├── src/ │ ├── main_new.rs # 主程序入口 │ ├── services/ # 核心服务层 │ │ ├── translation.rs # 翻译服务 │ │ ├── clipboard.rs # 剪贴板服务 │ │ └── config.rs # 配置服务 │ ├── templates/ # HTML模板 │ │ ├── translation.html # 翻译界面模板 │ │ ├── config.html # 配置界面模板 │ │ └── base.html # 基础模板 │ ├── bridge/ # JavaScript桥接 │ │ ├── ipc.rs # IPC通信管理 │ │ └── handlers.rs # WebView事件处理 │ └── i18n/ # 国际化文件 │ ├── zh.rs # 中文 │ ├── en.rs # 英文 │ ├── ja.rs # 日文 │ └── ko.rs # 韩文 ├── docs/ # 文档目录 ├── scripts/ # 构建和部署脚本 ├── config/ # 配置文件目录 └── assets/ # 资源文件目录 ``` ## 🚀 安装和使用 ### 系统要求 - **操作系统**: Linux (推荐 Ubuntu 20.04+), Windows 10+, macOS 10.15+ - **桌面环境**: GNOME (推荐), KDE, XFCE 等 - **显示服务器**: Wayland (推荐) 或 X11 - **Rust**: 1.70+ (开发环境) ### 安装依赖 #### Ubuntu/Debian ```bash sudo apt update sudo apt install build-essential pkg-config sudo apt install libwayland-client-dev libx11-dev sudo apt install libgtk-3-dev libwebkit2gtk-4.0-dev # 剪贴板支持(用于获取选中文本) # Wayland: sudo apt install wl-clipboard # X11: sudo apt install xclip ``` #### Fedora ```bash sudo dnf install gcc gcc-c++ pkg-config sudo dnf install wayland-devel libX11-devel sudo dnf install gtk3-devel webkit2gtk3-devel # 剪贴板支持 # Wayland: sudo dnf install wl-clipboard # X11: sudo dnf install xclip ``` #### Arch Linux ```bash sudo pacman -S base-devel pkgconf sudo pacman -S wayland libx11 sudo pacman -S gtk3 webkit2gtk # 剪贴板支持 # Wayland: sudo pacman -S wl-clipboard # X11: sudo pacman -S xclip ``` ### 编译安装 #### 方式一:使用安装脚本(推荐) ```bash # 克隆项目 git clone cd mars-dict # 自动安装(包括依赖) ./scripts/install.sh ``` #### 方式二:使用构建脚本 ```bash # 克隆项目 git clone cd mars-dict # 构建项目 ./scripts/build.sh # 手动安装依赖(如需要) sudo apt install wl-clipboard # Wayland # 或 sudo apt install xclip # X11 # 手动安装到系统 sudo cp target/release/mars-dict /usr/local/bin/ ``` #### 方式二:手动编译 ```bash # 克隆项目 git clone cd mars-dict # 使用新架构编译 cargo build --release --bin mars-dict # 运行程序 ./target/release/mars-dict # 或使用便捷脚本 ./run_mars_dict.sh ``` ### 配置热键(GNOME) ```bash # 注册全局热键 Super+E ./scripts/register-hotkey.sh # 或在系统设置中手动添加: # 设置 → 键盘 → 快捷键 → 自定义快捷键 # 名称: Mars Dict # 命令: /usr/local/bin/mars-dict # 快捷键: Super+E ``` ## 📖 使用指南 ### 基本使用流程 1. **启动程序** ```bash # 直接启动 mars-dict # 或使用热键(已注册的情况下) # 选中文本 → 按 Super+E ``` 2. **翻译文本** - 在任意应用中选中文本 - 启动程序(自动获取选中文本) - 选择源语言和目标语言 - 点击"翻译"按钮或按 Ctrl+Enter - 所有翻译链接自动在新的浏览器窗口中打开(隐私模式优先) - 可手动点击"🌐 Open All in New Windows"重新打开 3. **配置管理** - 点击界面中的"⚙️"按钮打开设置 - 或运行独立配置程序: ```bash mars-dict-config # 桌面配置程序 ``` ### 高级功能 #### 配置翻译网站 程序支持多种翻译网站,可通过以下方式管理: 1. **界面配置**: 在设置界面中启用/禁用翻译网站 2. **文件配置**: 编辑 `~/.config/mars-dict/config.json` 3. **命令行配置**: 使用配置管理程序 #### 自定义语言对 - 支持任意语言组合 - 自动检测源语言 - 预设常用语言对快捷按钮 #### 快捷键 - `Super+E`: 启动程序并自动翻译选中文本(需注册) - `Ctrl+Enter`: 执行翻译(自动打开所有链接) - `Escape`: 清空输入 - `Ctrl+Q`: 退出程序 #### 自动功能 - 🌐 **新窗口自动打开**: 翻译完成后自动在新窗口打开所有翻译网站 - 🔒 **隐私模式优先**: 优先使用浏览器的隐私/无痕模式 - 📋 **智能获取**: 自动获取选中文本或剪贴板内容 - 🔗 **批量新窗口操作**: 一键在新窗口中打开所有翻译结果链接 ## ⚙️ 配置说明 ### 配置文件位置 - **Linux**: `~/.config/mars-dict/config.json` - **Windows**: `%APPDATA%\mars-dict\config.json` - **macOS**: `~/Library/Application Support/mars-dict/config.json` ### 主要配置项 ```json { "translation": { "default_source_lang": "auto", "default_target_lang": "zh", "enabled_sites": ["google", "deepL", "baidu"] }, "ui": { "theme": "auto", "language": "zh", "auto_translate": false }, "hotkey": { "enabled": true, "combination": "Super+E" } } ``` ## 🛠️ 开发指南 ### 开发环境设置 ```bash # 安装 Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # 克隆项目 git clone cd mars-dict # 安装依赖 cargo build # 运行开发版本 cargo run --bin mars-dict ``` ### 项目结构说明 - `src/main_new.rs`: 主程序入口,GUI 和 WebView 集成 - `src/services/`: 核心业务逻辑服务 - `src/bridge/`: JavaScript 和 Rust 通信桥接 - `src/templates/`: HTML 模板文件 - `src/i18n/`: 国际化语言文件 ### 添加新功能 1. 在 `services/` 目录添加新的服务模块 2. 在 `bridge/` 目录添加对应的 JavaScript 接口 3. 在 `templates/` 目录添加或修改 HTML 模板 4. 更新配置文件结构(如需要) ## 🔧 故障排除 ### 常见问题 #### 1. 无法获取选中文本 ```bash # 检查剪贴板支持 ./scripts/test-selection.sh # 安装必要依赖 sudo apt install wl-clipboard # Wayland sudo apt install xclip # X11 ``` #### 2. 热键不响应 ```bash # 重新注册热键 ./scripts/unregister-hotkey.sh ./scripts/register-hotkey.sh # 检查系统设置中的快捷键冲突 ``` #### 3. WebView 显示异常 ```bash # 安装 WebView 依赖 sudo apt install webkit2gtk-4.0-dev ``` #### 4. 编译错误 ```bash # 更新 Rust 工具链 rustup update # 清理重新编译 cargo clean cargo build --release ``` ### 调试模式 ```bash # 启用详细日志 RUST_LOG=debug mars-dict # 运行诊断脚本 ./scripts/diagnose.sh ``` ## 📦 打包分发 ### 创建发布包 ```bash # 使用打包脚本 ./scripts/package.sh # 生成的包位于 dist/ 目录 ``` ### 安装包类型 - **Linux**: `.deb` (Debian/Ubuntu), `.rpm` (RedHat/Fedora), `.tar.gz` - **Windows**: `.msi` 安装包 - **macOS**: `.dmg` 磁盘映像 ## 🤝 贡献指南 欢迎为 Mars Dict 贡献代码! ### 贡献方式 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/amazing-feature`) 3. 提交更改 (`git commit -m 'Add amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 创建 Pull Request ### 代码规范 - 使用 `rustfmt` 格式化代码 - 使用 `clippy` 检查代码质量 - 编写单元测试和集成测试 - 更新相关文档 ## 📄 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 ## 🙏 致谢 - 感谢所有贡献者的支持 - 感谢 Rust 社区提供的优秀工具链 - 感谢各翻译网站提供的服务 --- **Mars Dict** - 让翻译更简单、更高效、更现代化!