Python에서 DeepL 번역 사용하기 (제1회)

이 기사에서는 DeepL 번역 API 사용법을 제1회와 제2회로 나누어, 문자열 번역과 파일 번역에 대해 소개합니다.
※Python과 Linux에 대한 기초 지식을 전제로 합니다.
공식 매뉴얼도 함께 확인해 주시기 바랍니다.
https://www.deepl.com/en/docs-api
Python 3.9 버전을 사용합니다.
API 사양은 2022년 7월 기준입니다. 참고하시기 바랍니다.
API를 사용하려면 사용자 등록 후 액세스 키(auth_key)를
취득해야 합니다.
이 기사에서는 [authKey]라고 표기하므로, 본인의 액세스 키로 대체하여 사용하십시오.
이후에 등장하는 문서 ID 및 문서 키 문자열도 [documentID] [documentKey]라고 표기합니다.
태그가 포함된 문자열 번역
먼저 문자열 번역입니다.
xml 태그(html 태그)가 포함된 일본어를 영어(미국)로 번역합니다.
매뉴얼의 코드 예제는 HTTP Request 형식과 이를 Linux의
표준 명령 도구인 curl로 변환한 두 가지 형식으로 기재되어 있습니다.
간편하게 테스트할 수 있는 curl 형식을 참고하여 살펴보겠습니다.
일본어 문자열 "예문: <br /><span style=”font-size:1.2em”>안녕하세요, 세계</span>"
을 영어(미국)로 번역하고 싶다면 다음과 같습니다:
$ src='例文:<br /><span style="font-size:1.2em">こんにちは、世界</span>'
$ auth_key=[authKey]
$ curl https://api.deepl.com/v2/translate \
$ -d auth_key=${auth_key} \
$ -d text=${src} \
$ -d target_lang=en-us \
$ -d tag_handling=xml
이 URL은 유료 버전용입니다. 무료 버전 URL은 매뉴얼을 참조하십시오.
xml 태그를 다루기 때문에 요청 시 tag_handling도 지정하고 있습니다.
원문 언어는 지정하지 않았으나, 이 경우 자동으로 감지됩니다.
이 기사에서는 실행 결과는 생략합니다. 직접 확인하면서 읽어보시기 바랍니다.
이를 Python으로 작성하면 requests.post()를 사용하여 다음과 같습니다:
(requests가 설치되어 있지 않다면 설치해 주십시오)
import requests
import json
def get_key():
return open('key.txt').read().rstrip()
def translate_xml(src):
"""
xml 태그가 포함된 문자열 번역
curl 명령어를 python으로 작성
"""
url = 'https://api.deepl.com/v2/translate'
headers = dict()
headers['Content-Type'] = 'application/x-www-form-urlencoded'
data = dict()
data['auth_key'] = get_key()
data['text'] = src
data['target_lang'] = 'en-us'
data['tag_handling'] = 'xml'
res = requests.post(url, headers=headers, data=data)
res_text = res.text
res_data = json.loads(res_text)
tgt = res_data['translations'][0]['text']
return tgt
src = '예문: <br /><span style="font-size:1.2em">안녕하세요, 세계</span>'
tgt = translate_xml(src)
print(tgt)
액세스 키 문자열은 소스 코드에 작성하는 것을 피하고
텍스트 파일 key.txt에 저장한 것을 읽어와서 사용하고 있습니다.
res_text는 DeepL 서버로부터 받은 결과이며, json 형식의 문자열입니다.
json.loads()를 사용하여 일단 dict로 변환한 후, 번역 결과를 추출합니다.
이 글의 목적 중 하나는 매뉴얼의 curl 명령어를
Python으로 표현하는 예시를 보여주는 것입니다.
양쪽을 비교해 보면 감을 잡으실 수 있을 것입니다.
이상, 이 글에서는:
· DeepL API를 사용하여 문자열을 번역했습니다.
다음에는 DeepL API를 사용하여 문자열 파일 번역을 하겠습니다.
읽어주셔서 감사합니다.





