Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

모바일 앱(안드로이드)

안드로이드 다국적(?) 앱 만들어 보기 (feat 카카오 번역 API, python 활용)

Billcorea 2021. 7. 6. 23:21
반응형

앱을 만들어 등록하는 동안 하고 싶은 것 중에서 한가지는 여러나라의 언어로 배포를 해 보는 것이였다. 예전에는 그걸 하나 하나 번역을 해 가면서 등록을 했던 것을 카카오 번역 API 호출하여 사용하는 방법으로 해소해 보자.

일단, 목적으로 하는 앱을 만드는 과정을 했다고 치고. 기본 언어를 영어(아니면 한국어도 상관 없이)로 하고 앱을 만든다음 android studio 에서 번역을 하기 위한 준비를 해 보자.

언어 번역을 위해서 Translations Editor 을 열어 아이콘 중에서 지구모양 아이콘을 클릭 하면 어떤 언어를 선택할 것이지 정할 수 있다.  그것중에서 일단, 영어, 한국어, 일본어, 베트남어 (2022년 월드컵 예선 진출을 응원하며 ...) 선택해서 만들어 보기로 했다.

영어 버전을 예시로 하기 위해서 샘플은 영어 버전 string.xml 을 표시해 본다.

 

 

 

 

이제 번역은 어떻게 할 것인가 ?

카카오 개발자 페이지 (https://developers.kakao.com/console/app) 에서 새 어플리케이션을 등록하고

 

팝업창에서 앱이름, 사업자명 (없으면 우리집 이렇게라도)

입력하고 저장하기를 하면 되고

 

 

 

 

앱키를 취득하면 준비는 일단 완료된 것이다

이중에서 우리는 REST API 을 이용할 것이기 떄문에

REST API 키를 기억하고 있으면 된다.

 

 

 

다음은 python 을 이용할 것인데, python 의 설치 등등에 관한 것은 구글링을 통해서 많이 볼 수 있으므로 여기서는 생략해 본다.

참고로 python 을 작업하는 것도 pycham 이라는 툴을 사용하고 있는데, 이것에 대한 설명도 생략하므로 참고하시길

import requests

# 카카오 API 번역 호출
def translate(StringValue):
    url = "https://dapi.kakao.com//v2/translation/translate"
    headers={ "Authorization" : "KakaoAK f57a4f***********5006481"}
    data = {"query" : StringValue, "src_lang" : "en", "target_lang" : "jp"}

    response = requests.get(url, headers=headers, params=data)

    if response.status_code == 200:
        return response.json()["translated_text"]

# android string.xml 을 이용한 번역하기
def getString(lines):
    line = lines.split(">")
    try:
        s1 = translate(line[1].split("<")[0])
        s = str(line[0]) + ">" + str(s1[0][0]) + "<" + str(line[1].split("<")[1]) + ">"
        return s
    except:
        return lines

# 내앱의 영문 기준 스트링 파일
f = open("C:/workspaces/Bo****26/app/src/main/res/values/strings.xml", 'r')
while True:
    line = f.readline()
    if not line: break
    if 'translatable' in line:
        pass
    else:
        print(getString(line))

f.close()

먼저 python 에서 기동할 소스인데,  주의할 것은 headers 에 있는 API KEY 

headers={ "Authorization" : "KakaoAK f57a4f***********5006481"} 에서 f57a... 부분은 여러분이 받은 키값으로 변경해야 하며 

아래 부분에 open 에서 사용하는 파일도 여러분이 작성한 strings.xml 파일의 경로를 지정해 주어야 한다. 이 예시는 영문을 기준으로 변환을 하는 것이라서 저 소스상에 있는 src_lang 가 en 으로 되어 있으니 한국어를 기준으로 하려면 kr 로 변경해야 한다. 

카카오에서 지원해주는 번역에서 언어표기는 아래 표시된 정도이니 참고해서 사용하면 된다. src_lang 에는 원본 target_lang 에는 번역하고 싶은 언어 표기로 설정해 주면 된다. (https://developers.kakao.com/docs/latest/ko/translate/common)

한국어 kr
영어 en
일본어 jp
중국어 cn
베트남어 vi
인도네시아어 id
아랍어 ar
뱅갈어 bn
독일어 de
스페인어 es
프랑스어 fr
힌디어 hi
이탈리아어 it
말레이시아어 ms
네덜란드어 nl
포르투갈어 pt
러시아어 ru
태국어 th
터키어 tr

 

이제 실행을 해보면 아래 예시 그림과 같이 번역이 되어 나오는 것을 볼 수 있다.

이 내용을 그대로 android studio 에서 생성된 일본어 strings.xml 에 붙여 넣으면 번역 끝.

다만, 직역을 하기 때문에 그 나라에 사시는 분들이 이해를 하는 데, 도움이 될까는 조금 고민해 볼 필요가 있을 것 같기는 하다.

이것으로 다국적(?)앱 만들어 끝!!!

반응형