
PolyLingo vs DeepL API: hangisi JSON ve Markdown'u daha iyi koruyor?
By Robert M
PolyLingo ve DeepL API: JSON ve Markdown'u hangisi daha iyi koruyor?
DeepL gerçekten mükemmel çeviri yazılımları yapıyor. Sinir ağı çeviri motoru, mevcut en iyilerden biri olarak kabul edilir ve düz metin için zor yenilir. Cümleleri, paragrafları veya sürekli yazılmış belgeleri çeviriyorsanız, DeepL güçlü bir tercihtir.
Bu yazının yanıtladığı soru daha dar kapsamlıdır: İçeriğiniz yapılandırılmış olduğunda DeepL API nasıl performans gösterir? Anahtarları değiştirmeden bir JSON locale dosyasını mı çevirmeniz gerekiyor, yoksa sözdizimini bozmadan bir Markdown blog yazısı mı, ya da HTML sayfasını özniteliklere zarar vermeden mi? Ve bu özel kullanım durumu için PolyLingo ile nasıl karşılaştırılır?
DeepL API nasıl inşa edilmiş
DeepL metin çeviri API'si düz metin kabul eder. Bu onun yerel giriş formatıdır. Her istek en fazla 50 metin dizesi kabul eder ve bunlar bağımsız olarak, aralarında paylaşılan bağlam olmadan çevrilir. Her istek için yalnızca bir hedef dil belirtilebilir. Beş dil gerekiyorsa, beş istek yaparsınız.
DeepL, PDF, Word, PowerPoint ve HTML gibi formatlar için belge çevirisini destekler, ancak bu ayrı bir belge uç noktası üzerinden farklı bir akışla yapılır: dosya yükle, tamamlanmayı kontrol et, sonucu indir. Bu ofis belgeleri için tasarlanmıştır, programatik içerik boru hatları için değil.
Özellikle HTML için, DeepL'ye girdiyi HTML olarak işaret edip etiketleri korumaya çalışmasını söyleyen tag_handling parametresi vardır. Bu basit işaretleme için makul derecede iyi çalışır, ancak ayarlanması gereken isteğe bağlı bir bayraktır ve JSON veya Markdown'a uzanmaz.
JSON için yerel destek yoktur. DeepL'nin metin uç noktası JSON anahtarının ne olduğunu bilmez. Seri hale getirilmiş bir JSON nesnesi gönderirseniz, içeriği bir dize olarak çevirir ve anahtarların, yapının veya dize olmayan değerlerin sağlam kalacağına dair garanti yoktur. DeepL'yi Markdown içeriği için saran babeldown R kütüphanesi, DeepL'nin Markdown bağlantılarındaki noktalama işaretlerini ve biçimlendirmeyi karıştırdığı belgelenmiş durumlar vardır; bu, yapılandırılmış metni düz metin çeviri motorundan geçirmekle ilgili bilinen bir sınırlamadır.
Bu DeepL'ye yönelik bir eleştiri değildir. API'nin ne için tasarlandığının bir açıklamasıdır. DeepL'nin temel kullanım durumu, insan tarafından okunabilir düzyazının yüksek kaliteli çevirisidir. Bunun için optimize edilmiştir ve bunda mükemmeldir.
Farkın pratikte ortaya çıktığı yer
Fark, içeriğiniz düz metin olmadığında görünür hale gelir.
Standart bir Next.js locale dosyasını düşünün:
{
"nav": {
"home": "Home",
"about": "About us",
"contact": "Get in touch"
},
"hero": {
"title": "Welcome to our platform",
"subtitle": "Everything you need in one place"
}
}
Bunu DeepL API ile beş dile çevirmek için şunları yapmanız gerekir:
- Her metin değerini ayrı ayrı çıkarın
- Her dil için ayrı bir API isteği yapın (beş dil, beş istek)
- Çevrilmiş değerlerle JSON yapısını doğru yerlerde yeniden oluşturun
- Çevirinin noktalama işaretlerini değiştirdiği veya JSON geçerliliğini bozan karakterler eklediği durumları yönetin Bu, önemsiz olmayan bir yapıştırma kodu miktarıdır. Ayrıca kırılgandır. Çeviri çıktısındaki herhangi bir sapma, ayrıştırıcınızın beklediğinden farklıysa uygulamanızda sessiz hata veya çalışma zamanı hatası oluşur.
PolyLingo ile nesneyi olduğu gibi format: "json" ile gönderirsiniz ve her hedef dil için tam yapının çevrilmiş bir sürümünü tek bir yanıtta alırsınız. Anahtarlar dokunulmaz. İç içe yapılar korunur. Dize olmayan değerler olduğu gibi bırakılır. Çıktı doğrudan projenize düşer.
curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
-H "Authorization: Bearer $POLYLINGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "{\"nav\":{\"home\":\"Home\",\"about\":\"About us\"}}",
"format": "json",
"targets": ["fr", "de", "es", "ja", "nl"]
}'
Tek istek. Beş dil. Yapı sağlam.
Markdown içeriği
Aynı desen Markdown için de geçerlidir. DeepL'nin metin uç noktası Markdown sözdizimini bilmez. Bir blog yazısı gönderirseniz, tümünü bir dize olarak işler. Başlıklar kalabilir. Kod blokları neredeyse kesinlikle kalmaz, çünkü içlerindeki içerik muhtemelen çevrilebilir metin olarak işlenir. Bağlantı sözdizimi özellikle bağlantı metni sınırlarındaki noktalama işaretleri etrafında bozulabilir.
PolyLingo'nun markdown format bayrağı, modeli Markdown sözdizimini çevrilebilir değil yapısal olarak işlemeye yönlendirir. Başlıklar başlık olarak kalır. Kod blokları olduğu gibi bırakılır. Bağlantı URL'leri değiştirilmez. Sadece düzyazı içeriği değişir.
Bir dokümantasyon sitesi veya teknik içerikli blog için fark önemlidir. Bir öğreticide bozuk bir kod bloğu küçük bir sunum sorunu değil, bozuk bir öğreticidir.
Bir istek vs dil başına bir istek farkı
Bunun üzerinde durmaya değer çünkü maliyet etkileri gerçektir.
DeepL API'si her istek için yalnızca bir hedef dil kabul eder. Bir içeriği on dile çevirmek için on API çağrısı yaparsınız. Büyük bir site veya sık yayın yapan bir CMS için bu, istek yükünün on katı, yönetilecek gecikmenin on katı ve başarısızlık noktalarının on katı demektir.
PolyLingo, hedef dil kodlarından oluşan bir dizi kabul eder ve tüm çevirileri tek bir yanıtta döner. Otuz altı dil tek istek, otuz altı değil.
Küçük projeler için fark yönetilebilir. Ölçek büyüdükçe, çeviri hattınızı kurma mimarisini değiştirir.
Fiyatlandırma modeli
DeepL karakter başına ücret alır. API Ücretsiz planı ayda 500.000 karaktere kadar izin verir ve ücretli planlar karakter tüketimine göre faturalandırılır. Çünkü her dil için bir istek yaparsınız, bir içeriğin karakter sayısı hedef dil sayısıyla çarpılır.
PolyLingo token başına ücret alır ve tüm diller için tek bir istekteki giriş ve çıkış toplamını sayar. Faturalandırma şeffaf ve öngörülebilirdir: ücretsiz katman ayda 50.000 token içerir, ücretli planlar 600.000 token için ayda 9$'dan başlar.
İki model doğrudan kelime başına maliyet açısından karşılaştırılamaz çünkü farklı birimler kullanırlar, ancak PolyLingo'nun tek istek-tüm diller mimarisi, istek sayınızı hedef dil sayısıyla doğrusal olarak çarpmamanız anlamına gelir.
Hangi durumlarda hangisi uygun
DeepL API doğru seçimdir:
- İçeriğiniz yapısal gereksinimi olmayan düz metindir
- İnsan tarafından okunabilir metin için çeviri kalitesi önceliklidir
- Az sayıda dile çeviri yapıyor ve istek hacmi düşüktür
- Zaten DeepL ekosistemine yatırım yapmış ve onların sözlüğü veya resmiyet özelliklerini kullanıyorsunuz
- PolyLingo'nun mevcut 36 dilinin dışında bir dil desteğine ihtiyacınız var (DeepL 100+ dil destekler)
PolyLingo doğru seçimdir:
- İçeriğiniz JSON, Markdown veya HTML ve yapının korunması gerekir
- Tek API çağrısında birden fazla dile çeviri yapmanız gerekir
- İstek verimliliğinin önemli olduğu bir CMS entegrasyonu veya i18n hattı inşa ediyorsunuz
- Format-spesifik çözümler olmadan tüm içerik formatlarında tutarlı bir arayüz istiyorsunuz
- Öngörülebilir aylık kota ile token tabanlı faturalandırma istiyorsunuz
Yan yana özet
| PolyLingo | DeepL API | |
|---|---|---|
| Yerel JSON desteği | Evet | Hayır |
| Yerel Markdown desteği | Evet | Hayır |
| HTML desteği | Evet | Evet (tag_handling bayrağı) |
| Tüm diller tek istekte | Evet | Hayır, dil başına bir istek |
| İçerik formatını otomatik algılar | Evet | Hayır |
| Desteklenen diller | 36 | 100+ |
| Ücretsiz katman | 50.000 token/ay | 500.000 karakter/ay |
| Faturalandırma birimi | Token | Karakter |
| Kod yazmadan web çevirmeni | Evet | Evet (web uygulaması) |
DeepL daha büyük bir dil kataloğuna ve düzyazı çeviri kalitesi için daha uzun bir geçmişe sahiptir. PolyLingo, format bütünlüğünün vazgeçilmez olduğu yapılandırılmış içerik iş akışları için özel olarak tasarlanmıştır.
Onlar bitişik sorunları çözüyorlar. Doğru seçim, içeriğinizin gerçekte nasıl göründüğüne bağlıdır.
PolyLingo'yu deneyin
Ücretsiz katman ayda 50.000 token içerir. Kredi kartı gerekmez. Tam API dokümantasyonu usepolylingo.com/docs adresindedir.
curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
-H "Authorization: Bearer $POLYLINGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "# Hello\n\nThis is **structured** content.",
"format": "markdown",
"targets": ["fr", "de", "es"]
}'