-
[구글 번역 API] Google Cloud Translation API 사용하기개발기록 2023. 4. 13. 21:35반응형728x90
개요
Google Cloud Translation API를 사용해서 번역 API를 개발했다.
우선 API key를 발급 받았는데 해당 키를 이용해서 쓰는 방식의 레퍼런스나 ChatGPT가 알려준 코드는 deprecated가 되어 현재는 사용 못하는 방식이었다.
찾아보니 현재는 JSON 형태의 비공개 키를 발급 받는 방식으로 진행해야 되는 것 같았다.
아래는 잘 정리되어있는 블로그 주소다.
[오픈소스 리뷰기] 번역 API 이용하기(1) - Google 번역
오프소스 리뷰 : 슬기로운 오픈소스 사용법 리뷰해드립니다! #5 번역 API 이용하기(1) - Google 번역 안녕하세요. 디노랩스입니다! 최근 딥러닝 기술의 발달로 구글, 파파고 등 다양한 번역 서비스의
www.dinolabs.ai
블로그 내용을 따라 서비스 계정 생성 후 'translation'용 비공개 키를 만들었다.
API를 사용하기 위해 필요한 인증키(JSON)를 발급 받아 CDN에 올려두었다.
CDN 주소는 Spring Boot 해당 모듈의 application.properties에 변수로 선언해두고 사용했다.
(cf. 프로퍼티에서 변수로 선언해서 사용하는 것보다 okd ConfigMap이나 Secrets에 선언해서 가져다 써야 더 좋을 것 같은데 이 부분은 적용해서 차후에 작성할 수 있으면 하겠다.)
※ cf에 해당하는 부분은 여기에 정리해두었다.
소스코드
아래는 개발한 소스코드 예시이다.
package com.??.auth.api.application; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.HashMap; import com.google.auth.oauth2.GoogleCredentials; import com.google.auth.oauth2.ServiceAccountCredentials; import com.google.cloud.translate.Translate; import com.google.cloud.translate.TranslateOptions; import com.google.cloud.translate.Translation; import com.??.auth.api.dto.translation.TranslationRequestDto; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Slf4j @Service public class TranslationService { @Value("${google.credentials.path}") private String credentialsPath; public HashMap<String, Object> getTranslatedText(TranslateRequestDto translateRequestDto) { // .... // json 파일 경로 String jsonPath = credentialsPath; // json 파일에서 GoogleCredentials 객체 생성 try (InputStream serviceAccountStream = new URL(jsonPath).openStream()) { GoogleCredentials credentials = ServiceAccountCredentials.fromStream(serviceAccountStream); // Translate 서비스 생성 Translate translate = TranslateOptions.newBuilder().setCredentials(credentials).build().getService(); // 번역 api 코드 추가 Translation translation = translate.translate(text, Translate.TranslateOption.sourceLanguage(sourceLanguage), Translate.TranslateOption.targetLanguage(targetLanguage)); String translatedText = translation.getTranslatedText(); translatedText = translatedText.replaceAll("'", "\'"); } catch (IOException e) { // ... } // ... } }
코드 중 sourceLanguae는 텍스트의 언어, targetLanguage는 번역 될 언어다.
ex. 영어 → 한국어로 번역 요청할 경우, 각각 "en"과 "ko"가 된다.
테스트 해보니 '가 '로 출력되는 것을 보고 아래 코드를 추가해줬다.
translatedText = translatedText.replaceAll("'", "\'");
728x90'개발기록' 카테고리의 다른 글
[OKD + SpringBoot gradle 프로젝트] value.yaml에 ConfigMaps와 Secrets 선언 후 사용하기 (0) 2023.08.08 [OKD + SpringBoot gradle 프로젝트] ConfigMaps와 Secrets에 환경변수 선언 후 사용하기 (0) 2023.06.05 [멀티모듈] Spring Boot gradle프로젝트 멀티모듈구조에서 모듈추가하기 (0) 2023.04.06 [에러] gradle 프로젝트에서 모듈 추가 후 삭제 시 마주친 에러 (0) 2023.04.06 [RSA] Java와 C# 간 RSA 공개키 호환 코드 (0) 2023.03.07