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 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に対応(例: 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.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>
エラーコード
HttpStatusCode | ErrorCode | ErrorMessage | Description |
---|---|---|---|
400 | N2MT01 | source parameter is needed | ソースパラメータが必要 |
400 | N2MT02 | Unsupported source language | サポートしていないソース言語 |
400 | N2MT03 | target parameter is needed | ターゲットパラメータが必要 |
400 | N2MT04 | Unsupported target language | サポートしていないターゲット言語 |
400 | N2MT05 | source and target must be different | ソースとターゲットが同じ |
400 | N2MT06 | There is no source-to-target translator | ソース → ターゲット翻訳なし |
400 | N2MT07 | text parameter is needed | テキストパラメータが必要 |
400 | N2MT08 | text parameter exceeds max length | テキストパラメータが最大容量を超過 |
400 | N2MT09 | language detection failed | 言語検出失敗 |
400 | N2MT10 | invalid glossary key | 無効な glossary key |
500 | N2MT99 | Internal server errors | 内部サーバエラー |
この記事は役に立ちましたか?