مستندات

ترجمه قدرتمند را با برنامه‌های کاربردی خود با 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
کلیدهای API خود را امن نگه دارید! آن‌ها را در کد جانبی مشتری یا مخزن عمومی در معرض دید قرار ندهید.

ترجمۀ متن

ترجمه متن به یک زبان هدف واحد.

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 (
پشتیبانی OCR: پرونده‌های تصویر و PDFهای اسکن‌شده با تشخیص نوری نویسه‌ها (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"
پرونده‌های تصویر با OCR برای استخراج متن قبل از ترجمه پردازش می‌شوند. خروجی ترجمه شده به عنوان یک .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 ما می‌تواند درخواست‌های همزمان تقریباً نامحدود را بدون کاهش کیفیت مدیریت کند - از یک درخواست تا هزاران درخواست در دقیقه.

رتبه بندی این صفحه
ممنون از رتبه بندی شما!
/5 بر اساس رتبه‌ها