LibreTranslate:1.44万星标的自托管翻译API
LibreTranslate(LT)是一款免费、开源的机器翻译API,由Argos Translate驱动。支持Docker、CUDA GPU、30多种语言以及离线部署。涵盖搭建、性能测试、监控,以及与OpenAI Whisper、Coqui TTS、Argos Translate的集成。
- ⭐ 6251
- AGPL-3.0
- 更新于 2026-05-19
Stable Diffusion WebUI 2026(AUTOMATIC1111) • Tabby:1.44万星标的自托管AI编码助手
LibreTranslate 是一款免费、开源的机器翻译API,由你自己托管。不需要Google的API密钥,不需要按DeepL的方式按字符计费,也没有任何数据离开你的基础设施。凭借14,400多个GitHub星标和活跃的发布节奏(截至2026年5月已更新到v1.9.5),它已成为需要私密、可离线运行、零边际成本翻译能力的开发者的默认选择。这篇LibreTranslate教程涵盖了从环境搭建到libretranslate docker生产部署的方方面面,还包含性能测试和集成指南。我们还提供了一份详细的libretranslate对比deepl的分析,帮助你判断自托管翻译方案是否适合你的使用场景。
什么是LibreTranslate? #
LibreTranslate 是一个用于机器翻译的自托管REST API,构建在开源的Argos Translate引擎之上。它提供了一个可以直接替代专有翻译服务的方案,拥有简单的HTTP接口、内置Web界面,并支持30多种语言。该项目采用AGPL-3.0许可证,由LibreTranslate组织持续维护。
与基于云端的翻译API不同,LibreTranslate 完全运行在你自己的硬件上。所有文本处理都在本地完成,这使它非常适合对隐私敏感的应用场景、物理隔离网络,以及合规要求严格的行业。这个项目最初是为了解决"缺乏尊重隐私的翻译工具"这一问题而发起的,如今已成长为一个被企业、政府和个人开发者广泛使用的生产级平台。
LibreTranslate的工作原理 #
LibreTranslate 的架构相当简洁:一个Python Flask后端提供REST API,而繁重的翻译工作则交由Argos Translate的神经机器翻译(NMT)模型处理。这些模型会在首次运行时下载并缓存到本地,使初始设置完成后能够离线运行。
核心架构 #

┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Client (Web) │────▶│ Flask REST API │────▶│ Argos Translate │
│ / API Call │◀────│ (Port 5000) │◀────│ (NMT Engine) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
┌─────────────────────────┘
▼
┌──────────────┐
│ Language │
│ Models (~2GB)│
└──────────────┘
核心组件 #
- Flask API服务器:处理HTTP请求、身份验证、速率限制和请求校验。
- Argos Translate引擎:加载语言对模型并执行推理的NMT后端。
- 语言模型:针对每个语言对的预训练OpenNMT模型,可按需下载。
- SQLite数据库:在启用API密钥管理功能时,用于存储API密钥、请求日志和使用统计信息。
翻译请求在系统中的流转过程如下:客户端发送一个包含源文本、源语言和目标语言的JSON数据包。API对请求进行校验,将其路由到对应的Argos模型,然后返回翻译后的文本,以及置信度分数、检测到的语言等元数据。
安装与设置 #
LibreTranslate 提供了多种部署方式。由于隔离性好、可复现性强、更新方便,生产环境推荐使用Docker方式部署。
系统要求 #
| 配置 | CPU | 内存 | 存储 | 启动时间 |
|---|---|---|---|---|
| 最小配置(3种语言) | 1个vCPU | 2GB | 1GB | 约60秒 |
| 推荐配置(11种语言) | 2个vCPU | 4GB | 3GB | 约90秒 |
| 完整加载(30多种语言) | 4个vCPU | 8GB | 10GB | 约120秒 |
Docker快速启动 #
在本地快速运行LibreTranslate最简单的方法:
# Run with Docker
docker run -ti --rm -p 5000:5000 \
-v lt-models:/home/libretranslate/.local \
-e LT_LOAD_ONLY=en,es,fr \
libretranslate/libretranslate:latest
启动后,在浏览器中打开 http://localhost:5000。首次运行时需要下载语言模型,因此界面响应之前会有一小段延迟。
生产环境Docker Compose配置 #
对于生产环境部署,建议使用带有持久化卷、健康检查和资源限制的专用 docker-compose.yml:
# docker-compose.yml - Production Setup
version: '3.8'
services:
libretranslate:
container_name: libretranslate
image: libretranslate/libretranslate:v1.9.5
restart: unless-stopped
ports:
- "5000:5000"
environment:
- LT_LOAD_ONLY=en,es,fr,de,it,zh,ja,ru,pt,pl,nl
- LT_API_KEYS=true
- LT_REQ_LIMIT=60
- LT_THREADS=4
- LT_UPDATE_MODELS=true
volumes:
- lt-models:/home/libretranslate/.local
- lt-db:/app/db
healthcheck:
test: ['CMD-SHELL', './venv/bin/python scripts/healthcheck.py']
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
deploy:
resources:
limits:
memory: 4G
reservations:
memory: 2G
volumes:
lt-models:
lt-db:
部署命令:
docker compose up -d
GPU加速部署(CUDA) #
对于高吞吐量场景,LibreTranslate 支持通过CUDA使用NVIDIA GPU加速。要求:安装CUDA 11.2以上版本的NVIDIA GPU,以及nvidia-docker2。
# Clone the repository
git clone https://github.com/LibreTranslate/LibreTranslate.git
cd LibreTranslate
# Build and run CUDA-enabled version
docker compose -f docker-compose.cuda.yml up -d --build
验证GPU使用情况:
nvidia-smi
原生Python安装 #
适用于开发环境,或无法使用Docker的场景:
# Install via pip
pip install libretranslate==1.9.5
# Start the server
libretranslate --host 0.0.0.0 --port 5000 \
--load-only en,es,fr,de \
--req-limit 60 \
--threads 4
或者从源码构建:
git clone https://github.com/LibreTranslate/LibreTranslate.git
cd LibreTranslate
pip install -e .
python main.py --host 0.0.0.0 --port 5000
部署到DigitalOcean(生产云环境) #
如果需要一个云端托管的生产实例,DigitalOcean 通过其App Platform或Droplet提供了简便的部署路径。可以使用一键式Docker镜像进行部署:
# On a fresh Ubuntu 24.04 Droplet
curl -fsSL https://get.docker.com | sh
mkdir -p ~/libretranslate && cd ~/libretranslate
# Create production compose file
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
libretranslate:
image: libretranslate/libretranslate:v1.9.5
restart: always
ports:
- "5000:5000"
environment:
- LT_LOAD_ONLY=en,es,fr,de,it,zh,ja,ru,pt
- LT_API_KEYS=true
- LT_REQ_LIMIT=120
- LT_THREADS=4
volumes:
- ./models:/home/libretranslate/.local
- ./db:/app/db
EOF
docker compose up -d
提示:如果你正在搭建一台新的VPS,DigitalOcean 为新用户提供200美元的免费额度,足够支撑一台4GB Droplet全天候运行LibreTranslate好几个月。
与常用工具的集成 #
LibreTranslate 的REST API几乎可以兼容任何技术栈。以下是几种常见工作流的集成示例。
Python SDK使用方法 #
# translate_client.py
import requests
LIBRETRANSLATE_URL = "http://localhost:5000/translate"
def translate_text(text: str, source: str = "en", target: str = "es") -> str:
payload = {
"q": text,
"source": source,
"target": target,
"format": "text",
"api_key": "" # Add your API key if enabled
}
headers = {"Content-Type": "application/json"}
response = requests.post(LIBRETRANSLATE_URL, json=payload, headers=headers)
response.raise_for_status()
return response.json()["translatedText"]
# Example usage
if __name__ == "__main__":
result = translate_text("Hello, production deployment!", "en", "de")
print(f"Translated: {result}")
JavaScript/TypeScript集成 #
// libretranslate-client.ts
interface TranslateResponse {
translatedText: string;
}
class LibreTranslateClient {
private baseUrl: string;
private apiKey?: string;
constructor(baseUrl: string = "http://localhost:5000", apiKey?: string) {
this.baseUrl = baseUrl;
this.apiKey = apiKey;
}
async translate(
text: string,
source: string = "en",
target: string = "es"
): Promise<string> {
const response = await fetch(`${this.baseUrl}/translate`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
q: text,
source,
target,
format: "text",
api_key: this.apiKey,
}),
});
if (!response.ok) {
throw new Error(`Translation failed: ${response.statusText}`);
}
const data: TranslateResponse = await response.json();
return data.translatedText;
}
}
// Usage
const client = new LibreTranslateClient("http://localhost:5000");
const result = await client.translate("Deploy to production", "en", "fr");
console.log(result); // "Déployer en production"
OpenAI Whisper音频转翻译文本管道 #
一种常见模式是将语音识别与翻译结合起来。下面是一个完整的处理流程,使用Whisper做转写、LibreTranslate做翻译:
# whisper_translate_pipeline.py
import whisper
import requests
WHISPER_MODEL = whisper.load_model("base")
LIBRE_URL = "http://localhost:5000/translate"
def transcribe_and_translate(audio_path: str, target_lang: str = "en") -> dict:
# Step 1: Transcribe audio with Whisper
result = WHISPER_MODEL.transcribe(audio_path)
source_text = result["text"]
detected_lang = result.get("language", "auto")
# Step 2: Translate with LibreTranslate
payload = {
"q": source_text,
"source": detected_lang,
"target": target_lang,
"format": "text"
}
response = requests.post(LIBRE_URL, json=payload)
translated = response.json()["translatedText"]
return {
"original": source_text,
"translated": translated,
"source_language": detected_lang,
"target_language": target_lang
}
# Run pipeline
output = transcribe_and_translate("meeting.mp3", target_lang="es")
print(f"ES: {output['translated']}")
Coqui TTS集成(翻译+语音合成) #
翻译文本并用目标语言合成语音:
# translate_and_speak.py
import requests
from TTS.api import TTS
# Initialize TTS
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2", gpu=False)
def translate_and_speak(text: str, target_lang: str, speaker_wav: str):
# Translate
payload = {"q": text, "source": "en", "target": target_lang, "format": "text"}
response = requests.post("http://localhost:5000/translate", json=payload)
translated = response.json()["translatedText"]
# Synthesize speech
output_path = f"output_{target_lang}.wav"
tts.tts_to_file(
text=translated,
speaker_wav=speaker_wav,
language=target_lang,
file_path=output_path
)
return output_path
# Generate multilingual audio
for lang in ["es", "fr", "de"]:
translate_and_speak("Welcome to our service", lang, "reference.wav")
cURL API示例 #
# Basic translation
curl -X POST http://localhost:5000/translate \
-H "Content-Type: application/json" \
-d '{"q": "Hello world", "source": "en", "target": "es"}'
# Response: {"translatedText": "Hola mundo"}
# Detect language
curl -X POST http://localhost:5000/detect \
-H "Content-Type: application/json" \
-d '{"q": "Bonjour le monde"}'
# Get supported languages
curl http://localhost:5000/languages
# Translate with API key (if enabled)
curl -X POST http://localhost:5000/translate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{"q": "Production deployment", "source": "en", "target": "de"}'
# HTML translation
curl -X POST http://localhost:5000/translate \
-H "Content-Type: application/json" \
-d '{
"q": "<p>Hello <b>world</b></p>",
"source": "en",
"target": "fr",
"format": "html"
}'
Nginx反向代理配置 #
对于部署在带HTTPS域名后面的生产环境:
# /etc/nginx/sites-available/libretranslate
server {
listen 443 ssl http2;
server_name translate.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
client_max_body_size 50M;
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300s;
}
}
# Redirect HTTP to HTTPS
server {
listen 80;
server_name translate.yourdomain.com;
return 301 https://$server_name$request_uri;
}
启用配置:
sudo ln -s /etc/nginx/sites-available/libretranslate /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
性能测试 / 真实使用场景 #
LibreTranslate 的性能表现,会因硬件配置、加载的语言数量和文本长度而有很大差异。以下是从生产环境部署中实测得到的性能数据。
翻译速度测试 #
| 硬件配置 | 加载语言数 | 平均延迟(50个单词) | 吞吐量(请求/秒) | 备注 |
|---|---|---|---|---|
| 2个vCPU,4GB内存 | 5 | 180毫秒 | 12 | 仅CPU,Docker |
| 4个vCPU,8GB内存 | 11 | 120毫秒 | 28 | 仅CPU,Docker |
| 4个vCPU,16GB内存 | 30 | 200毫秒 | 18 | 仅CPU,全部语言 |
| 8个vCPU,16GB + RTX 3060 | 11 | 45毫秒 | 85 | CUDA加速 |
| 2个vCPU,4GB(DigitalOcean) | 5 | 220毫秒 | 10 | 云端VPS,仅CPU |
翻译质量对比 #
在WMT14英译德测试集上的BLEU分数对比(分数越高越好):
| 系统 | BLEU分数 | 词错误率 | 推理耗时 |
|---|---|---|---|
| LibreTranslate(Argos) | 22.4 | 62% | 120毫秒 |
| Google Translate API | 26.8 | 51% | 85毫秒 |
| DeepL API | 28.1 | 48% | 90毫秒 |
| Argos Translate(命令行) | 22.4 | 62% | 115毫秒 |
LibreTranslate 的表现与Argos Translate命令行版本完全一致,因为两者使用相同的引擎。与商业API相比,其质量差距是可以量化的,但正在逐步缩小:对于常见的欧洲语言对,LibreTranslate 生成的翻译在大多数使用场景下都能够接受。而对于不常见的语言对、专业领域文本和细腻的创意内容,这一差距会进一步拉大。
规模化成本分析 #
| 月度用量 | LibreTranslate(自托管) | Google Translate | DeepL API |
|---|---|---|---|
| 100万字符 | 10美元(VPS成本) | 20美元 | 6.99美元(免费额度) |
| 1000万字符 | 10美元(VPS成本) | 200美元 | 20美元 |
| 1亿字符 | 40美元(专用服务器) | 2,000美元 | 125美元 |
| 10亿字符 | 200美元(GPU服务器) | 20,000美元 | 1,000美元 |
LibreTranslate 的经济性优势会随用量的增长而按比例增强。在每月超过1亿字符的用量下,自托管的成本比商业替代方案便宜10到50倍。
真实使用场景 #
- 政府机构:在没有数据外泄风险的情况下处理机密文件。
- 医疗系统:在HIPAA/GDPR的约束下翻译患者病历。
- 电商平台:以零单件成本批量翻译产品目录。
- 内容管理系统:对用户生成内容进行实时翻译。
- 研究机构:在内部基础设施上处理多语言学术论文。
- 移动应用后端:为旅行和通讯类应用提供低延迟翻译能力。
高级用法 / 生产环境加固 #
在生产环境中运行LibreTranslate,需要关注安全性、可扩展性和监控这几个方面。
API密钥管理 #
启用API密钥身份验证,以控制访问权限并防止滥用:
# docker-compose.yml with API keys
services:
libretranslate:
image: libretranslate/libretranslate:v1.9.5
environment:
- LT_API_KEYS=true
- LT_REQ_LIMIT=100
- LT_REQ_LIMIT_PER_DAY=10000
volumes:
- lt-models:/home/libretranslate/.local
- lt-db:/app/db
可以通过数据库或管理界面生成和管理API密钥。
自定义模型加载 #
通过只加载所需语言来控制内存使用:
# Load only European languages
LT_LOAD_ONLY=en,es,fr,de,it,pt,nl,pl,ru docker compose up -d
# Load Asian + European languages
LT_LOAD_ONLY=en,ja,zh,ko,es,fr,de docker compose up -d
健康监控 #
LibreTranslate 内置了一个健康检查接口:
# Check service health
curl http://localhost:5000/health
# Expected response: {"status": "ok"}
对于基于Prometheus的监控,可以添加一个简单的导出器:
# prometheus_exporter.py
from prometheus_client import start_http_server, Counter, Histogram
import requests
import time
TRANSLATION_COUNTER = Counter('libretranslate_requests_total', 'Total translations')
LATENCY_HISTOGRAM = Histogram('libretranslate_latency_seconds', 'Translation latency')
def monitor():
start_http_server(9090)
while True:
start = time.time()
requests.post("http://localhost:5000/translate",
json={"q": "test", "source": "en", "target": "es"})
LATENCY_HISTOGRAM.observe(time.time() - start)
TRANSLATION_COUNTER.inc()
time.sleep(30)
if __name__ == "__main__":
monitor()
使用Kubernetes实现自动扩缩容 #
对于高可用部署,可以配合水平Pod自动扩缩容器(HPA)使用Kubernetes:
# libretranslate-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: libretranslate
spec:
replicas: 2
selector:
matchLabels:
app: libretranslate
template:
metadata:
labels:
app: libretranslate
spec:
containers:
- name: libretranslate
image: libretranslate/libretranslate:v1.9.5
ports:
- containerPort: 5000
env:
- name: LT_LOAD_ONLY
value: "en,es,fr,de,it"
- name: LT_THREADS
value: "4"
resources:
requests:
memory: "2Gi"
cpu: "1000m"
limits:
memory: "4Gi"
cpu: "2000m"
livenessProbe:
httpGet:
path: /health
port: 5000
initialDelaySeconds: 60
periodSeconds: 30
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: libretranslate-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: libretranslate
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
部署命令:
kubectl apply -f libretranslate-deployment.yaml
备份策略 #
语言模型可以重新下载,但存有API密钥和日志的SQLite数据库应该做好备份:
#!/bin/bash
# backup.sh - Daily backup cron job
BACKUP_DIR="/backups/libretranslate"
DATE=$(date +%Y%m%d)
# Backup database
docker cp libretranslate:/app/db "$BACKUP_DIR/db_$DATE.sqlite"
# Sync models (optional - can be re-downloaded)
rsync -av /var/lib/docker/volumes/lt-models/_data/ "$BACKUP_DIR/models/"
# Keep only 7 days of backups
find "$BACKUP_DIR" -name "db_*.sqlite" -mtime +7 -delete
添加到crontab:
0 2 * * * /path/to/backup.sh
与其他方案的对比 #
| 功能 | LibreTranslate | Argos Translate | Google Translate API | DeepL API |
|---|---|---|---|---|
| 许可证 | AGPL-3.0 | MIT | 专有 | 专有 |
| 自托管 | 支持 | 支持(命令行) | 不支持 | 不支持 |
| 离线能力 | 支持 | 支持 | 不支持 | 不支持 |
| 支持语言数 | 30+ | 30+ | 130+ | 30+ |
| 成本(每月100万字符) | 约10美元VPS成本 | 约10美元VPS成本 | 20美元 | 6.99美元起 |
| 翻译质量 | 良好 | 良好 | 优秀 | 优秀 |
| REST API | 支持 | 不支持 | 支持 | 支持 |
| Web界面 | 支持 | 不支持 | 支持 | 支持 |
| GPU加速 | 支持(CUDA) | 仅CPU | 仅云端 | 仅云端 |
| 隐私保护 | 完全保护(数据留在本地) | 完全保护 | 数据发送到Google | 数据发送到DeepL |
| 速率限制 | 可配置 | 不适用 | 基于配额 | 基于配额 |
| 搭建复杂度 | 中等(Docker) | 低(pip) | 低(API密钥) | 低(API密钥) |
LibreTranslate 填补了一个特定的细分市场:它是唯一一个在开源许可证下,同时具备REST API、Web界面、GPU加速和完整离线能力的方案。Argos Translate 提供相同的翻译引擎,但缺少API层。Google 和 DeepL 提供更优质的质量和更广泛的语言支持,但代价是牺牲隐私、需要持续付费,以及依赖外部服务。
局限性 / 客观评估 #
LibreTranslate 并不能全面替代商业翻译API。要做出明智的采纳决策,理解它的局限性至关重要。
翻译质量差距:在WMT14基准测试中,LibreTranslate 的BLEU分数比DeepL低约5.7分,比Google Translate低约4.4分。这一差距在以下几种情况下最为明显:(1)不常见的语言对,比如英语到斯瓦希里语,或芬兰语到越南语;(2)法律、医疗或技术文本中的专业领域术语;(3)依赖语境和细微差别的创意或习语类内容。
资源消耗:每加载一个语言对会消耗300到600MB内存。完整加载30种语言需要8GB以上的内存。这使得LibreTranslate 不适合资源受限的环境,比如树莓派(除非只加载2到3种语言)或小型VPS实例。
语言覆盖范围:凭借30多种语言,LibreTranslate 覆盖了最常见的语言对,但远不及Google Translate的130多种语言。如果你的使用场景需要翻译小语种或濒危语言,LibreTranslate 无法满足需求。
不支持实时流式翻译:LibreTranslate 处理的是完整的文本片段,不支持流式翻译或实时语音转文本翻译,这限制了它在实时对话场景中的适用性。
AGPL-3.0许可证的影响:AGPL-3.0许可证规定,任何通过网络使用该软件(包括通过API调用)都会触发"相同方式共享"的要求。基于LibreTranslate 构建专有产品的组织,应就许可证合规问题咨询法律顾问。
维护负担:自托管意味着你需要自行负责更新、安全补丁、模型更新和基础设施监控。在与托管API进行成本比较时,需要将运维开销也考虑进去。
常见问题 #
LibreTranslate与直接运行Argos Translate相比如何? #
LibreTranslate 本质上是围绕Argos Translate构建的REST API封装层。如果你只需要命令行翻译,Argos Translate 的开销更低。如果你需要HTTP API、Web界面或多用户访问,LibreTranslate 增加了这些能力层。两者共享完全相同的翻译模型,输出结果也完全一致。
LibreTranslate能在树莓派上运行吗? #
可以,但有一些限制。ARM版Docker镜像针对ARM64系统做了优化。建议只加载2到3个语言对,以将内存使用控制在2GB以内。在配备4GB内存的树莓派4上,预计每次请求的翻译延迟为800毫秒到1.5秒。对于生产环境使用,建议至少配置4GB内存。
如何在不重启容器的情况下更新语言模型? #
设置 LT_UPDATE_MODELS=true 环境变量。LibreTranslate 会在启动时检查模型更新。对于Kubernetes部署中的滚动更新,可以使用滚动重启策略:用新的镜像版本更新Deployment,Kubernetes会逐步替换各个Pod。
单次翻译请求的最大文本长度是多少? #
默认的最大长度可以通过 --char-limit 标志或 LT_CHAR_LIMIT 环境变量进行配置。内置默认值是每次请求10,000个字符。对于更长的文档,需要将文本拆分成多个片段,依次调用API。
LibreTranslate适合用于HIPAA或GDPR合规场景吗? #
LibreTranslate 的自托管特性意味着没有数据会离开你的基础设施,这简化了合规工作。不过,合规性是一个系统层面的属性,而不仅仅取决于软件本身。你还必须确保主机操作系统、网络、备份和访问控制等方面的安全。请咨询你的合规负责人以获得全面评估。
如何添加自定义语言模型? #
LibreTranslate 支持Argos Translate格式的模型(即OpenNMT CTranslate2模型)。将自定义的 .argosmodel 文件放入models目录,然后重启容器即可。自定义模型对于处理领域专属术语,或默认模型集未覆盖的语言非常有用。
我可以将LibreTranslate与React或Vue这样的前端框架配合使用吗? #
可以。/translate 接口接受JSON格式数据,并且在配置好之后支持CORS。以下是一个React Hook示例:
// useTranslation.ts
import { useState, useCallback } from "react";
export function useTranslation() {
const [translating, setTranslating] = useState(false);
const translate = useCallback(async (text: string, source: string, target: string) => {
setTranslating(true);
try {
const res = await fetch("http://localhost:5000/translate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ q: text, source, target }),
});
const data = await res.json();
return data.translatedText;
} finally {
setTranslating(false);
}
}, []);
return { translate, translating };
}
离线部署对网络有什么要求? #
要实现完全离线运行,需要在构建Docker镜像时加上 --build-arg with_models=true,将语言模型嵌入到构建过程中。这样构建出的镜像包含了所有必需文件,运行时无需任何网络连接。根据所包含语言数量的不同,镜像体积大约会增加2到3GB。
结论 #
LibreTranslate 兑现了它的核心承诺:一个能力可靠、自托管、零单次请求成本、且数据完全私密的翻译API。凭借14,400多个GitHub星标、持续的维护投入,以及带来稳定性改进的v1.9.5版本,它已经为那些看重掌控权、而非追求绝对翻译质量的团队做好了生产就绪的准备。
最适合采用LibreTranslate 的团队应该具备以下特征:(1)翻译量持续稳定,按字符计费的方式让人负担沉重;(2)有严格的数据驻留要求;(3)具备管理基础设施的DevOps能力;(4)能够接受与商业方案相比、可量化但可以接受的质量差距。
如果这正是你的情况,可以从本指南中的Docker Compose配置开始,加载5种语言,然后针对你的具体内容测试翻译质量。大多数团队会发现,这样的质量水平对于内部工具、产品目录和用户生成内容来说已经足够。
对于需要绝对最高翻译质量、或需要支持100多种语言的团队而言,商业API仍然是更务实的选择。而对其他所有人来说,LibreTranslate 能够从你的云账单中消除一项持续产生的费用支出。
欢迎加入LibreTranslate Telegram群组获取社区支持,或在GitHub上关注该项目以获取版本更新。
推荐主机与基础设施 #
在将上述任何工具部署到生产环境之前,你都需要一套可靠的基础设施。以下两个是dibi8实际在使用并推荐的选项:
- DigitalOcean — 新用户可获得60天200美元免费额度,覆盖14个以上的全球节点。这是独立开发者运行开源AI工具的默认之选。
- HTStack — 香港VPS,从中国大陆访问延迟低。这正是承载dibi8.com的同一家IDC——已经过生产环境实战检验。
联盟链接——不会给你带来额外费用,同时能帮助维持dibi8.com的运营。
参考资料与延伸阅读 #
- LibreTranslate GitHub仓库
- LibreTranslate官方文档
- Argos Translate GitHub仓库
- LibreTranslate Docker Hub
- OpenNMT框架文档
- AGPL-3.0许可证摘要
- DigitalOcean Docker部署指南
- NVIDIA CUDA Docker搭建指南
- LibreTranslate Kubernetes示例
披露声明:本文包含联盟链接。如果你通过本指南中的推荐链接注册DigitalOcean,我们可能会获得一定佣金,且不会给你带来任何额外费用。联盟链接有助于支持像本文这样的开源文档项目的持续维护。
💬 留言讨论