translation
    • PDF

    translation

    • PDF

    記事の要約

    概要

    Papago Text Translation APIは、NAVER Papagoに適用された翻訳 REST APIです。入力したテキストを外国語(英語、中国語)に翻訳して出力します。非ログインオープン APIであるため、POSTで呼び出す際、HTTP Headerにアプリケーション登録時に発行された Client IDと Client Secret値を一緒に送信して利用します。
    用語集機能(Glossary)および敬語翻訳(Honorific translation)、置換(Term replacement)オプションを用いて Papago Text Translation APIの結果を補うことができます。

    リクエスト

    • フォームの形でリクエスト
    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={翻訳対象のテキスト}" \
     '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": "{翻訳対象のテキスト}"
    }' \
     '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に対応(例: 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)
    スペイン語(es)、ロシア語(ru)、ドイツ語(de)
    日本語(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例

    // NAVER 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";//アプリケーションクライアント 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);
            }
        }
    }
    
    // NAVER 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 "エラー内容: ".$response;
      }
    ?>
    
    // NAVER 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!');
    });
    
    // NAVER 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)
    
    // NAVER 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 neededソースパラメータが必要
    400N2MT02Unsupported source languageサポートしていないソース言語
    400N2MT03target parameter is neededターゲットパラメータが必要
    400N2MT04Unsupported target languageサポートしていないターゲット言語
    400N2MT05source and target must be differentソースとターゲットが同じ
    400N2MT06There is no source-to-target translatorソース → ターゲット翻訳なし
    400N2MT07text parameter is neededテキストパラメータが必要
    400N2MT08text parameter exceeds max lengthテキストパラメータが最大容量を超過
    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.