translation
    • PDF

    translation

    • PDF

    Article Summary

    개요

    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

    요청 바디

    파라미터타입필수 여부설명
    sourceStringY원본 언어(source language)의 언어 코드. auto로 설정 시, 자동으로 소스 언어를 감지
    targetStringY목적 언어(target language)의 언어 코드
    textStringY- 번역할 텍스트
    - 1회 호출 시 최대 5,000자까지 번역 가능
    glossaryKeyStringN- 클라우드 콘솔에서 용어집 기능을 사용하는 경우, 해당 용어집의 glossaryKey에 대응 (ex. 6ae8eba5-3154-4646-bc16-1c96532082e6)
    - 용어집 데이터를 기반으로 치환 번역 적용
    - 한⇔영/한⇔일/한⇔중(간/번체)/영⇔일/영⇔중(간/번체)/일⇔중(간/번체) 가능
    - replaceInfo와 동시에 사용 시, replaceInfo의 우선 순위가 높음
    - 용어집 등록 용어에는 honorific 적용되지 않음
    replaceInfoStringN- 치환 번역 지정(공백 포함)
    - 지정된 index의 번역을 특정. str 미 설정 시, 원문을 그대로 제공
    - 한⇔영/한⇔일/한⇔중(간/번체)/영⇔일/영⇔중(간/번체)/일⇔중(간/번체) 가능
    honorificBooleanN- 높임말 여부(번역 기본값은 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

    지원언어

    지원언어
    한국어(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)
    일본어(ja)
    중국어 간체(zh-CN)/번체(zh-TW),
    베트남어(vi), 태국어(th), 인도네시아어(id), 프랑스어(fr)
    중국어 간체(zh-CN)
    중국어 번체(zh-TW)

    응답

    응답 바디

    필드명타입설명
    srcLangTypestring원본 언어 코드
    tarLangTypestring번역 결과 언어 코드
    translatedTextstring번역된 문장

    예시

    요청 예시

    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": {
            "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.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 / 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>
    

    오류 코드

    HttpStatusCodeErrorCodeErrorMessageDescription
    400N2MT01source parameter is neededsource 파라미터 필요
    400N2MT02Unsupported source language지원하지 않는 source 언어
    400N2MT03target parameter is neededtarget 파라미터 필요
    400N2MT04Unsupported target language지원하지 않는 target 언어
    400N2MT05source and target must be differentsource와 target 이 동일
    400N2MT06There is no source-to-target translatorsource → target 번역기가 없음
    400N2MT07text parameter is neededtext 파라미터 필요
    400N2MT08text parameter exceeds max lengthtext 파라미터가 최대 용량 초과
    400N2MT09language detection failed언어감지 실패
    400N2MT10invalid glossary key유효하지 않은 glossary key
    500N2MT99Internal server errors내부 서버 오류

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

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.