[R] 구글 번역 API 및 R 프로그램을 이용하여 마인크래프트 1.12.1 모드 파일 자동으로 번역 후 적용하기 (구글 API 신청 방법 포함)

 정보

  • 업무명     :  구글 번역 API와 R 프로그램을 이용하여 마인크래프트 1.12.1 모드 파일 자동으로 번역 하기

  • 작성자     : 해솔

  • 작성일     : 2020-12-27

  • 설   명      :

  • 수정이력 :

 

 내용

[특징]

  • 마인크래프트 게임은 매우 유명한 게임이며 지금까지 약 3억명 이상의 사람들이 다운로드 하였다.

  • 특히 이 게임은 모드 개발이 매우 쉽고 용이하며 이로 인하여 매우 많은 컨텐츠들이 모드로 만들어졌다.

  • 이 게임은 기본적으로 한글 지원이 아주 잘 되어 있지만, 상기한 모드의 경우 한글이 아닌 영어로만 쓰여진 경우가 있어, 영어에 익숙하지 않은 플레이어들의 경우 게임 이용에 불편함이 있을 수 있다.

  • 따라서 본 글에서는 구글번역 API와 R 프로그램을 이용하여 마인크래프트의 모드 파일을 한글로 번역하는 방법을 알아보고자 한다.

etc-image-0
MOJANG에서 최초 개발한 마인크래프트

 

 

[기능]

  • 마인크래프트의 모드(jar) 파일을 한글로 변환하는 기능

 

[활용 자료]

  • 구글 번역 API

  • R 및 RStudio

  • 마인크래프트 런처 및 모드 파일

 

 

[자료 처리 방안 및 활용 분석 기법]

  • 없음

 

[사용법]

  • 본문의 설명 참조

 

[사용 OS]

  • Windows10

 

[사용 언어]

  • R v4.0.3

  • R Studio v1.2.5033

 

 

 사전 준비 작업 (구글 번역 API키 등록)

주의 : 구글 번역 API 는 최초 등록 후 90일 동안 무료로 사용할 수 있고, 무료 채험 기간이 끝났다고 해도 과금이 되는 일은 없지만, 요금 정산을 위해 등록해야 할 신용카드가 필요하다. 

 

[구글 번역 API 키 등록]

  • 1. 구글 계정을 생성 후 로그인을 한다. (이미 계정이 있는 경우 생략)

  • 2. 아래의 페이지에 접속 한다.

 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com

 

  • 3. 아래와 같이 동의 후 확인 버튼을 클릭한다.

etc-image-1

 

  • 4. 브라우저 상단의 활성화 버튼을 클릭한다.

etc-image-2

 

 

 

  • 5. 아래와 같은 화면이 나오면 계속 버튼을 클릭한다.

etc-image-3

  • 6. 개인정보를 입력 후 계속 버튼을 클릭한다.

 

etc-image-4

 

 

  • 7. 휴대폰 인증을 수행한다. (스크린샷 생략)

 

  • 8. 결재수단으로 사용할 카드를 등록한다.

etc-image-5

 

  • 9. 아래와 같은 화면이 뜬다면 결재 등록에 성공한 것이다. (실제로 과금이 되진 않음)

etc-image-6

 

 

  • 10. 화면 좌측 상단의 my first project 버튼 클릭

etc-image-7

 

  • 11. 새 프로젝트 클릭

etc-image-8

 

 

  • 12. 적절한 이름을 입력 후 만들기 버튼을 클릭 (한글 입력 불가)

etc-image-9

 

  • 13. 화면 우측 상단에 아래와 같은 메세지가 뜨는 경우 프로젝트 만들기에 성공한 것이다.

etc-image-10

 

  • 14. 프로젝트 선택 클릭

etc-image-11

 

  • 15, 스크롤을 아래로 내린 후 API 탐색 및 사용설정 클릭

etc-image-12

 

 

  • 16. 스크롤을 아래로 내린 후 Cloud Translation API 클릭

etc-image-13

 

  • 16-1. 만약 16에 해당하는 버튼이 보이지 않는다면 좌측의 스크롤을 내린 후 번역 이라는 글자를 찾은 후 대시보드 클릭

etc-image-14

 

 

  • 이후 아래의 화면에서 API 사용 설정을 클릭하면 위의 16번에 해당하는 매뉴가 보이게 된다.

etc-image-15

 

  • 17. 화면 좌측 매뉴로부터 사용자 인증정보 클릭

etc-image-16

 

  • 18. 화면 위에 위치한 사용자인증정보만들기 -> api키 클릭

etc-image-17

 

  • 19. 아래와 같이 API가 활성화 되면 최종적으로 키가 만들어진 것이다.

etc-image-18

 

  • 20. 키를 복사한 후 메모장에 붙여넣기 하자. (타인에게 보여주면 안됨)

 

 프로그램 다운로드 및 구동 준비

  • 1. 아래의 링크에서 첨부 파일을 다운로드 한다.

 

마인크래프트 모드 번역 프로그램.zip

 

drive.google.com

 

  • 2. 압축을 헤제한 후 설치파일 안에 있는 모든 프로그램을 설치한다 (next 계속 클릭)

etc-image-19

 

  • 3. 번역 API.Rproj 파일을 더블 클릭해서 연 후 R 확장자 프로그램 두개를 모두 연다.

etc-image-20

 

 

  • 4. 여기서 install.R 은 프로그램 구동에 필요한 라이브러리가 들어있는 코드인데, 해당 파일의 코드를 ctrl+a 로 선택 후 Run 버튼을 클릭하면 된다. (간혹 콘솔창에 번호를 입력하라고 나오는데 이 때는 All 에 해당하는 번호를 선택 후 엔터를 쳐 주면 된다.)  [이 과정은 처음 한번만 실행해주면 됨]

