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.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.ntruss.com/nmt/v1/translation'

요청 파라미터

해당 API는 요청 파라미터를 필요로 하지 않습니다.

요청 헤더

헤더명 설명
X-NCP-APIGW-API-KEY-ID 앱 등록 시 발급받은 Client ID
X-NCP-APIGW-API-KEY-ID:{Client ID}
X-NCP-APIGW-API-KEY 앱 등록 시 발급 받은 Client Secret
X-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의 우선 순위가 높음
replaceInfo String N - 치환 번역 지정(공백 포함)
- 지정된 index의 번역을 특정. str 미 설정 시, 원문을 그대로 제공
- 한⇔영/한⇔일/한⇔중(간/번체)/영⇔일/영⇔중(간/번체)/일⇔중(간/번체) 가능
honorific Boolean N - 높임말 여부(번역 기본값은 False)
영⇒한, 일⇒한, 중(간/번체)⇒한, 한⇒일, 영⇒일, 중(간/번체)⇒일 번역 방향만 가능

언어 코드 (source, target)

언어 언어 코드
한국어 ko
일본어 ja
영어 en
중국어 간체 zh-CN
중국어 번체 zh-TW
베트남어 vi
태국어 th
스페인어 es
프랑스어 fr
인도네시아어 id
러시아어 ru
독일어 de
이탈리아어 it

번역할 수 있는 원본 언어와 목적 언어

원본 언어(언어 코드) 목적 언어(언어 코드) | 원본 언어(언어 코드) 목적 언어(언어 코드)
한국어(ko) 영어(en) | 영어(en) 한국어(ko)
한국어(ko) 일본어(ja) | 일본어(ja) 한국어(ko)
한국어(ko) 중국어 간체(zh-CN) | 중국어 간체(zh-CN) 한국어(ko)
한국어(ko) 중국어 번체(zh-TW) | 중국어 번체(zh-TW) 한국어(ko)
한국어(ko) 베트남어(vi) | 베트남어(vi) 한국어(ko)
한국어(ko) 인도네시아어(id) | 인도네시아어(id) 한국어(ko)
한국어(ko) 태국어(th) | 태국어(th) 한국어(ko)
한국어(ko) 독일어(de) | 독일어(de) 한국어(ko)
한국어(ko) 러시아어(ru) | 러시아어(ru) 한국어(ko)
한국어(ko) 스페인어(es) | 스페인어(es) 한국어(ko)
한국어(ko) 이탈리아어(it) | 이탈리아어(it) 한국어(ko)
한국어(ko) 프랑스어(fr) | 프랑스어(fr) 한국어(ko)
영어(en) 일본어(ja) | 일본어(ja) 영어(en)
영어(en) 프랑스어(fr) | 프랑스어(fr) 영어(en)
영어(en) 중국어 간체(zh-CN) | 중국어 간체(zh-CN) 영어(en)
영어(en) 중국어 번체(zh-TW) | 중국어 번체(zh-TW) 영어(en)
일본어(ja) 중국어 간체(zh-CN) | 중국어 간체(zh-CN) 일본어(ja)
일본어(ja) 중국어 번체(zh-TW) | 중국어 번체(zh-TW) 일본어(ja)
중국어 간체(zh-CN) 중국어 번체(zh-TW) | 중국어 번체(zh-TW) 중국어 간체(zh-CN)

응답

응답 바디

필드명 타입 설명
srcLangType string 원본 언어 코드
tarLangType string 번역 결과 언어 코드
translatedText string 번역된 문장

예시

요청 예시

POST /nmt/v1/translation HTTP/1.1
HOST: naveropenapi.apigw.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.ntruss.com/nmt/v1/translation'

응답 예시

{
  "message": {
    "@type": "response",
    "@service": "naverservice.labs.api",
    "@version": "1.0.0",
    "result": {
      "translatedText": "tea"
    }
  }
}

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.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.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.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.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.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) 적용 예제

인덱스 0~3는 source text copy, 5~8은 test로 지정
replaceInfo={"infos":[{"begin":0,"length":4},{"begin":5,"length":4,"str":"test"}]}

오류 코드

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 파라미터가 최대 용량 초과
500 N2MT99 Internal server errors 내부 서버 오류

이 문서가 도움이 되었습니까?