Metadata-Version: 2.4
Name: qwen-mt-cli
Version: 0.2.0
Summary: Qwen-MT CLI - Command-line translation tool powered by Qwen-MT with vector-based term matching
Project-URL: Homepage, https://github.com/leiyu/qwen-mt-cli
Project-URL: Repository, https://github.com/leiyu/qwen-mt-cli
Project-URL: Issues, https://github.com/leiyu/qwen-mt-cli/issues
Author-email: 镭屿 <jiayu.cly@alibaba-inc.com>
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: cli,dashscope,i18n,localization,qwen,translation
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Internationalization
Classifier: Topic :: Text Processing :: Linguistic
Requires-Python: >=3.10
Requires-Dist: click>=8.1
Requires-Dist: numpy>=1.24
Requires-Dist: openai>=1.0
Requires-Dist: openpyxl>=3.1
Requires-Dist: pandas>=2.0
Requires-Dist: prompt-toolkit>=3.0
Requires-Dist: rich>=13.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Description-Content-Type: text/markdown

# QMT - Qwen-MT CLI

基于通义千问机器翻译模型 (Qwen-MT) 的命令行翻译工具。支持单句翻译、交互式 REPL、CSV/Excel 批量翻译，并提供术语表、翻译记忆、领域提示等专业翻译辅助功能。

## 安装

需要 Python >= 3.10。

```bash
pip install -e .
```

安装后即可使用 `qmt` 命令。

## 配置

设置 DashScope API Key（[申请地址](https://dashscope.console.aliyun.com/)）：

```bash
export DASHSCOPE_API_KEY="sk-xxxxxxxx"
```

也可以通过 `--api-key` 参数逐次传入。

## 快速开始

```bash
# 翻译文本
qmt "你好世界" -t English

# 指定模型
qmt "Hello World" -t Chinese -m qwen-mt-plus

# 翻译文件
qmt -f article.txt -t English

# 管道输入
echo "你好" | qmt -t English

# 流式输出
qmt "你好世界" -t English --stream

# 交互式模式
qmt -i -t English
```

## 可用模型

| 模型 | 特点 | 流式 | 语言数 |
|------|------|------|--------|
| `qwen-mt-plus` | 最高翻译质量，适用于专业领域 | - | 92 |
| `qwen-mt-flash` | 通用首选，效果/速度/成本平衡 (默认) | 支持 | 92 |
| `qwen-mt-lite` | 最快响应速度，适用于实时场景 | 支持 | 31 |

## 批量翻译

支持 CSV (.csv/.tsv) 和 Excel (.xlsx/.xls) 文件的批量翻译。翻译文件第一列内容，结果追加为新列。

```bash
# CSV 批量翻译
qmt -B input.csv -t English

# Excel 批量翻译（所有 sheet）
qmt -B input.xlsx -t Korean

# 指定输出文件
qmt -B input.csv -O output.csv -t English

# 首行也翻译（无表头模式）
qmt -B input.csv -t English --no-header

# 断点恢复（中断后从上次位置继续）
qmt -B input.csv -t English --resume
```

默认行为：
- 首行视为表头，不翻译（`--no-header` 可改变此行为）
- 输出文件自动命名为 `原文件名_translated.ext`
- Excel 文件翻译所有工作表
- 触发 API 限流时自动指数退避重试（2s -> 4s -> 8s -> 16s -> 32s，最多 5 次）
- 支持 `--resume` 断点恢复，中断后可继续翻译

## 术语管理

固定术语确保特定词汇翻译一致。保存在项目目录 `.qmt/terms.csv`。

```bash
# 添加术语
qmt terms add "React" "React"
qmt terms add "组件" "コンポーネント"

# 查看术语列表
qmt terms list

# 删除术语
qmt terms remove "React"

# 清空所有术语
qmt terms clear

# 从 CSV/TSV 文件批量导入
qmt terms import terms.csv

# 翻译时使用内联术语（不保存）
qmt "React组件开发" -t Japanese --terms "React:React,组件:コンポーネント"
```

## 翻译记忆

提供参考翻译对，帮助模型保持翻译风格一致。保存在 `.qmt/memory.csv`。

```bash
# 添加翻译记忆
qmt memory add "你好世界" "Hello World"

# 查看记忆列表
qmt memory list

# 删除记忆
qmt memory remove "你好世界"

# 清空所有记忆
qmt memory clear

# 从文件批量导入
qmt memory import memory.csv
```

## 领域提示

领域提示告诉模型翻译的专业领域和风格要求，支持两级存储：

- **项目级** — 保存在当前目录 `.qmt/domain.md`，优先级最高
- **全局级** — 保存在 `~/.qmt/domain.md`，作为默认值

```bash
# 设置项目级领域
qmt domain set "technology"

# 设置全局级领域
qmt domain set "medical translation, formal tone" --global

# 查看当前配置
qmt domain show

# 清除项目级领域
qmt domain clear

# 清除全局级领域
qmt domain clear --global
```

优先级：命令行 `-d` 参数 > 项目级 > 全局级。

翻译时自动加载已保存的领域提示，无需每次手动指定：

```bash
# 先设置领域
qmt domain set "game localization, martial arts world view"

# 后续翻译自动生效
qmt "仙缘副本" -t Korean
qmt -B game_strings.xlsx -t Korean
```

## 交互式模式

```bash
qmt -i -t English
```

交互模式下可用命令：

| 命令 | 说明 |
|------|------|
| `/help` | 显示帮助 |
| `/target <lang>` | 切换目标语言 |
| `/source <lang>` | 切换源语言 |
| `/model <name>` | 切换模型 |
| `/stream` | 切换流式输出 |
| `/domain <text>` | 设置领域提示 |
| `/domain save [global]` | 保存当前领域到项目/全局 |
| `/domain clear` | 清除当前领域 |
| `/terms` | 显示当前术语 |
| `/memory` | 显示当前记忆 |
| `/verbose` | 切换详细模式 |
| `/quit` | 退出 |

## 项目结构

```
src/qmt/
  cli.py          # CLI 入口与命令定义
  client.py       # Qwen-MT API 客户端
  batch.py        # CSV/Excel 批量翻译
  interactive.py  # 交互式 REPL
  models.py       # 数据模型
  parsers.py      # 输入解析
  formatters.py   # 终端输出格式化
  store.py        # 本地持久化存储
  constants.py    # 常量定义
  exceptions.py   # 自定义异常
```

## 开发

```bash
# 安装开发依赖
pip install -e ".[dev]"

# 代码检查
ruff check src/qmt/

# 格式化
ruff format src/qmt/

# 运行测试
pytest
```

## License

MIT
