사실 할 게 없다ㅎㅎ
우선 어떤 api를 이용할 것인가부터 고민이였다.
이거 정하느라 1시간 지나감..
처음엔 Python으로 사용한 기억이 있던 카카오 번역 api를 이용하는 게 좋을 것 같다는 생각을 했다.
그래서 카카오개발자에 들어가서 찾아보았는 데 찾을 수 없었다.. 그래서 없는게 없는 구글링을 하였다.
이제 무료 api는 중단된 듯 보였다.. 돈도 많이벌면서 ㅠ
그래서 구글로 눈이 갔다. ㅎㅎ 하지만 몇 달 전쯤 구글 번역 api를 사용하기 위해 체험판 한달을 시작했던 기억이 났다.. 하지만 지금 한달이 훌쩍 지나갔다.. 그럼 구글도 유로로 사용할 수 밖에 없었다..
그래서 마지막 남은 우리의 친구 네이버를 찾아보았다. 다행하게도
친근하게도 우리의 영어실력을 포장해주던 파파고란 녀석이 보였다. 파파고짱
그래서 언능 내 어플리케이션을 등록하였다.
등록을 다하면 시크릿번호와 ID번호를 준다. 이것을 어디에 잘 모셔두면 된다.
api키는 발급 받았으니 이제 시작해보자!!!
여기까지 진짜 한시간 걸렸다
우선 응답데이터 타입을 보았다
{
"message": {
"@type": "response",
"@service": "naverservice.nmt.proxy",
"@version": "1.0.0",
"result": {
"srcLangType":"ko",
"tarLangType":"en",
"translatedText": "tea"
}
}
}
그래서 문서를 뒤적뒤적 하니깐 저렇게 생겼다는 걸 금방 알 수 있었다.
data class ReturnData(
var message : Result
)
data class Result(
var result : TranText
)
data class TranText(
var translatedText : String
)
그래서 이것을 참고하여 ReturnData타입을 정해봤다.
그 다음 인터페이스를 구성해봤다.
인터페이스를 구현하기 위한 정보
- 파라미터
- 호출 방법
- 헤더에 필요한 정보
이걸 참고해서 인터페이스를 구성하기를 바란다.
아니 제발 그렇게해라 나처럼 되기 싫으면
예시를 보는게 가장 빠르다고 생각해서 보았다.
흠 대충 보니 헤더에는 아까 발급받은 id와 secret번호가 필요한 것 같다.
그리고 파라미터는
이렇게 착하게 나와있다.. ㅎㅎ
원본 언어와 목적 언어(번역할 언어)와 번역할 문장
이 3가지만 넣으면 됐다..
이걸 참고하여 인터페이스를 구성해 보았다.
interface IRetrofit {
@GET("/v1/papago/n2mt")
fun getTranslate(
@Header("X-Naver-Client-Id") clientId : String,
@Header("X-Naver-Client-Secret") clientSecret : String,
@Query("source") source : String,
@Query("target") target : String,
@Query("text") text : String
) : Call<ReturnData>
}
처음에는 이렇게 구성했는데 나중에 호출해보니 자꾸 405 에러가 떴다. 405에러가 뭔지몰라서 다시 네이버를 뒤적뒤적 거리니
내가 2번(호출방법)을 간과했던 것이다..
ㅎㅎ;;;;;
그래서 다시 인터페이스를 구성해보았다.
interface IRetrofit {
@POST("/v1/papago/n2mt")
@FormUrlEncoded
fun getTranslate(
@Header("X-Naver-Client-Id") clientId : String,
@Header("X-Naver-Client-Secret") clientSecret : String,
@Field("source") source : String,
@Field("target") target : String,
@Field("text") text : String
) : Call<ReturnData>
}
그 다음엔 내가 전에 썼던 포스팅을 참고하기를 바란다.ㅎㅎ
절대 귀찮아서가 아니다.
그다음 MainActivity에서 파라미터를 넣고 호출 해주면 된다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
var TAG = "Main"
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn.setOnClickListener {
var text = transText.text.toString()
var source = "ko"
var target = "en"
Log.d(TAG, "onCreate: $text")
var data = RetrofitManage.instance.getTrans(source,target, text)
resultText.text = data
}
}
}
일단 호출이 잘되는지 안되는지만 확인하기 위해 로그로 확인 해보았다.
잘된 것 같다? 그래서 급하게 레이아웃을 구성해서 앱느낌을 내보았다.
호출은 일단 잘된 것 같다?.. 오늘 1일차 끝..
- 레이아웃 멋드러지게 꾸미기(진짜)
- Courtine을 이용하여 EditText가 변할때마다 호출하기
- 내가 쓴 언어와 번역 할 언어를 선택 할 수 있는 버튼 추가
- 번역된 언어 음성으로 출력해주는 기능 추가
일단 이렇게 추가할 사항들을 정해보았다. 틈틈히 시간이 생기는 대로 이 기능들을 하나씩 추가할 예정이다.