파파고 홈페이지 ( https://papago.naver.com/ ) 에서 번역서비스를 사용해보면,
원본언어는 '언어감지'로 설정해 놓고, 번역할 대상 언어만 선택하면 되는데요.
앞에서 다루어보았던 파파고 API 만으로는 언어감지를 사용할 수가 없습니다.
파파고 API는 엄격히 원본언어는 어떤 언어다라고 선택해주어야만 하지요.
하지만 파파고 API의 단짝처럼 붙어다니는 API가 있더군요.
바로 '언어감지' API 입니다.
이 언어감지 API를 사용하면 이 기능을 구현할 수 있을것 같아, 오늘은 이 부분을 다뤄보도록 하겠습니다.
이 게시글은 아래 게시글에서 연재되는 게시글입니다.
https://itadventure.tistory.com/539
이 게시글은 2022년 7월 6일 작성되었습니다. 추후 네이버측의 의도에 따라 일부 화면이 변경될 수 있습니다.
API 추가 신청
이미 파파고 API를 사용 신청했었가 때문에 이번에는 API 를 추가만 하면 되는데요.
네이버 개발자 센터 홈페이지 ( https://developers.naver.com/main/ ) 에 접속하신 다음에.
Application - 내 애플리케이션 메뉴를 선택하신 다음에
지난번에 만들었던 애플리케이션을 선택하시면 되는데요.
이어서 애플리케이션 정보가 표시되는 창에서 API 설정 탭을 선택하시면 됩니다.
그리고 나서 화면을 아래로 스크롤시켜주세요.
그러면 사용 API 라는데가 보이실 겁니다.
여기서 '선택하세요' 선태상자를 클릭하고, Papago 언어감지를 선택합니다.
그러자, 오우~ Papago 언어감지 라는 항목이 Papago 번역 아래 추가되었습니다.
이제 쏜살같이 화면 아래로 가서, [ 수정 ] 버튼을 눌러주시면 신청은 끝~
샘플소스를 찾아라!
이제 이 API를 사용해볼까요?
예제소스가 있을지 문서를 찾아보도록 하지요.
Document - 파파고 - 언어감지 메뉴를 선택해 봅시다.
이번에도 예제가 있는 것 같습니다. 언어감지 안의 구현 예제 - PHP 를 선택해 보시면
이 번에도 친절한 PHP 예제를 만나보실 수 있습니다.
뭐 당연한 이야기이지만 이번에도 동그랗게 표시한 부분의 Client ID, Client Secret 부분은 여러분이 발급받은 키로 바꿔서 입력해 주셔야 합니다.
이 예제의 실행 결과는 아래와 같은데요.
"반갑습니다"라는 문장이 어떤 언어인지를 맞춰보라고 했더니 "ko" 라는 응답을 내놓은 결과이지요.
실용예제
뭐 기능은 보나 마나 맞을테니 다시 실용적인 예제로 들어가 보도록 합시다.
금방 짠 싱싱한(?) 소스인데요.
<?
$sentence = $_POST['sentence'];
$translate_opt= $_POST['translate_opt'];
?>
<html>
<head>
<title></title>
</head>
<body>
파파고 번역 API <br/>
<form style='margin:0' method='post'>
<input type='text' name='sentence' value="<?=$sentence?>" style='width:100%'/><br/>
원본언어 : 자동 감지<br/>
번역언어 : <select name='translate_opt'>
<option value="ko" <?=$translate_opt=="ko"?"selected":""?>>한글로</option>
<option value="en" <?=$translate_opt=="en"?"selected":""?>>영어로</option>
<option value="ja" <?=$translate_opt=="ja"?"selected":""?>>일본어로</option>
<option value="zh-CN" <?=$translate_opt=="zh-CN"?"selected":""?>>중국어 간체</option>
<option value="zh-TW" <?=$translate_opt=="zh-TW"?"selected":""?>>중국어 번체</option>
<option value="hi" <?=$translate_opt=="hi"?"selected":""?>>힌디어</option>
<option value="es" <?=$translate_opt=="es"?"selected":""?>>스페인어</option>
<option value="fr" <?=$translate_opt=="fr"?"selected":""?>>프랑스어</option>
<option value="de" <?=$translate_opt=="de"?"selected":""?>>독일어</option>
<option value="pt" <?=$translate_opt=="pt"?"selected":""?>>포르투갈어</option>
<option value="vi" <?=$translate_opt=="vi"?"selected":""?>>베트남어</option>
<option value="id" <?=$translate_opt=="id"?"selected":""?>>인도네시아어</option>
<option value="fa" <?=$translate_opt=="fa"?"selected":""?>>페르시아어</option>
<option value="ar" <?=$translate_opt=="ar"?"selected":""?>>아랍어</option>
<option value="mm" <?=$translate_opt=="mm"?"selected":""?>>미얀마어</option>
<option value="th" <?=$translate_opt=="th"?"selected":""?>>태국어</option>
<option value="ru" <?=$translate_opt=="ru"?"selected":""?>>러시아어</option>
<option value="it" <?=$translate_opt=="it"?"selected":""?>>이탈리아어</option>
</select>
<button>번역</button>
</form>
<?php
if($sentence=="")die("번역할 문장을 입력하세요.");
// 네이버 Papago NMT 기계번역 Open API 예제
$client_id = "H0eyO15nsfy1_vGms7tS"; // 네이버 개발자센터에서 발급받은 CLIENT ID
$client_secret = "26xj1PpeHP";// 네이버 개발자센터에서 발급받은 CLIENT SECRET
$encText = urlencode($sentence);
$postvars = "query=".$encText;
$url = "https://openapi.naver.com/v1/papago/detectLangs";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
$headers = array();
$headers[] = "X-Naver-Client-Id: ".$client_id;
$headers[] = "X-Naver-Client-Secret: ".$client_secret;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);
if($status_code == 200) {
$responseObj = json_decode($response);
$source=$responseObj->langCode;
echo "감지된 언어 : {$source}<br/>";
} else {
echo "Error 내용:".$response;
die();
}
if($source==$translate_opt)
{
die("같은 언어 번역은 필요하지 않습니다.");
}
$postvars="";
$postvars="source=$source&target=$translate_opt";
$postvars .= "&text=".$encText;
$url = "https://openapi.naver.com/v1/papago/n2mt";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
$headers = array();
$headers[] = "X-Naver-Client-Id: ".$client_id;
$headers[] = "X-Naver-Client-Secret: ".$client_secret;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);
if($status_code == 200) {
$responseObj = json_decode($response);
echO "번역된 문장 : <b>" . $responseObj->message->result->translatedText . "</b>";
} else {
echo "Error:".$response;
}
?>
</body>
</html>
이 소스를 PHP로 구성하여 웹페이지를 실행하면 아래와 같이 표시됩니다.
이제 문장과 번역될 대상 언어만 선택해 주면 되는데요.
I want you to do my homework. 라는 문장을 한글로 번역 요청해보도록 하겠습니다.
문장을 먼저 입력하는데, 이 원본 문장이 영어인지 한글인지를 선택해줄 필요가 없습니다.
언어 감지 API 가 자동으로 판단해 주니까요 :)
번역대상 언어만 골라주시면 됩니다.
지원되는 언어가 꽤 많네요. 우선 한국어를 선택해 보도록 하지요.
그리고 나서 번역 버튼을 클릭해 주시면, 아래와 같이 감지된 언어가 en(영어) 이고,
번역된 문장은 "나는 네가 내 숙제를 해주길 바란다"라고 번역된 것을 보실 수 있습니다.
"내 숙제 좀 해줘!"라는 해석이 자연스럽겠지만, 뭐 컴퓨터스러운 번역이네요 :)
독일어로 바꿔서 한번 번역을 해볼까요?
번역결과는 "Ich möchte, dass Sie meine Hausaufgaben machen."라는군요.
독일어에 대해서는 문맹인지라... 넘어가도록 하겠습니다.
개발 환경을 갖추실 수 없는 분께서는 크레이의 홈페이지에서 테스트해 보실 수 있습니다.
http://dreamplan7.cafe24.com/papago/index2.php
마무~리!
오늘은 언어감지 API를 추가 신청하고, 이를 PHP에서 활용하는 방법을 살펴보았는데요.
사실 이 소스는 좀 너저분합니다. 만약 홈페이지 여기 저기에 이 소스를 이용해서 번역 기능을 넣었다고 해봅시다. 약 100군데 정도 넣었다고 해볼까요?
그러다 만약 API 의 주소가 바뀌거나 사용법이 바뀌었다면?... 으악!
100군데를 모두 찾아가서 수정해 주어야 합니다. 이런..
30년전 윈도우즈O/S 가 없던 도스 시절에는 GW-BASIC 이라는 프로그래밍 언어를 업무용으로 사용했었는데요. 그 당시에는 정말로 그렇게 했었습니다... 그 방법밖에는 없었거든요.
점점 프로그래밍 언어가 좋아지면서 반복작업이 줄어들게 된 지금에는 이제 유용한 방법을 사용해야겠지요.
한군데만 수정해주는 되는 방법으로 말이지요.
편한게 좋은거지요~
유익하셨다면 공감 한방! 댓글은 구우~ㅅ
감사합니다!!
다음게시글 : https://itadventure.tistory.com/541