translation
    • PDF

    translation

    • PDF

    Article Summary

    概要

    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={翻訳する 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回呼び出す際に最大5000文字まで翻訳可能
    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のユースケース

    // 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 "Error内容:".$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 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.