닷넷/C#

C# 번역 파파고 API 사용하기 (영어를 한글로, 한글을 영어로 번역)

FreeBear 2020. 3. 3. 13:51
반응형

구글 번역기 API는 연동을 다 했으니까

이제 파파고를 연동할 차례!

 

 

네이버 계정이 있다는 가정 하에

네이버 디벨로퍼(네이버 개발자센터)에 들어가서 로그인을 한다.

 

 

그 다음 Application에서 애플리케이션 등록을 클릭한다.

 

 

애플리케이션 이름은 아무거나 입력하고,

사용 API에서 Papago 번역을 선택한다.

 

 

환경은 앱으로 만드는게 아니므로 WEB 설정을 선택 한 다음

웹 서비스 URL은 가지고 있는 도메인으로 입력하였는데

네아로를 사용하며 이것저것 테스트해봤을 때 실제 사용되고 있는 도메인이면

아무거나 사용해도 문제는 없었으므로

도메인이 없는 경우 티스토리 혹은 네이버 도메인으로 해도 될 듯.

 

 

모든 것이 입력이 다 되었으면 [등록하기] 클릭

 

 

내 애플리케이션에서 방금 등록한 것을 클릭하면

Client ID와 Client Secret이 있다.

 

 

API 가이드와 기본정보를 보면 POST로 요청 URL에 요청하고(Requset),

이때, Content-Type은 application/x-www-form-urlencoded이고,

Character set은 UTF-8(Encoding.UTF8)이며,

응답받을 때(출력 포맷, Response)는 JSON 형식으로 값을 받는 것을 알 수 있다.

 

 

JSON 출력 포맷은 위와 같다.

 

 

이제 코드로 작성하여 사용해보자!

 

 

HTTP POST에 대한 것은

https://jasmintime.com/241

 

C# HTTP POST 요청 및 응답 (ContentType: application/x-www-form-urlencoded)

private void HTTPPost() { string sParam = "sParam1=value1&sParam2=value2"; string sUrl = "http://abc/web"; // 서버 접속 WebRequest webRequest = WebRequest.Create(sUrl); webRequest.Method = "POST"; /..

jasmintime.com

이것을 참고하고,

 

 

json 파싱에 대한 것은

https://jasmintime.com/233

 

C# JSON 파싱하기

비주얼스튜디오에 Newtonsoft.Json을 설치했다는 가정하에 c#에서 Json 파싱하는 법을 작성하도록 하겠습니다. 아직 설치 하지 못한 분은 아래 글에서 설치하기를 따라하시면 됩니다. 2018/10/26 - [프로그래밍/C#..

jasmintime.com

이것을 참고한다.

 

 

private void Papago()
{
    // 요청 URL
    string sUrl = "https://openapi.naver.com/v1/papago/n2mt";
    
    // 파라미터에 값넣기 (파파고 NMT API 가이드에서 -d 부분이 파라미터이다)
    string sParam = string.Format("source={0}&target={1}&text={2}", comboBox1.Text, comboBox2.Text, txtSendText.Text);
    
    // 파라미터를 Character Set에 맞게 변경
    byte[] bytearry = Encoding.UTF8.GetBytes(sParam);

    // 서버에 요청
    WebRequest webRequest = WebRequest.Create(sUrl);
    webRequest.Method = "POST";           
    webRequest.ContentType = "application/x-www-form-urlencoded";
    
    // 헤더 추가하기 (파파고 NMT API 가이드에서 -h 부분이 헤더이다)
    webRequest.Headers.Add("X-Naver-Client-Id", "네이버 클라이언트 아이디");
    webRequest.Headers.Add("X-Naver-Client-Secret", "네이버 클라이언트 시크릿");
    
    // 요청 데이터 길이
    webRequest.ContentLength = bytearry.Length;

    Stream stream = webRequest.GetRequestStream();
    stream.Write(bytearry, 0, bytearry.Length);
    stream.Close();

    // 응답 데이터 가져오기(출력포맷)
    WebResponse webResponse = webRequest.GetResponse();
    stream = webResponse.GetResponseStream();
    StreamReader streamReader = new StreamReader(stream);
    string sReturn = streamReader.ReadToEnd();

    streamReader.Close();
    stream.Close();
    webResponse.Close();


    JObject jObject = JObject.Parse(sReturn);
    
    // JSON 출력포맷에서 필요한 부분(번역된 문장)만 가져오기
    txtToText.Text = jObject["message"]["result"]["translatedText"].ToString();
}

 

결과적으로 코드로 표현하면 위와 같다.

 

 

한글을 영어로 번역할 수 있다.

 

source와 target을 서로 바꾸면 영어를 한글로 번역할 수 있다.

 

API 레퍼런스에 대한 자세한 내용은 여기서

 

반응형