정보
-
업무명 : 구글 번역 API와 R 프로그램을 이용하여 마인크래프트 1.12.1 모드 파일 자동으로 번역 하기
-
작성자 : 해솔
-
작성일 : 2020-12-27
-
설 명 :
-
수정이력 :
내용
[특징]
-
마인크래프트 게임은 매우 유명한 게임이며 지금까지 약 3억명 이상의 사람들이 다운로드 하였다.
-
특히 이 게임은 모드 개발이 매우 쉽고 용이하며 이로 인하여 매우 많은 컨텐츠들이 모드로 만들어졌다.
-
이 게임은 기본적으로 한글 지원이 아주 잘 되어 있지만, 상기한 모드의 경우 한글이 아닌 영어로만 쓰여진 경우가 있어, 영어에 익숙하지 않은 플레이어들의 경우 게임 이용에 불편함이 있을 수 있다.
-
따라서 본 글에서는 구글번역 API와 R 프로그램을 이용하여 마인크래프트의 모드 파일을 한글로 번역하는 방법을 알아보고자 한다.
[기능]
-
마인크래프트의 모드(jar) 파일을 한글로 변환하는 기능
[활용 자료]
-
구글 번역 API
-
R 및 RStudio
-
마인크래프트 런처 및 모드 파일
[자료 처리 방안 및 활용 분석 기법]
-
없음
[사용법]
-
본문의 설명 참조
[사용 OS]
-
Windows10
[사용 언어]
-
R v4.0.3
-
R Studio v1.2.5033
사전 준비 작업 (구글 번역 API키 등록)
주의 : 구글 번역 API 는 최초 등록 후 90일 동안 무료로 사용할 수 있고, 무료 채험 기간이 끝났다고 해도 과금이 되는 일은 없지만, 요금 정산을 위해 등록해야 할 신용카드가 필요하다.
[구글 번역 API 키 등록]
-
1. 구글 계정을 생성 후 로그인을 한다. (이미 계정이 있는 경우 생략)
-
2. 아래의 페이지에 접속 한다.
-
3. 아래와 같이 동의 후 확인 버튼을 클릭한다.
-
4. 브라우저 상단의 활성화 버튼을 클릭한다.
-
5. 아래와 같은 화면이 나오면 계속 버튼을 클릭한다.
-
6. 개인정보를 입력 후 계속 버튼을 클릭한다.
-
7. 휴대폰 인증을 수행한다. (스크린샷 생략)
-
8. 결재수단으로 사용할 카드를 등록한다.
-
9. 아래와 같은 화면이 뜬다면 결재 등록에 성공한 것이다. (실제로 과금이 되진 않음)
-
10. 화면 좌측 상단의 my first project 버튼 클릭
-
11. 새 프로젝트 클릭
-
12. 적절한 이름을 입력 후 만들기 버튼을 클릭 (한글 입력 불가)
-
13. 화면 우측 상단에 아래와 같은 메세지가 뜨는 경우 프로젝트 만들기에 성공한 것이다.
-
14. 프로젝트 선택 클릭
-
15, 스크롤을 아래로 내린 후 API 탐색 및 사용설정 클릭
-
16. 스크롤을 아래로 내린 후 Cloud Translation API 클릭
-
16-1. 만약 16에 해당하는 버튼이 보이지 않는다면 좌측의 스크롤을 내린 후 번역 이라는 글자를 찾은 후 대시보드 클릭
-
이후 아래의 화면에서 API 사용 설정을 클릭하면 위의 16번에 해당하는 매뉴가 보이게 된다.
-
17. 화면 좌측 매뉴로부터 사용자 인증정보 클릭
-
18. 화면 위에 위치한 사용자인증정보만들기 -> api키 클릭
-
19. 아래와 같이 API가 활성화 되면 최종적으로 키가 만들어진 것이다.
-
20. 키를 복사한 후 메모장에 붙여넣기 하자. (타인에게 보여주면 안됨)
프로그램 다운로드 및 구동 준비
-
1. 아래의 링크에서 첨부 파일을 다운로드 한다.
-
2. 압축을 헤제한 후 설치파일 안에 있는 모든 프로그램을 설치한다 (next 계속 클릭)
-
3. 번역 API.Rproj 파일을 더블 클릭해서 연 후 R 확장자 프로그램 두개를 모두 연다.
-
4. 여기서 install.R 은 프로그램 구동에 필요한 라이브러리가 들어있는 코드인데, 해당 파일의 코드를 ctrl+a 로 선택 후 Run 버튼을 클릭하면 된다. (간혹 콘솔창에 번호를 입력하라고 나오는데 이 때는 All 에 해당하는 번호를 선택 후 엔터를 쳐 주면 된다.) [이 과정은 처음 한번만 실행해주면 됨]
프로그램 구동
[마인크래프트 모드 번역 방법 설명]
-
해당 프로그램은 영어로 된 스크립트를 한글로 자동으로 바꾸는 방법에 대해 설명하고 있으므로, 기존에 jar 파일 압축 헤제 및 영문 스크립트 파일의 위치를 모르는 경우 (즉 모드 번역의 개요를 모르는 경우) 아래의 유튜브 자료를 참조하길 바람.
[구글 번역 API 키 입력 자료에 저장]
-
다운로드 받은 자료 내에서 key 폴더로 들어간 후 key.txt 파일을 연후 "여기에 키를 입력하세요" 대신 처음에 발급받은 API 키를 입력 후 저장
[모드파일 가져오기]
-
내가 번역하고자 하는 마인크래프트의 jar 모드파일을 준비한 후 자료 내의 jar 폴더에 위치시킨 후 압축을 헤제
-
모드 파일 안에 위치한 스크립트 파일 중 영어 스크립트 파일을 찾는다. 일반적으로 "\assets\모드이름\lang" 디렉토리 내에 존재하며, 영어 스크립트 파일의 이름은 en_US.lang 이다.
-
해당 파일을 복사한 후 다운받은 파일 안의 INPUT 폴더 안에 복사 후 붙여넣는다.
[프로그램 구동하기]
-
처음의 Rstudio 편집기로 돌아간 후 alphaver.R 프로그램이 선택된 탭을 클릭한다.
-
모든 코드를 드래그 하거나 ctrl+a 를 눌러 모두 선택 후 Run 버튼을 클릭하거나, ctrl+enter 단축키를 통해 코드를 실행한다.
-
번역이 끝나면 현재 디렉토리 내에 ko_KR.lang 파일이 생성된다. 이것이 번역 결과물이다.
-
번역 결과물 파일을 notepad++ 로 열어준다. (파일 우클릭 -> 연결 프로그램 -> 연결 프로그램에 notepad++ 선택)
-
그리고 내용을 모두 선택 후 인코딩 매뉴에서 UTF-8 (BOM 없음) 으로 변경한 후 저장한다.
-
저장된 파일을 기존 영문 스크립트가 들어있는 디렉토리에 붙여넣기 한 후 다시 jar 파일로 압축한다. (알집을 사용하는 것이 가장 간단함)
-
게임을 실행 후 모드가 적용 되었는지 확인 한다.
소스 코드
[라이브러리 로드]
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")
[결과 파일 확인 - 예시 파일 포함]
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'프로그래밍 언어 > R' 카테고리의 다른 글
[R] 시정거리 자료를 이용한 한반도 지역 등고선 (Contour) 시각화 및 해양 마스킹 (2) | 2021.01.17 |
---|---|
[R] 베이지안 선형회귀 모델을 통한 ASOS 종관 기상 관측지점 자료를 이용하여 AWS 관측 지점의 기온 추정 (0) | 2021.01.17 |
[R] '끄투코리아' 사이트를 매개체로 한 강화학습을 통한 끝말잇기 봇 프로그램의 학습 알고리즘 구현 및 테스트 (0) | 2020.11.28 |
[R] 특정 날짜의 네이버 뉴스 제목 크롤링 (0) | 2020.11.26 |
[R] 한국 주요 좌표계에 대한 proj4 인자 및 지도 예시 (0) | 2020.10.25 |
최근댓글