مستندات
ترجمه قدرتمند را با برنامههای کاربردی خود با API REST ساده ما ادغام کنید.
شروع
TranslateAPI یک رابط REST ساده برای ترجمه متن بین ۱۸۰+ زبان فراهم میکند.
https://api.translateapi.ai/api/v1/
آغاز سریع
اولین درخواست ترجمه خود را انجام دهید:
curl -X POST https://api.translateapi.ai/api/v1/translate/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"text": "Hello, world!",
"target_language": "es"
}'
import requests
response = requests.post(
"https://api.translateapi.ai/api/v1/translate/",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"text": "Hello, world!",
"target_language": "es"
}
)
result = response.json()
print(result["translated_text"]) # "Hola, mundo!"
const response = await fetch("https://api.translateapi.ai/api/v1/translate/", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
text: "Hello, world!",
target_language: "es"
})
});
const result = await response.json();
console.log(result.translated_text); // "Hola, mundo!"
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
class Program
{
static async Task Main()
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add(
"Authorization", "Bearer YOUR_API_KEY"
);
var content = new StringContent(
JsonConvert.SerializeObject(new {
text = "Hello, world!",
target_language = "es"
}),
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync(
"https://api.translateapi.ai/api/v1/translate/",
content
);
var result = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<dynamic>(result);
Console.WriteLine(data.translated_text); // "Hola, mundo!"
}
}
احراز هویت
درخواستهای خود را با استفاده از یک کلید API احراز هویت کنید. میتوانید کلیدهای API را از داشبورد.
احراز هویت سرآیند) توصیه میشود (
Authorization: Bearer ta_your_api_key_here
پارامتر پرسش
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
ترجمۀ متن
ترجمه متن به یک زبان هدف واحد.
POST https://api.translateapi.ai/api/v1/translate/
بدنه درخواست
| پارامتر | & نوع | الزامی | & توصیف |
|---|---|---|---|
text |
string | آره | متن برای ترجمه) حداکثر ۵۰۰۰۰ کاراکتر ( |
target_language |
string | آره | Target language code (e.g., "es", "fr", "de") |
source_language |
string | نه | Source language code. Default: "auto" (auto-detect) |
* استفاده target_language ) رشته (برای یک زبان یا target_languages ) آرایه (برای مضرب. ببینید ترجمه چند هدفه.
پاسخ
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
ترجمه چند هدفه
ترجمۀ متن به چند زبان در یک درخواست واحد. از همان نقطه پایانی به عنوان ترجمۀ واحد استفاده میکند.
POST https://api.translateapi.ai/api/v1/translate/
بدنه درخواست
{
"text": "Hello, world!",
"target_languages": ["es", "fr", "de", "ja"],
"source_language": "en"
}
استفاده target_languages ) آرایه (به جای target_language (string) برای چند هدف.
پاسخ
{
"source_language": "en",
"translations": {
"es": "Hola, mundo!",
"fr": "Bonjour, monde!",
"de": "Hallo, Welt!",
"ja": "こんにちは、世界!"
},
"character_count": 52,
"translation_time": 2.31
}
ترجمۀ گروهی
ترجمه چند متن در یک زمان با پردازش غیر همگام. ارسال یک بسته و نظرسنجی برای نتایج.
POST https://api.translateapi.ai/api/v1/translate/batch/
گام ۱: ارسال دسته
curl -X POST https://api.translateapi.ai/api/v1/translate/batch/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"texts": ["Hello", "Goodbye", "Thank you"],
"target_language": "es",
"source_language": "en"
}'
پاسخ) HTTP 202 پذیرفته شد (
{
"job_id": "67535b2b-c9e3-4f82-9499-e237edbc1dd8",
"status": "pending",
"total_texts": 3,
"queue_position": 1,
"source_language": "en",
"target_languages": ["es"],
"character_count": 22,
"credits_remaining": -1,
"poll_url": "https://api.translateapi.ai/api/v1/jobs/67535b2b-c9e3-4f82-9499-e237edbc1dd8/"
}
گام ۲: نظرسنجی برای نتایج
GET https://api.translateapi.ai/api/v1/jobs/{job_id}/
مثال رایگیری (پایتون)
import time, requests
job_id = response.json()["job_id"]
total = response.json()["total_texts"]
headers = {"Authorization": "Bearer YOUR_API_KEY"}
print(f"Batch submitted: {total} texts (job {job_id})")
while True:
result = requests.get(f"https://api.translateapi.ai/api/v1/jobs/{job_id}/", headers=headers).json()
status = result["status"]
processed = result.get("processed_texts", 0)
progress = result.get("progress_percentage", 0)
if status == "completed":
print(f"Completed: {processed}/{total} texts in {result.get('processing_time', 0):.1f}s")
translations = result["result_data"]["translations"]
break
elif status == "failed":
print(f"Failed at {processed}/{total}: {result.get('error_message', 'unknown')}")
raise Exception(result.get("error_message", "Translation failed"))
elif status == "pending":
queue_pos = result.get("queue_position", "?")
print(f"Queued (position {queue_pos}) — waiting for GPU worker...")
else:
print(f"[{status}] {processed}/{total} ({progress:.0f}%)")
time.sleep(3)
پاسخ) منتظر — در صف ، منتظر GPU (
{
"job_id": "67535b2b-...",
"status": "pending",
"processed_texts": 0,
"total_texts": 3,
"progress_percentage": 0.0,
"queue_position": 3
}
پاسخ) در حال پردازش (
{
"job_id": "67535b2b-...",
"status": "processing",
"processed_texts": 1,
"total_texts": 3,
"progress_percentage": 33.33,
"queue_position": null
}
پاسخ) تکمیل شد (
{
"job_id": "67535b2b-...",
"status": "completed",
"processed_texts": 3,
"total_texts": 3,
"progress_percentage": 100.0,
"processing_time": 10.65,
"result_data": {
"translations": ["Hola", "Adiós", "Gracias"],
"source_language": "en",
"target_language": "es",
"character_count": 22,
"processing_time": 10.65
}
}
ردیابی پیشرفت در زمان واقعی
هر پاسخ نظرسنجی شامل حوزههای پیشرفت در زمان واقعی است ، بنابراین میتوانید دقیقاً آنچه که با گروه شما اتفاق میافتد را نظارت کنید:
| میدان | & توصیف |
|---|---|
status |
وضعیت جاری کار: pending (در صف، منتظر یک کارمند GPU)، processing (ترجمه فعال) completed, failed |
processed_texts |
تعداد ترجمههای تک تک تکمیلشده تا کنون. بهروزرسانی در زمان واقعی هنگام ترجمه هر متن. |
total_texts |
تعداد کل ترجمهها در این بسته (متنها × زبانهای هدف). |
progress_percentage |
درصد تکمیل (۰- ۱۰۰). از processed_ texts / total_ texts محاسبه میشود. |
queue_position |
موقعیت شما در صف هنگامی که وضعیت » منتظر « است) ۱ = بعدی (. صفر هنگام پردازش یا تکمیل. از این برای تخمین زمان انتظار و نمایش وضعیت صف به کاربرانتان استفاده کنید. |
processing_time |
زمان پردازش کل به ثانیه (زمانی که تکمیل شد در دسترس است). |
status است "pending", کارمندان GPU مشغول کار بر روی بستههای دیگر هستند. چک کنید queue_position برای دیدن تعداد کارهایی که جلوتر از کار شما هستند (۱ = شما بعدی هستید). کار شما به طور خودکار آغاز خواهد شد — نیازی به عمل نیست ، فقط به نظرسنجی ادامه دهید.
بهترین روشها برای بارهای کاری بزرگ
- فرستادن یک زبان هدف در هر درخواست دسته. این هر دسته را سریع نگه میدارد و ردیابی پیشرفت را آسان میکند.
- بستهها را در ۵۰- ۱۰۰ متن نگه دارید. بستههای کوچکتر سریعتر تکمیل میشوند و به روزرسانیهای پیشرفت مکررتری به شما میدهند.
- اجرای حداکثر ۲ کار گروهی همزمان. پردازنده گرافیکی ۲ کار گروهی را به صورت موازی پردازش میکند — کارهای اضافی در صف هستند و سریعتر شروع نمیشوند.
- در زمانبندی، به جای ارسال یک بسته جدید، همان job_id را دوباره پرس و جو کنید. ممکن است کار اصلی هنوز در GPU در حال پردازش باشد.
- هر ۳- ۵ ثانیه پرس و جو. پرس و جوهای مکررتر سرعت پردازش را افزایش نمیدهد.
دسته چندزبانه
ترجمۀ چند متن به چند زبان در یک زمان:
{
"texts": ["Hello", "Goodbye"],
"target_languages": ["es", "fr"],
"source_language": "en"
}
_دادههای نتیجه تکمیل شده
{
"translations": [
{"es": "Hola", "fr": "Bonjour"},
{"es": "Adiós", "fr": "Au revoir"}
],
"source_language": "en",
"target_languages": ["es", "fr"],
"character_count": 24,
"processing_time": 2.45
}
پارامترهای درخواست
| پارامتر | & نوع | الزامی | & توصیف |
|---|---|---|---|
texts |
array | آره | آرایه رشتهها برای ترجمه |
target_language |
string | آره | کد زبان هدف برای یک زبان |
target_languages |
array | آره | آرایه کدهای زبان هدف برای چندین زبان |
source_language |
string | نه | Source language code. Default: "auto" |
* هر دو را وارد کنید target_language یا target_languagesنه هر دو
job_id. سوراخ GET /api/v1/jobs/{job_id}/ تا status است "completed", بعدش بخون result_data برای ترجمهها. استفاده کنید progress_percentage براي رديابي پيشرفت
ترجمۀ سند
ترجمۀ تمام سندها با حفظ قالببندی. از قالبهای پروندۀ متعدد پشتیبانی میکند.
POST https://api.translateapi.ai/api/v1/translate/document/
درخواست) چندبخشی/دادههای فرم (
| پارامتر | & نوع | الزامی | & توصیف |
|---|---|---|---|
file |
file | آره | سند برای ترجمه) حداکثر ۱۰ مگابایت ( |
target_language |
string | آره | Target language code (e.g., "es", "fr", "de") |
source_language |
string | نه | Source language code. Default: "auto" (auto-detect) |
انواع پروندههای پشتیبانیشده
.txt- پروندههای متنی ساده.docx- سندهای Word.pdf- سندهای PDF (از جمله اسکن شده).json- پروندههای JSON) مقادیر رشته را ترجمه میکند (.xml- پروندههای XML
.srt- پروندههای زیرنویس.po/.pot- پروندههای ترجمۀ Gettext.jpg/.jpeg- تصاویر JPEG) OCR (.png- تصاویر PNG) OCR (.tiff/.tif- تصاویر TIFF) OCR (.bmp- تصاویر BMP) OCR (.webp- تصاویر WebP) OCR (
مثال (cURL)
# Translate a Word document
curl -X POST https://api.translateapi.ai/api/v1/translate/document/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@document.docx" \
-F "target_language=es" \
-F "source_language=en"
# Translate text from an image (OCR)
curl -X POST https://api.translateapi.ai/api/v1/translate/document/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@scanned_page.jpg" \
-F "target_language=es" \
-F "source_language=en"
.txt پرونده
پاسخ
{
"id": 123,
"original_filename": "document.docx",
"file_type": "docx",
"source_language": "en",
"target_language": "es",
"status": "completed",
"character_count": 5420,
"translated_file_url": "/media/translated/document_es.docx",
"created_at": "2024-01-15T10:30:00Z",
"completed_at": "2024-01-15T10:30:05Z"
}
مقادیر وضعیت
pending |
پروندۀ بارگذاریشده، منتظر پردازش |
processing |
ترجمه در حال انجام |
completed |
ترجمه کامل شد، بارگیری در دسترس است |
failed |
ترجمه شکست خورد (check error_message) |
GET https://api.translateapi.ai/api/v1/translate/document/{id}/
بررسی وضعیت ترجمه یک سند یا بازیابی نشانی وب بارگیری.
پاسخ
{
"id": 123,
"original_filename": "document.docx",
"status": "completed",
"translated_file_url": "/media/translated/document_es.docx",
"character_count": 5420
}
تشخیص زبان
تشخیص زبان در هر درخواست ترجمه ایجاد میشود. Set source_language to "auto" (یا آن را حذف کنید) و زبان شناسایی شده در پاسخ بازگردانده میشود.
POST https://api.translateapi.ai/api/v1/translate/
بدنه درخواست
{
"text": "Bonjour, comment allez-vous?",
"target_language": "en"
}
پاسخ
{
"translated_text": "Hello, how are you?",
"source_language": "fr",
"target_language": "en",
"translations": {
"en": "Hello, how are you?"
},
"character_count": 28,
"translation_time": 0.52
}
اون source_language میدان در پاسخ زبان تشخیص داده شده را نشان میدهد هنگامی که تشخیص خودکار استفاده میشود.
زبانهای پشتیبانیشده
فهرست تمام زبانهای پشتیبانیشده را دریافت کنید.
GET https://api.translateapi.ai/api/v1/translate/languages/
پاسخ
{
"count": 186,
"results": [
{"iso": "en", "name": "English", "en_label": "English"},
{"iso": "es", "name": "Español", "en_label": "Spanish"},
{"iso": "fr", "name": "Français", "en_label": "French"},
...
]
}
مدلهای ترجمه
ما از پیشرفتهترین مدلهای ترجمه متن باز استفاده میکنیم که بر روی زیرساخت GPU خودمان اجرا میشوند. تمام مدلها به صورت تجاری مجوز دارند (آپاچی ۲٫۰).
| مدل | زبانها | بهترین برای |
|---|---|---|
| Helsinki-NLP/opus-mt | 50+ جفت زبان | زبانهای مشترک (EN, ES, FR, DE, IT, PT, RU, ZH, JA, etc.) |
| Google MADLAD-400 | 400+ زبان | زبانهای نادر، پوشش جامع |
پیآیپی بهطور خودکار بهترین مدل را برای زوج زبانتان انتخاب میکند. میتوانید گزینهای را مشخص کنید engine پارامتر:
| موتور | & توصیف |
|---|---|
"auto" |
پیشفرض، اول سعی میکند HuggingFace را امتحان کند، به MADLAD-400 برمیگردد |
"huggingface" |
Force HuggingFace/MarianMT (سریعترین، بیش از ۵۰ زبان) |
"madlad" |
Force MADLAD-400 (400+ languages) مشارکتکنندگان ویکیپدیا. |
دستکاری خطا
API از کدهای وضعیت استاندارد HTTP برای نشان دادن موفقیت یا شکست استفاده میکند.
| کد | & توصیف |
|---|---|
200 |
موفقیت |
400 |
درخواست نادرست - پارامترهای نامعتبر |
401 |
غیرمجاز - کلید API نامعتبر یا مفقود |
402 |
پرداخت لازم است - بیش از سهمیهنویسههای روزانه گذشت |
429 |
درخواستهای زیادی - از حد نرخ تجاوز شد |
503 |
خدمات در دسترس نیست - موتور ترجمه به طور موقت خاموش است |
قالب پاسخ خطا
{
"error": "daily_limit_exceeded",
"credits_remaining": 0,
"daily_limit": 100000
}
محدودیتهای نرخ
محدودیتها بسته به طرح متفاوت است. ببینید قیمت گذاری براي تمام جزئيات:
| نقشه | کاراکترها/ماه | قیمت | |
|---|---|---|---|
| آزاد | 250,000 | $0 | ثبت نام |
| آغازگر | 2,500,000 | $9/% 1 دقیقه | اشتراک |
| حرفهای | 10,000,000 | $29/% 1 دقیقه | اشتراک |
| کار | 40,000,000 | $79/% 1 دقیقه | اشتراک |
| مقیاسبندی | 125,000,000 | $199/% 1 دقیقه | اشتراک |
وقتي از حدت فراتر رفتي، يه 429 Too Many Requests تا ماه ديگه جواب نميدم وگرنه ارتقا ميديد
زیرساخت ابری مقیاسپذیری خودکار
TranslateAPI روی نمونههای اختصاصی NVIDIA A100 GPU با مقیاسبندی افقی خودکار اجرا میشود. هنگامی که تقاضا افزایش مییابد، نمونههای اضافی GPU در عرض چند دقیقه برای حفظ زمان پاسخ سریع راه اندازی میشوند. این بدان معناست که API ما میتواند درخواستهای همزمان تقریباً نامحدود را بدون کاهش کیفیت مدیریت کند - از یک درخواست تا هزاران درخواست در دقیقه.