translation
- 인쇄
- PDF
translation
- 인쇄
- PDF
기사 요약
이 요약이 도움이 되었나요?
의견을 보내 주셔서 감사합니다.
개요
Papago Text Translation API는 네이버 Papago에 적용된 번역 REST API입니다. 입력된 텍스트를 다른 나라 언어(영어, 중국어)로 번역해 출력합니다. 비로그인 오픈 API이므로 POST로 호출할 때 HTTP Header에 애플리케이션 등록 시 발급받은 Client ID와 Client Secret 값을 같이 전송하여 사용합니다.
용어집 기능(Glossary) 및 높임말 번역(Honorific translation), 치환(Term replacement) 옵션을 활용해 Papago Text Translation API의 결과를 보완할 수 있습니다.
요청
- form 형식으로 요청
curl -i -X POST \
-H "X-NCP-APIGW-API-KEY-ID:{앱 등록 시 발급받은 Client ID}" \
-H "X-NCP-APIGW-API-KEY:{앱 등록 시 발급 받은 Client Secret}" \
-H "Content-Type:application/x-www-form-urlencoded" \
-d "source={원본 언어 코드}" \
-d "target={번역 결과 언어 코드}" \
-d "text={번역할 text}" \
'https://naveropenapi.apigw-pub.fin-ntruss.com/nmt/v1/translation'
- json 형식으로 요청
curl -i -X POST \
-H "X-NCP-APIGW-API-KEY-ID:{앱 등록 시 발급받은 Client ID}" \
-H "X-NCP-APIGW-API-KEY:{앱 등록 시 발급 받은 Client Secret}" \
-H "Content-Type:application/json" \
-d \
'{
"source": "{원본 언어 코드}",
"target": "{번역 결과 언어 코드}",
"text": "{번역할 text}"
}' \
'https://naveropenapi.apigw-pub.fin-ntruss.com/nmt/v1/translation'
요청 파라미터
해당 API는 요청 파라미터를 필요로 하지 않습니다.
요청 헤더
헤더명 | 설명 |
---|---|
X-NCP-APIGW-API-KEY-ID | 앱 등록 시 발급받은 Client IDX-NCP-APIGW-API-KEY-ID:{Client ID} |
X-NCP-APIGW-API-KEY | 앱 등록 시 발급 받은 Client SecretX-NCP-APIGW-API-KEY:{Client Secret} |
Content-Type | 전송할 콘텐츠 형식Content-Type:application/x-www-form-urlencoded Content-Type:application/json |
요청 바디
파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
source | String | Y | 원본 언어(source language)의 언어 코드. auto로 설정 시, 자동으로 소스 언어를 감지 |
target | String | Y | 목적 언어(target language)의 언어 코드 |
text | String | Y | - 번역할 텍스트 - 1회 호출 시 최대 5,000자까지 번역 가능 |
glossaryKey | String | N | - 클라우드 콘솔에서 용어집 기능을 사용하는 경우, 해당 용어집의 glossaryKey에 대응 (ex. 6ae8eba5-3154-4646-bc16-1c96532082e6) - 용어집 데이터를 기반으로 치환 번역 적용 - 한⇔영/한⇔일/한⇔중(간/번체)/영⇔일/영⇔중(간/번체)/일⇔중(간/번체) 가능 - replaceInfo와 동시에 사용 시, replaceInfo의 우선 순위가 높음 - 용어집 등록 용어에는 honorific 적용되지 않음 |
replaceInfo | String | N | - 치환 번역 지정(공백 포함) - 지정된 index의 번역을 특정. str 미 설정 시, 원문을 그대로 제공 - 한⇔영/한⇔일/한⇔중(간/번체)/영⇔일/영⇔중(간/번체)/일⇔중(간/번체) 가능 |
honorific | Boolean | N | - 높임말 여부(번역 기본값은 False) 영⇒한, 일⇒한, 중(간/번체)⇒한, 한⇒일, 영⇒일, 중(간/번체)⇒일 번역 방향만 가능 |
*번역하지 않아야 할 텍스트의 경우, html span tag를 사용하여 해당 텍스트 지정 가능. Tag는 글자수에 포함되지 않음
*지원언어는 glossaryKey 및 replaceInfo 와 동일
<span translate="no"> </span> 또는 <span class="notranslate"> </span>
언어 코드 (source, target)
언어 | 언어 코드 |
---|---|
한국어 | ko |
영어 | en |
일본어 | ja |
중국어 간체 | zh-CN |
중국어 번체 | zh-TW |
베트남어 | vi |
태국어 | th |
인도네시아어 | id |
프랑스어 | fr |
스페인어 | es |
러시아어 | ru |
독일어 | de |
이탈리아어 | it |
지원언어
지원언어 | ||
---|---|---|
↔ | 영어(en), 일본어(ja), 중국어 간체(zh-CN)/번체(zh-TW) 베트남어(vi),태국어(th), 인도네시아어(id), 프랑스어(fr) 스페인어(es), 러시아어(ru), 독일어(de), 이탈리아어(it) | |
↔ | 일본어(ja), 중국어 간체(zh-CN)/번체(zh-TW), 베트남어(vi), 태국어(th), 인도네시아어(id), 프랑스어(fr) 스페인어(es), 러시아어(ru), 독일어(de) | |
↔ | 중국어 간체(zh-CN)/번체(zh-TW), 베트남어(vi), 태국어(th), 인도네시아어(id), 프랑스어(fr) | |
↔ | 중국어 번체(zh-TW) |
응답
응답 바디
필드명 | 타입 | 설명 |
---|---|---|
srcLangType | string | 원본 언어 코드 |
tarLangType | string | 번역 결과 언어 코드 |
translatedText | string | 번역된 문장 |
예시
요청 예시
POST /nmt/v1/translation HTTP/1.1
HOST: naveropenapi.apigw-pub.fin-ntruss.com
User-Agent: curl/7.49.1
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-NCP-APIGW-API-KEY-ID: {애플리케이션 등록 시 발급받은 client id 값}
X-NCP-APIGW-API-KEY: {애플리케이션 등록 시 발급받은 client secret 값}
Content-Length: 51
curl -i -X POST \
-H "X-NCP-APIGW-API-KEY-ID:kf4a7jfark" \
-H "X-NCP-APIGW-API-KEY:B8oczJX6DJiorOGcN3UbuylsJFUGqGXFaTxIIemY" \
-H "Content-Type:application/x-www-form-urlencoded" \
-d "source=en" \
-d "target=ko" \
-d "text=hello world" \
'https://naveropenapi.apigw-pub.fin-ntruss.com/nmt/v1/translation'
응답 예시
{
"message": {
"result": {
"srcLangType": "en",
"tarLangType": "ko",
"translatedText": "파파고는 최고의 번역기입니다"
}
}
}
API 예제
// 네이버 Papago Text Translation API 예제
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class APIExamTranslate {
public static void main(String[] args) {
String clientId = "YOUR_CLIENT_ID";//애플리케이션 클라이언트 아이디값";
String clientSecret = "YOUR_CLIENT_SECRET";//애플리케이션 클라이언트 시크릿값";
try {
String text = URLEncoder.encode("만나서 반갑습니다.", "UTF-8");
String apiURL = "https://naveropenapi.apigw-pub.fin-ntruss.com/nmt/v1/translation";
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
// post request
String postParams = "source=ko&target=en&text=" + text;
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(postParams);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
BufferedReader br;
if(responseCode==200) { // 정상 호출
br = new BufferedReader(new InputStreamReader(con.getInputStream()));
} else { // 오류 발생
br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
}
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = br.readLine()) != null) {
response.append(inputLine);
}
br.close();
System.out.println(response.toString());
} catch (Exception e) {
System.out.println(e);
}
}
}
// 네이버 Papago Text Translation API 예제
<?php
$client_id = "YOUR_CLIENT_ID";
$client_secret = "YOUR_CLIENT_SECRET";
$encText = urlencode("반갑습니다.");
$postvars = "source=ko&target=en&text=".$encText;
$url = "https://naveropenapi.apigw-pub.fin-ntruss.com/nmt/v1/translation";
$is_post = true;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, $is_post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
$headers = array();
$headers[] = "X-NCP-APIGW-API-KEY-ID: ".$client_id;
$headers[] = "X-NCP-APIGW-API-KEY: ".$client_secret;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "status_code:".$status_code."<br />";
curl_close ($ch);
if($status_code == 200) {
echo $response;
} else {
echo "Error 내용:".$response;
}
?>
// 네이버 Papago Text Translation API 예제
var express = require('express');
var app = express();
var client_id = 'YOUR_CLIENT_ID';
var client_secret = 'YOUR_CLIENT_SECRET';
var query = '번역할 문장을 입력하세요.';
app.get('/translate', function(req, res) {
var api_url = 'https://naveropenapi.apigw-pub.fin-ntruss.com/nmt/v1/translation';
var request = require('request');
var options = {
url: api_url,
form: { source: 'ko', target: 'en', text: query },
headers: { 'X-NCP-APIGW-API-KEY-ID': client_id, 'X-NCP-APIGW-API-KEY': client_secret },
};
request.post(options, function(error, response, body) {
if (!error && response.statusCode == 200) {
res.writeHead(200, { 'Content-Type': 'text/json;charset=utf-8' });
res.end(body);
} else {
res.status(response.statusCode).end();
console.log('error = ' + response.statusCode);
}
});
});
app.listen(3000, function() {
console.log('http://127.0.0.1:3000/translate app listening on port 3000!');
});
// 네이버 Papago Text Translation API 예제
import os
import sys
import urllib.request
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
encText = urllib.parse.quote("번역할 문장을 입력하세요")
data = "source=ko&target=en&text=" + encText
url = "https://naveropenapi.apigw-pub.fin-ntruss.com/nmt/v1/translation"
request = urllib.request.Request(url)
request.add_header("X-NCP-APIGW-API-KEY-ID",client_id)
request.add_header("X-NCP-APIGW-API-KEY",client_secret)
response = urllib.request.urlopen(request, data=data.encode("utf-8"))
rescode = response.getcode()
if(rescode==200):
response_body = response.read()
print(response_body.decode('utf-8'))
else:
print("Error Code:" + rescode)
// 네이버 Papago Text Translation API 예제
using System;
using System.Net;
using System.Text;
using System.IO;
namespace NaverAPI_Guide
{
public class APIExamTranslate
{
static void Main(string[] args)
{
string url = "https://naveropenapi.apigw-pub.fin-ntruss.com/nmt/v1/translation";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add("X-NCP-APIGW-API-KEY-ID", "YOUR-CLIENT-ID");
request.Headers.Add("X-NCP-APIGW-API-KEY", "YOUR-CLIENT-SECRET");
request.Method = "POST";
string query = "오늘 날씨는 어떻습니까?";
byte[] byteDataParams = Encoding.UTF8.GetBytes("source=ko&target=en&text=" + query);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteDataParams.Length;
Stream st = request.GetRequestStream();
st.Write(byteDataParams, 0, byteDataParams.Length);
st.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string text = reader.ReadToEnd();
stream.Close();
response.Close();
reader.Close();
Console.WriteLine(text);
}
}
}
치환옵션(replaceInfo / html span tag) 적용 예제
인덱스 0~3는 source text copy, 5~8은 test로 지정
replaceInfo={"infos":[{"begin":0,"length":4},{"begin":5,"length":4,"str":"test"}]}
- I love <span translate="no">#BTS</span>
오류 코드
HttpStatusCode | ErrorCode | ErrorMessage | Description |
---|---|---|---|
400 | N2MT01 | source parameter is needed | source 파라미터 필요 |
400 | N2MT02 | Unsupported source language | 지원하지 않는 source 언어 |
400 | N2MT03 | target parameter is needed | target 파라미터 필요 |
400 | N2MT04 | Unsupported target language | 지원하지 않는 target 언어 |
400 | N2MT05 | source and target must be different | source와 target 이 동일 |
400 | N2MT06 | There is no source-to-target translator | source → target 번역기가 없음 |
400 | N2MT07 | text parameter is needed | text 파라미터 필요 |
400 | N2MT08 | text parameter exceeds max length | text 파라미터가 최대 용량 초과 |
400 | N2MT09 | language detection failed | 언어감지 실패 |
400 | N2MT10 | invalid glossary key | 유효하지 않은 glossary key |
500 | N2MT99 | Internal server errors | 내부 서버 오류 |
이 문서가 도움이 되었습니까?