Ҳужжатлаштириш
Бизнинг оддий REST API билан дастурларингизга кучли таржимани интеграция қилинг.
Ишни бошлаш
TranslateAPI матнни 180 дан ортиқ тилларга таржима қилиш учун оддий REST интерфейсини тақдим этади. Барча API охирги нуқталари JSON жавобларини қайтаради.
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 | Ҳа | Таржима қилинадиган матн (максимум 50 000 белги) |
target_language |
string | Ҳа* | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Йўқ | Source language code. Default: "auto" (auto-detect) |
* Фойдаланилган target_language (string) битта тил ёки 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/
1-қадам: тўпламни юбориш
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/"
}
2-босқич: Натижалар учун сўров
GET https://api.translateapi.ai/api/v1/jobs/{job_id}/
Сўров намунаси (Python)
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 |
Тугатиш фоизи (0-100). Processed_texts / total_texts дан ҳисобланган. |
queue_position |
Ҳолат "ўтказиб юборилган" бўлса, навбатдаги ўринингиз (1 = кейинги навбат). Ишлаб чиқилган ёки тугатилганда нуқта. Буни кутиш вақтини ҳисоблаш ва навбатдаги ҳолатни фойдаланувчиларга кўрсатиш учун ишлатинг. |
processing_time |
Секундлардаги умумий ишлаш вақти (тугатилганда қўлга киритилади). |
status дан "pending", GPU ишчилари бошқа партиялар билан банд. queue_position Сиздан олдин қанча иш борлигини кўриш учун (1 = сиз кейингисиз). Сизнинг ишингиз автоматик равишда бошланади - ҳаракат талаб қилинмайди, фақат сўровни давом эттиринг.
Кўп иш юкламалари учун энг яхши амалиётлар
- Ҳар бир партия талаби учун 1 та мақсад тили жўнатилади. Бу ҳар бир партияни тезлаштиради ва амалга оширилаётган ишларни кузатишни осонлаштиради.
- Баччаларни 50-100 матнгача сақланг. Кичикроқ баччалар тезроқ тугайди ва сизга тезроқ янгиланишларни беради.
- Кўпи билан 2 та бир вақтда бажариладиган партия ишларини бажаринг. GPU 2 та партияни параллел равишда ишлайди - қўшимча ишлар навбатда туради ва тезроқ бошланмайди.
- Тайм-аутда, янги партияни юбориш ўрнига, шу job_id'ни қайта сўровдан ўтказиш. Аслий иш ҳали ҳам GPUда ишлаётган бўлиши мумкин.
- Ҳар 3-5 сонияда сўров. Кўпроқ сўровлар ишлаш тезлигини оширмайди.
Кўп тилли пакет
Бир вақтда бир неча матнларни бир неча тилларга таржима қилиш:
{
"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 | Ҳа | Таржима қилинадиган ҳужжат (max 10MB) |
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}/
Ҳужжат таржимасининг ҳолатини текшириш ёки юклаб олиш URL'ини олиш.
Жавоб
{
"id": 123,
"original_filename": "document.docx",
"status": "completed",
"translated_file_url": "/media/translated/document_es.docx",
"character_count": 5420
}
Тилни аниқлаш
Тилни аниқлаш ҳар бир таржима талабига киритилади. 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 инфратузилмаси устида ишлайдиган энг янги очиқ манбали таржима моделларини қўллаймиз. Барча моделлар савдо лицензиясига эга (Apache 2.0).
| Модель | Тиллар | Энг яхшиси |
|---|---|---|
| Helsinki-NLP/opus-mt | 50+ тил жуфтлари | Кўп учрайдиган тиллар (EN, ES, FR, DE, IT, PT, RU, ZH, JA, ва ҳоказо) |
| Google MADLAD-400 | 400+ тиллар | Намунали тиллар, кенг қамровли қамров |
API сизнинг тил жуфтлигингиз учун энг яхши моделни автоматик равишда танлайди. engine параметр:
| Двигатель | Тасвирлаш |
|---|---|
"auto" |
Дефолт. Аввал HuggingFace'ни синаш, кейин MADLAD-400'га қайтиш |
"huggingface" |
HuggingFace/MarianMT'ни мажбурлаш (энг тезкор, 50+ тил) |
"madlad" |
Force MADLAD-400 (400+ тиллар) |
Хатоларни бошқариш
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/МБ | Аъзо бўлиш |
| Про | 10,000,000 | $29/МБ | Аъзо бўлиш |
| Иш | 40,000,000 | $79/МБ | Аъзо бўлиш |
| Масштаблаш | 125,000,000 | $199/МБ | Аъзо бўлиш |
Агар чегарангиздан ошиб кетсангиз, аламли азобга дучор бўласиз. 429 Too Many Requests Кейинги ойгача ёки янгилашингизгача жавоб бермайди.
Auto-Scaling Cloud Infrastructure
TranslateAPI runs on dedicated NVIDIA A100 GPU instances with automatic horizontal scaling. When demand increases, additional GPU instances are launched within minutes to maintain fast response times. This means our API can handle virtually unlimited concurrent requests without degradation — from a single request to thousands per minute.