단어 세트를 입력할 때, 영어단어를 분리한 다음 오른쪽 빈칸에 한글 뜻을 자동으로 번역해서 넣어주기 위해, Google Translate API를 활용하기로 하였다. nodejs 패키지로는 @google-cloud/translate 를 제공하고 있다.
먼저 구글 cloud에 가입을 하여 다음과 같은 절차로 API서비스를 셋팅한다. 서비스 이용료는 사용량에 따라 정해지는데 매월 500,000자까지는 무료로 이용할 수 있다.
1. Google Cloud 프로젝트 설정
- Google Cloud Console에서 새 프로젝트를 생성하거나 기존 프로젝트를 사용합니다.
- Translation API를 활성화합니다.
- 서비스 계정 키를 생성하고 JSON 파일을 다운로드합니다.
자세한 내용은 아래 블러그 참조
2. JSON파일 환경설정
위에서 받은 JSON파일을 적당한 위치에 복사하고 아래와 같이 환경변수를 추가해 준다. 처음에 .bashrc파일에 추가를 해도 계속 오류가 발생해서, 당황을 했었는데, 재로긴하여 환경변수를 적용하거나 source .bashrc 명령실행을 통해 환경변수를 적용해줘야 한다.
그리고, pm2를 사용하고 있어서 해당 인스턴스만 내렸다 올렸는데, 적용이 안되었는데, 이것도 pm2서비스까지 재기동해줘야 적용이 된다는 것을 알게 되었다.
# .bashrc 파일에 추가
export GOOGLE_APPLICATION_CREDENTIALS=<인증파일 경로>.json
3. 코드 작성
먼저, 필요한 패키지를 설치합니다
npm install @google-cloud/translate
그리고, router를 코드를 작성한다. 세션을 먼저 체크한 뒤에, words변수에 번역이 필요한 영어 단어 리스트를 입력하면 한번에 번역이 가능하다.
const projectId = 'testTranslate';
const {Translate} = require('@google-cloud/translate').v2;
const translate = new Translate({projectId});
router.get('/trans', async(req, res) => {
console.log(req.session.username)
if(req.session.username == undefined|| req.session.username==""){
res.json({isLogin:false, state:'success', message:''})
}else{
if(req.query.words==''){
res.json({isLogin: false, state: 'error', message:'word is null'})
}else{
const [text] = await translate.translate(req.query.words, 'ko');
console.log(text);
res.json({isLogin:true, state:'success', message:text})
}
}
})
(실행 예시) 로그인한 상태에서 study, milk, cloud, sky 단어목록을 words 변수에 담아서 요청을 하면, 아래와 같이 한글로 번역하여 회신하여 준다.
구글Cloud API 및 서비스 화면에서 사용량을 확인 할수 있다.
현재는 무료사용기간이어서 과금이 되지 않는 상태이고, 월별로 한도를 설정하는 환경설정도 되지 않는 상태이다. 무료 사용기간이 끝나면 월 사용 한도를 셋팅해서 과금이 되지 않도록 해야 겠다.
다음에는 단어입력하는 화면에서 자동으로 한글뜻이 입력 되도록 작업할 예정이다.
'Programming > 온라인 영어암기 단어장 개발' 카테고리의 다른 글
온라인 영어 암기 단어장 만들기(8) - 학습화면 만들기 (0) | 2025.01.16 |
---|---|
온라인 영어 암기 단어장 만들기(7) - 단어장 저장하기 (0) | 2025.01.13 |
온라인 영어 암기 단어장 만들기(5) - 단어입력화면 만들기 (1) | 2025.01.04 |
온라인 영어 암기 단어장 만들기(4) - 데이터베이스 설계하기 (0) | 2024.12.03 |
온라인 영어 암기 단어장 만들기(3) - 로그인, 회원가입 로직추가 (2) | 2024.11.22 |