평범한 이야기들

[PHP] 파파고(Papago) 번역 API 통신하기 본문

평범한 개발 이야기/PHP

[PHP] 파파고(Papago) 번역 API 통신하기

songsariya 2021. 2. 23. 16:41
728x90

 네이버에서 제공해주는 무료 번역 서비스인 파파고(Papago)와 통신하는 방법을 정리합니다.

파파고는 유료 서비스와 무료 서비스가 있는데 확인해보니깐 전송 시 헤더의 값만 조금 다를 뿐이지 전반적으로 같으며 매우 쉽고 잘 설명되어있어서 누구나 연동하기 쉽습니다.

 

파파고 API 문서 주소입니다. 

 

파파고 API 문서 바로가기

 

파파고 API와 통신하는 클래스 생성

<?php 

/**
 * 2021.02.23
 * 네이버 파파고 API를 이용해 번역 서비스 이용
 * @author sample
 */

class Papago {
	
	private $papagoUrl;
	private $clientId;
	private $clientSecret;
		
	public function __construct() {
		
		// 테스트 계정
		$this->clientId = '발급받은ClientKey';
		$this->clientSecret = '발급받은SecretKey';
		
		// 일반버전 (유료버전은 주소가 다르다.)
 		$this->papagoUrl = 'https://openapi.naver.com/v1/papago/n2mt';	
	}

	/**
	 * 외부에서 접근 가능한 번역 서비스 메소드
	 * 
	 * @param string $text
	 * @param string $source
	 * @param string $target
	 * @return array
	 */
	public function translate($text, $source = "en", $target="ko" ) {
		
		$postData = "source={$source}&target={$target}&text=".urlencode($text);
		
		$responseData = $this->call($postData);
		
		return $responseData;
		
	}
	
	/**
	 * 네이버 파파고 서비스와 통신하는 메서드 
	 * @param string $postData
	 * @return array
	 */    
	private function call($postData) {
		
		// 일반버전 (유료버전은 키의 이름이 다르다.)
 		$headers = array (			
 			"X-Naver-Client-Id: ".$this->clientId,
 			"X-Naver-Client-Secret: ".$this->clientSecret,
 		);
		
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $this->papagoUrl);
		curl_setopt($ch, CURLOPT_HEADER, true);
		curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);			
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
		curl_setopt($ch, CURLOPT_POST, true);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		
		$response = curl_exec($ch);		
		$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
		
        
		// 헤더와 바디를 구분해준다.
		$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
		$header = substr($response, 0, $header_size);
		$body = substr($response, $header_size);
		
		curl_close($ch);
		
        // 결과값을 코드와 함께 배열로 만들어 반환한다.
		$responseData["code"] = $status_code;
		$responseData["data"] = json_decode($body); 
		
		return $responseData;
	}
}

 

728x90

 

사용방법

<?php

include $_SERVER["DOCUMENT_ROOT"] . "/Papago.class.php";

// 객체생성
$papago = new Papago();

// 테스트 문구
$sample_string = "Welcome to my blog.";

// 번역서비스 실행
$sample_translate = $papago->translate(htmlspecialchars_decode($sample_string), "en", "ko");

// 출력
print_r($sample_translate);

 

위와 같이 실행하게 되면 아래와 같이 결과를 받을 수 있다.

 

파파고 번역 API를 받고 정제한 결과 모습

 

아주 쉽고 간단하게 파파고 서비스를 사용할 수 있습니다.

728x90
Comments