package common.util.api;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Locale;

import org.apache.taglibs.standard.tag.common.fmt.LocaleUtil;
import org.json.simple.JSONObject;

import common.util.StringUtil;
import common.util.stream.StreamUtil;
import common.util.stream.StreamUtil.MethodType;
import mvc.Config;
import mvc.model.DataMap;

public class NaverPapago {
	
	private static String API_URL;
	private static String KEY;
	private static String SECRET;

	public static void setting() {
		if(API_URL==null) {
			API_URL = "https://openapi.naver.com/v1/papago/n2mt";
		}
		
		if(KEY==null) {
			KEY = Config.get("keys.naver-papago.key");
		}
		
		if(SECRET==null) {
			SECRET = Config.get("keys.naver-papago.secret");
		}
	}
	
	public static String translate(Locale srcLang, Locale trgLang, String text) throws UnsupportedEncodingException {
		setting();
		
		String message = URLEncoder.encode(text, "utf-8");
		DataMap param = new DataMap();
		param.put("text", message);
		param.put("source", srcLang.getLanguage());
		
		if(StringUtil.isEmpty(trgLang.getLanguage())) {
			return text;
		}
		
		param.put("target", trgLang.getLanguage());
		
		DataMap header = new DataMap();
		header.put("X-Naver-Client-Id", KEY);
		header.put("X-Naver-Client-Secret", SECRET);
		
		JSONObject result = StreamUtil.getWebJson(API_URL, param, MethodType.POST, header);
		DataMap resultMessage = new DataMap(result.get("message"));
		DataMap data = new DataMap((Object)resultMessage.get("result"));
		
		if(data.isEmptyData("translatedText")) {
			trgLang = LocaleUtil.parseLocale("en_US");
			return translate(srcLang, trgLang, text);
		}
		
		return data.s("translatedText");
	}
	
	public static void main(String[] args) {
		try {
			String transText = translate(Locale.KOREA, Locale.ENGLISH, "안녕하세요");
			System.out.println(transText);
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

파파고 번역 로직.

하루에 1만 단어 번역이 가능하니 일정한 포맷을 만들어 놓고,

DB나 파일에 저장해서 사용할 수 있다.

'개발이야기 > java' 카테고리의 다른 글

개인정보 (이름) 마스킹 로직  (0) 2022.01.18
Instagram4j 구현  (0) 2022.01.17
Instagram4j - Maven Dependency  (0) 2022.01.14
x진법 (최대 62진수) 까지 표현해주는 함수  (0) 2022.01.14
정렬 - Selection Sort  (0) 2022.01.13

+ Recent posts