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 |