본문 바로가기
Flutter

[Flutter][Papago API] 파파고 api 사용해서 언어 인식 및 번역

by tls1107 2021. 12. 22.
728x90
반응형

오늘은 파파고 api를 사용해 볼 겁니다!

 

파파고에 대한 자세한 설명은 아래에서 확인 가능합니다!

https://developers.naver.com/docs/papago/

 

파파고 - Papago API

파파고 파파고는 다국어 언어 처리에 대한 네이버의 기술과 경험을 번역 엔진에 적용해 보다 정확한 번역 결과를 제공하는 서비스입니다. 파파고가 제공하는 RESTful 형태의 API를 사용하면 서비

developers.naver.com


먼저 파파고 api 를 사용하기 위해선

네이버 아이디로 로그인 후 

papago 를 선택합니다.

그러면 다음과 같은 화면이 나오는데

오픈 API 이용 신청을 클릭합니다.

이제 어플리케이션 등록을 하면 됩니다!

어플리케이션 등록을 해야 API 를 사용할 때

필요한 Key 를 받을 수 있습니다.

 

어플리케이션 이름은 본인이 원하는 이름으로 설정하면 되고

사용 API 에서 저희는 오늘 언어 감지와 번역을 할 것이기 때문에

위와 같이 두가지를 선택합니다.

 

그 후 개발환경을 선택합니다.

해당하는 서비스 환경을 선택하면 됩니다!

 

등록을 마친 후 위와 같은 화면이 보인다면

무사히 등록 작업이 끝난 것입니다.


그리고 파파고의 api를 사용하기 위해서 

package 하나를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
    
  http: ^0.13.4

바로 http 패키지 입니다.

바로 import 해줍니다!

import 'package:http/http.dart' as http;

Future<void> getLanguage_papago() async {
    String _client_id = "등록 후 받은 아이디";
    String _client_secret = "등록 후 받은 시크릿 코드";
    String _content_type = "application/x-www-form-urlencoded; charset=UTF-8";
    String _url = "https://openapi.naver.com/v1/papago/detectLangs";
    
    http.Response lan = await http.post(Uri.parse(_url), headers: {
      // 'query': text,
      'Content-Type': _content_type,
      'X-Naver-Client-Id': _client_id,
      'X-Naver-Client-Secret': _client_secret
    }, body: {
      'query': "번역할 내용"
    });
    if (lan.statusCode == 200) {
      var dataJson = jsonDecode(lan.body);
      //만약 성공적으로 언어를 받아왔다면 language 변수에 언어가 저장됩니다. (ex: eu, ko, etc..)
      var language = dataJson['langCode'];
    } else {
      print(lan.statusCode);
    }
  }

그럼 이제 입력한 텍스트가 어떤 언어인지 판별하는 함수 구현은

끝 났 다!


그럼 이제 파파고 번역 기능을 구현해보자!

import 'package:http/http.dart' as http;

Future<void> getTranslation_papago() async {
    String _client_id = "본인의 api Client Id";
    String _client_secret = "본인의 api Client Secret";
    String _content_type = "application/x-www-form-urlencoded; charset=UTF-8";
    String _url = "https://openapi.naver.com/v1/papago/n2mt";
    await getLanguage_papago();

    http.Response trans = await http.post(
      Uri.parse(_url),
      headers: {
        'Content-Type': _content_type,
        'X-Naver-Client-Id': _client_id,
        'X-Naver-Client-Secret': _client_secret
      },
      body: {
        'source': language,//위에서 언어 판별 함수에서 사용한 language 변수
        'target': "ko",//원하는 언어를 선택할 수 있다. 
        'text': "번역할 내용",
      },
    );
    if (trans.statusCode == 200) {
      var dataJson = jsonDecode(trans.body);
      var result_papago = dataJson['message']['result']['translatedText'];
    } else {
      print(trans.statusCode);
    }
  }

위의 메소드를 사용하면 

변수 result_papago 에 번역된 텍스트를 저장할 수 있다. 

{
    "message": {
        "@type": "response",
        "@service": "naverservice.nmt.proxy",
        "@version": "1.0.0",
        "result": {
            "srcLangType":"ko",
            "tarLangType":"en",
            "translatedText": "tea"
        }
    }
}

http 통신으로 전송받은 데이터는 위와 같은 형식으로 리턴됩니다!

우리가 원하는 translatedText를 접근하기 위해선 

dataJson['message']['result']['translatedText'] 의 형태로 접근해야 합니다!

 

그 이후의 응용은 여러분께 맡깁니다.

아직 http에 대한 공부가 더 필요하다는 생각이

공부할 수록 드는 것 같습니다.


파파고 번역 api 무료 사용은

하루 10000 건으로 제한됩니다!

 

파파고 api 의 장점으로는 텍스트를

입력한 형식 그대로 리턴한다는 점입니다.

위의 텍스트를 번역했을 때

줄 바꿈이 모두 그대로 적용되어서 

번역 되어지는 것을 확인할 수 있습니다!

728x90
반응형

댓글