EnToZhAPI项目简介
项目背景
提供本地化的英文翻译服务API。支持单句翻译请求或者批量翻译请求。支持建立查询词汇表。
项目架构
前端:使用原生js,使用MDB作为CSS框架。django模板引擎渲染可视化界面。
后端:使用waitress作为后端服务器。django作为web应用框架。
翻译模型:Helsinki-NLP/opus-mt-en-zh
ps: 有效果更好的模型欢迎留言。
API:使用django-ninjaAPI实现RESTFUL API服务以及API文档。
数据库:默认使用sqlite。
缓存:使用redis进行缓存数据管理。
异步任务队列:使用celery进行异步任务处理。
反向代理:使用Nginx处理用户请求并完成分发。
项目构建:使用docker进行项目开发部署以及项目生产部署。
项目开源地址
https://gitee.com/chaofanat/EnToZhAPI
在线测试地址http://api.chaofan.online/
轻量服务器计算性能有限,翻译速度较慢。翻译效果取决于翻译的模型。
python调用API示例
python
import httpx, json, time
translate_api = "http://api.chaofan.online/api/translate"
def batchtranslate(texts : list[str]):
payload = {"text": texts}
payload = json.dumps(payload)
r = httpx.post(url = "http://api.chaofan.online/api/translate/batch/", data = payload).json()
task_ids = r["task_ids"]
print("已经获取任务ID:")
print(task_ids)
print("可以通过url:"+translate_api+"/{task_id} 获取任务执行结果。")
print("任务执行中,等待获取结果(默认等待1分钟后获取任务结果)。。。")
time.sleep(1*60)
translate_res = []
for task_id in task_ids:
res = httpx.get(url = f"{translate_api}/{task_id}").json()
translate_res = translate_res+res["result"]
print("获取任务结果成功:")
print("##################")
for res in translate_res:
print(res)
return translate_res
sentences = [
"The quick brown fox jumps over the lazy dog.",
"Every moment is a fresh beginning.",
"Life is what happens when you're busy making other plans.",
"Stars can't shine without darkness.",
"Believe in yourself and all that you are.",
"Success is not final, failure is not fatal: it is the courage to continue that counts.",
"The best way to predict your future is to create it.",
"Smile, because it confuses people.",
"Dream big and dare to fail.",
"Happiness is a direction, not a destination.",
"You miss 100% of the shots you don't take.",
"The only way to do great work is to love what you do.",
"The future belongs to those who believe in the beauty of their dreams.",
"Be the change you wish to see in the world.",
"If you want to go fast, go alone. If you want to go far, go together.",
"The only limit to our realization of tomorrow will be our doubts of today.",
"The greatest glory in living lies not in never falling, but in rising every time we fall.",
"Opportunity is missed by most people because it is dressed in overalls and looks like work.",
"Life is 10% what happens to us and 90% how we react to it.",
"The best time to plant a tree was 20 years ago. The second best time is now."
]
translate_res = batchtranslate(sentences)
for i in translate_res:
print(i)