
PolyLingo 대 DeepL API: 어느 쪽이 JSON과 Markdown을 더 잘 보존합니까?
By Robert M
PolyLingo vs DeepL API: JSON과 Markdown을 더 잘 보존하는 것은?
DeepL은 진정으로 훌륭한 번역 소프트웨어를 만듭니다. 그 신경망 번역 엔진은 사용 가능한 것 중 최고 중 하나로 널리 인정받고 있으며, 일반 산문에 대해서는 경쟁하기 어렵습니다. 문장, 단락 또는 연속된 텍스트로 작성된 문서를 번역하는 경우 DeepL은 강력한 선택입니다.
이 게시물이 답하는 질문은 더 좁은 범위입니다: 콘텐츠에 구조가 있을 때 DeepL API는 어떻게 작동할까요? 키를 건드리지 않고 JSON 로케일 파일을 번역하거나, 구문을 깨뜨리지 않고 Markdown 블로그 게시물을 번역하거나, 속성을 망치지 않고 HTML 페이지를 번역해야 할 때는요? 그리고 그 특정 사용 사례에서 PolyLingo와 어떻게 비교될까요?
DeepL API의 구조
DeepL 텍스트 번역 API는 일반 텍스트를 입력으로 받습니다. 이것이 기본 입력 형식입니다. 각 요청은 최대 50개의 텍스트 문자열을 받아 독립적으로 번역하며, 이들 간에 공유 컨텍스트가 없습니다. 요청당 하나의 대상 언어만 지정할 수 있습니다. 다섯 개 언어가 필요하면 다섯 번 요청해야 합니다.
DeepL은 PDF, Word, PowerPoint, HTML과 같은 형식의 문서 번역도 지원하지만, 이는 별도의 문서 엔드포인트를 통해 다른 흐름으로 처리됩니다: 파일 업로드, 완료 여부 폴링, 결과 다운로드. 이는 사무용 문서용으로 설계되었으며 프로그래밍 가능한 콘텐츠 파이프라인용이 아닙니다.
특히 HTML의 경우 tag_handling 매개변수를 html로 설정할 수 있는데, 이는 DeepL에 입력을 HTML로 처리하고 태그를 보존하려 시도하라고 지시합니다. 단순한 마크업에는 꽤 잘 작동하지만, 설정해야 하는 선택적 플래그이며 JSON이나 Markdown에는 적용되지 않습니다.
JSON에 대해서는 네이티브 지원이 없습니다. DeepL의 텍스트 엔드포인트는 JSON 키가 무엇인지 알지 못합니다. 직렬화된 JSON 객체를 보내면 내용을 문자열로 번역하며 키, 구조 또는 비문자열 값이 온전하게 유지된다는 보장이 없습니다. Markdown 콘텐츠용으로 DeepL을 래핑하는 babeldown R 라이브러리는 DeepL이 Markdown 링크와 포맷 내의 구두점을 혼동하는 사례를 문서화했으며, 이는 구조화된 텍스트를 일반 텍스트 번역 엔진에 통과시킬 때 알려진 제한입니다.
이는 DeepL에 대한 비판이 아닙니다. API가 설계된 목적에 대한 설명입니다. DeepL의 핵심 사용 사례는 사람이 읽을 수 있는 산문의 고품질 번역입니다. 그것에 최적화되어 있으며 매우 뛰어납니다.
실제로 차이가 드러나는 곳
콘텐츠가 단순 산문이 아닌 순간 차이가 보입니다.
표준 Next.js 로케일 파일을 생각해 보십시오:
{
"nav": {
"home": "Home",
"about": "About us",
"contact": "Get in touch"
},
"hero": {
"title": "Welcome to our platform",
"subtitle": "Everything you need in one place"
}
}
이것을 DeepL API로 다섯 개 언어로 번역하려면:
- 각 문자열 값을 개별적으로 추출
- 언어별로 별도의 API 요청 수행(5개 언어, 5번 요청)
- 번역된 값을 올바른 위치에 넣어 JSON 구조 재구성
- 번역이 구두점을 변경하거나 JSON 유효성을 깨뜨리는 문자를 도입한 경우 처리 이것은 상당한 양의 접착 코드입니다. 또한 취약합니다. 번역 결과가 파서가 예상하는 것과 다르면 애플리케이션에서 조용한 실패나 런타임 오류가 발생할 수 있습니다.
PolyLingo를 사용하면 객체를 그대로 format: "json"으로 보내고 각 대상 언어에 대해 전체 구조의 번역 버전을 한 번의 응답으로 받습니다. 키는 건드리지 않습니다. 중첩은 유지됩니다. 비문자열 값은 그대로 둡니다. 출력은 바로 프로젝트에 투입할 수 있습니다.
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"]
}'
한 번의 요청. 다섯 개 언어. 구조는 그대로.
Markdown 콘텐츠
같은 패턴이 Markdown에도 적용됩니다. DeepL의 텍스트 엔드포인트는 Markdown 구문을 인식하지 못합니다. 블로그 게시물을 보내면 전체를 문자열로 처리합니다. 제목은 남을 수 있습니다. 코드 블록은 거의 확실히 남지 않습니다. 내부 내용이 번역 가능한 텍스트로 처리될 가능성이 높기 때문입니다. 링크 구문은 특히 링크 텍스트 경계의 구두점 주변에서 손상될 수 있습니다.
PolyLingo의 markdown 형식 플래그는 모델에 Markdown 구문을 번역 대상이 아닌 구조적 요소로 처리하도록 지시합니다. 제목은 제목으로 유지됩니다. 펜스 코드 블록은 그대로 둡니다. 링크 URL은 변경되지 않습니다. 산문 내용만 변경됩니다.
기술 콘텐츠가 있는 문서 사이트나 블로그의 경우 차이가 큽니다. 튜토리얼에서 코드 블록이 손상되는 것은 사소한 표시 문제 아니라 튜토리얼이 깨진 것입니다.
한 요청 대 언어별 한 요청 차이
비용 영향이 크므로 주목할 가치가 있습니다.
DeepL API는 요청당 하나의 대상 언어만 허용합니다. 콘텐츠를 10개 언어로 번역하려면 10번 API 호출을 해야 합니다. 대규모 사이트나 자주 게시하는 CMS의 경우 요청 오버헤드가 10배, 관리해야 할 지연 시간도 10배, 실패 지점도 10배가 됩니다.
PolyLingo는 대상 언어 코드 배열을 받아 한 번의 응답으로 모든 번역을 반환합니다. 36개 언어는 한 요청, 36번 요청이 아닙니다.
작은 프로젝트에서는 차이가 관리 가능하지만, 규모가 커지면 번역 파이프라인 구축 아키텍처가 바뀝니다.
가격 모델
DeepL은 문자 수로 과금합니다. API 무료 플랜은 월 500,000자까지 허용하며, 유료 플랜은 문자 소비량에 따라 청구합니다. 언어별로 요청을 하므로 콘텐츠의 문자 수가 대상 언어 수만큼 곱해져 별도의 요청으로 나뉩니다.
PolyLingo는 토큰 단위로 과금하며, 한 요청 내 모든 언어의 입력과 출력을 합산해 계산합니다. 청구는 투명하고 예측 가능합니다: 무료 등급은 월 50,000 토큰을 포함하며, 유료 플랜은 월 9달러부터 600,000 토큰을 제공합니다.
두 모델은 단어당 비용으로 직접 비교할 수 없습니다. 단위가 다르기 때문입니다. 그러나 PolyLingo의 모든 언어를 한 번에 요청하는 아키텍처는 대상 언어 수에 따라 요청 수가 선형적으로 증가하지 않도록 합니다.
각각의 적합한 경우
DeepL API가 적합한 경우:
-
콘텐츠가 구조적 요구사항이 없는 단순 산문일 때
-
사람이 읽을 수 있는 텍스트의 번역 품질이 가장 중요할 때
-
적은 수의 언어로 번역하고 요청량이 적을 때
-
이미 DeepL 생태계에 투자했고 용어집이나 격식 기능을 사용 중일 때
-
PolyLingo의 현재 36개 언어 외의 언어 지원이 필요할 때(DeepL은 100개 이상의 언어 지원) PolyLingo가 적합한 경우:
-
콘텐츠가 JSON, Markdown 또는 HTML이며 구조를 보존해야 할 때
-
한 번의 API 호출로 여러 언어로 번역해야 할 때
-
CMS 통합이나 i18n 파이프라인을 구축 중이며 요청 효율성이 중요할 때
-
형식별 우회 없이 모든 콘텐츠 형식에 일관된 인터페이스를 원할 때
-
예측 가능한 월간 할당량이 있는 토큰 기반 과금 방식을 원할 때
나란히 요약
| PolyLingo | DeepL API | |
|---|---|---|
| 네이티브 JSON 지원 | 예 | 아니요 |
| 네이티브 Markdown 지원 | 예 | 아니요 |
| HTML 지원 | 예 | 예 (tag_handling 플래그) |
| 한 요청에 모든 언어 포함 | 예 | 아니요, 요청당 한 언어 |
| 콘텐츠 형식 자동 감지 | 예 | 아니요 |
| 지원 언어 수 | 36 | 100+ |
| 무료 등급 | 월 50,000 토큰 | 월 500,000 문자 |
| 청구 단위 | 토큰 | 문자 |
| 코드 없는 웹 번역기 | 예 | 예 (웹 앱) |
DeepL은 더 많은 언어 카탈로그와 산문 번역 품질에 대한 긴 실적을 가지고 있습니다. PolyLingo는 형식 무결성이 절대적인 구조화된 콘텐츠 워크플로우를 위해 특별히 제작되었습니다.
두 제품은 인접한 문제를 해결합니다. 올바른 선택은 실제 콘텐츠가 어떤 모습인지에 달려 있습니다.
PolyLingo 사용해보기
무료 등급은 월 50,000 토큰을 포함합니다. 신용카드 불필요. 전체 API 문서는 usepolylingo.com/docs에서 확인할 수 있습니다.
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"]
}'