背景
想翻译一段内容,结果网断了,在线翻译页面压根打不开?经常要翻译大量内容,老是受限于字数、请求频率,甚至广告满天飞?担心在线翻译器将内部资料传到 Google、百度服等务器上,数据隐私毫无保障?
又或开发时想调用个翻译 API,却发现不是要绑卡就是要付费,调试都难?
如果你点头了,那或许该了解下LibreTranslate,这是一款开源、免费、无需联网就能用的翻译工具,能本地部署、支持多语言互译、不上传任何数据,还能一键 Docker 启动。
我的工作会经常性校订总部文稿,原本是腾讯翻译君和Google翻译掺合着用,尝过LibreTranslate觉得真是不错,因此推荐给大家~
LibreTranslate 是一个完全开源、无需依赖第三方 Google 或 Azure 等专有提供商来执行翻译,基于神经网络的开源翻译引擎(由开源Argos Translate库提供支持),可以离线运行、自建部署,实现完全自托管。
- 零依赖第三方云平台,可完全本地离线部署
- 支持 API 密钥限制、请求控制
- 支持多语言互译(含中英法西等主流语种)
- 提供 Docker 镜像,部署维护成本极低
官网地址:
https://libretranslate.com/ https://docs.libretranslate.com/guides/installation
docker运行
拉取Docker镜像: docker pull libretranslate/libretranslate 然后运行容器: docker run -ti --rm -p 5000:5000 libretranslate/libretranslate --load-only zh,en
然后在主机上访问虚拟机的Host连接地址:翻译服务映射的端口

出现此界面,则说明Docker服务安装完成. 首页下方非常贴心地提示了API请求的语法,

K8s部署的例子
Deployment
# kubectl apply -f service-libretranslate-deployment.yaml -n common-services apiVersion: apps/v1 kind: Deployment metadata: name: service-libretranslate-deployment # Deployment 名称 labels: app: service-libretranslate spec: replicas: 1 # 运行 1 个容器实例(类似 Docker 的单容器) selector: matchLabels: app: service-libretranslate template: metadata: labels: app: service-libretranslate spec: containers: - name: libretranslate # 容器名称(对应 Docker 的 --name) image: libretranslate/libretranslate:latest # 使用 latest 标签 args: ["--load-only", "en,zh"] # 仅加载英语和中文模型 imagePullPolicy: IfNotPresent # 本地有镜像则不拉取,没有则拉取 ports: - containerPort: 5000 # 容器内的端口(对应 Docker 容器内的 5000) resources: limits: memory: "2Gi" cpu: "500m" volumeMounts: - name: libretranslate-models # 挂载卷的名称(需与下面的 volumes 对应) mountPath: /home/libretranslate/.local # 容器内的挂载路径(对应 Docker 的 -v 容器内路径) - name: libretranslate-apikeys # 挂载卷的名称(需与下面的 volumes 对应) mountPath: /app/db # 容器内的挂载路径(对应 Docker 的 -v 容器内路径) volumes: - name: libretranslate-models hostPath: path: /Users/xxxx/Documents/k8s/pv/libretranslate/models # 宿主机的路径(对应 Docker 的 -v 宿主机路径) type: DirectoryOrCreate # 若路径不存在则自动创建 - name: libretranslate-apikeys hostPath: path: /Users/xxxx/Documents/k8s/pv/libretranslate/apikeys # 宿主机的路径(对应 Docker 的 -v 宿主机路径) type: DirectoryOrCreate # 若路径不存在则自动创建
service
# kubectl apply -f libretranslate-service.yaml -n common-services apiVersion: v1 kind: Service metadata: name: libretranslate-service spec: selector: app: service-libretranslate ports: - protocol: TCP port: 5000 # Service 端口 targetPort: 5000 # 容器端口 nodePort: 30500 # 节点端口(范围 30000-32767) type: NodePort # 通过节点 IP:端口 访问服务