etc-image-21

 

 

 

 프로그램 구동

[마인크래프트 모드 번역 방법 설명]

  • 해당 프로그램은 영어로 된 스크립트를 한글로 자동으로 바꾸는 방법에 대해 설명하고 있으므로, 기존에 jar 파일 압축 헤제 및 영문 스크립트 파일의 위치를 모르는 경우 (즉 모드 번역의 개요를 모르는 경우) 아래의 유튜브 자료를 참조하길 바람.

 

[구글 번역 API 키 입력 자료에 저장]

  • 다운로드 받은 자료 내에서 key 폴더로 들어간 후 key.txt 파일을 연후 "여기에 키를 입력하세요" 대신 처음에 발급받은 API 키를 입력 후 저장

etc-image-22

 

[모드파일 가져오기]

  • 내가 번역하고자 하는 마인크래프트의 jar 모드파일을 준비한 후 자료 내의 jar 폴더에 위치시킨 후 압축을 헤제

etc-image-23

 

  • 모드 파일 안에 위치한 스크립트 파일 중 영어 스크립트 파일을 찾는다. 일반적으로 "\assets\모드이름\lang" 디렉토리 내에 존재하며, 영어 스크립트 파일의 이름은 en_US.lang 이다.

 

etc-image-24

 

  • 해당 파일을 복사한 후 다운받은 파일 안의 INPUT 폴더 안에 복사 후 붙여넣는다.

etc-image-25

 

[프로그램 구동하기]

  • 처음의 Rstudio 편집기로 돌아간 후 alphaver.R 프로그램이 선택된 탭을 클릭한다.

etc-image-26

 

 

  • 모든 코드를 드래그 하거나 ctrl+a 를 눌러 모두 선택 후 Run 버튼을 클릭하거나, ctrl+enter 단축키를 통해 코드를 실행한다.

etc-image-27

 

  • 번역이 끝나면 현재 디렉토리 내에 ko_KR.lang 파일이 생성된다. 이것이 번역 결과물이다.

etc-image-28
etc-image-29
결과파일이 생성 되었다.
etc-image-30
번역이 완료된 모습

 

  • 번역 결과물 파일을 notepad++ 로 열어준다. (파일 우클릭 -> 연결 프로그램 -> 연결 프로그램에 notepad++ 선택)

 

  • 그리고 내용을 모두 선택 후 인코딩 매뉴에서 UTF-8 (BOM 없음) 으로 변경한 후 저장한다.

etc-image-31

 

  • 저장된 파일을 기존 영문 스크립트가 들어있는 디렉토리에 붙여넣기 한 후 다시 jar 파일로 압축한다. (알집을 사용하는 것이 가장 간단함)

etc-image-32
etc-image-33
다시 재압축

 

 

  • 게임을 실행 후 모드가 적용 되었는지 확인 한다.

etc-image-34

 

etc-image-35
etc-image-36

 

 

 소스 코드

[라이브러리 로드]

library(jsonlite)
library(stringr)
library(translateR)
library(data.table)

 

[구글 API 키 읽기 및 번역할 대상 파일 읽어주기]

mykey = fread("./key/key.txt",header = F)

inputData = readLines(file("./INPUT/en_US.lang", encoding = "UTF-8"),  skipNul = FALSE)

inputDataRes = inputData

 

 

[스크립트 파일의 라인 길이를 찾은 후 라인 수 만큼 번역 수행]

  • 이 때 특수문자가 스크립트 내에 존재하는 경우에 대해서는 번역을 수행하지 않음 (스크립트 내 동적 변수의 존재 때문 - 향후 수정 예정) 

# 길이 
lenis = length(inputData)

for (i in 1:lenis) {
  
  print(i)
  
  target_text = str_split(string = inputData[i],pattern = "=",simplify = T)

  if(length(target_text) == 1) {
    next
  } else if (length(target_text) == 2) {
    
    # 특문 들어가는 경우는 수정할 예정임
    if (grepl(target_text[2],pattern = "%") == TRUE) {
      next
    } else if (grepl(target_text[2],pattern = "\\[") == TRUE) {
      next
    } else if (grepl(target_text[2],pattern = "\\]") == TRUE) {
      next
    } else if (grepl(target_text[2],pattern = "<") == TRUE) {
      next
    } else if (grepl(target_text[2],pattern = ">") == TRUE) {
      next
    } else if (grepl(target_text[2],pattern = "\\{") == TRUE) {
      next
    } else if (grepl(target_text[2],pattern = "\\}") == TRUE) {
      next
    } else if (target_text[2] == "") {
      next
    } 
    
    
    dollar_check = str_split(string = target_text[2],pattern = "§",simplify = T)
    
    if(length(dollar_check) >= 2) {
      next
    }
    
    
    # 타겟 영어 지정 #
    imsi = data.frame(target = target_text[2])
    
    # 번역 #
    out <- translateR::translate(dataset = imsi,
                                         content.field = "target",
                                         google.api.key = mykey$V1,
                                         source.lang = 'en',
                                         target.lang = 'ko')
    
    # 다시 병합 #
    inputDataRes[i] = paste0(target_text[1],"=",out$translatedContent)
    
    
  } else {
    next
  }
  
}

 

[결과 파일 확인 및 출력]

head(inputDataRes)
writeLines(inputDataRes,"./ko_KR.lang")

 

[결과 파일 확인 - 예시 파일 포함]

 

ko_KR.lang
0.08MB

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com