kone
소미소프트
소미소프트

번역연습하다 알게된 Iavra_MZ_Localization_byNeomaStudio 플러그인으로된 게임 번역법(.jsono)

06/04/2026, 00:32:08
정보
32855 views · 10 likes

여기저기 뒤져봐도 번역방법이 안나와있는거 같아서 대략적으로 나마 가이드 라인 비슷한걸 써보려고 합니다 . (아마도 앵간한 대사들은 다 번역이 될것으로 사료됩니다. )

……………… 이미 있는 내용이라믄 내 3시간 돌려줘요…

대략적인 흐름은 …

1.번역할 파일들을 언패킹 해서 (node.js 와 단순한 코드를 활용해서)

2.파일들을 json으로 변환시키고 번역.

3.다시 언패킹해서 집어넣기

준비물 — node.js ,밑에 적어넣은 소스코드 ,저장시엔 utf-8로 저장



MV나 MZ 중 다국어 지원 게임들은 외부 플러그인으로 언어 파일들을 압축해놓은게 있었습니다. (.jsono)

1

마마노 오쿠니 토도쿠라는 게임인데, 요거를 예시로 설명해드리겠습니다. 요 게임같은경우 스타트를 누르면 일본어, 영어 , 중국어 3개를 지원하는데,

1

Iavra_MZ_Localization_byNeomaStudio 이 플러그인으로 로컬라이징을 했다는걸 알았습니다.

이 경우 mz 추출툴같은거로 대사 파일이 추출이 안돼더라구요. data의 파일들이 .jsono 로 되어있고 내부는 무려 base64 를 베이스로 한 암호화가 되어있습니다.

다른 데이터들은 일단 차차 생각하기로 하고…. 단순하게 로컬라이징 해서 패키징 되어있다 생각되는 애들이 있습니다.

1

1.lang - 랭귀지일테고 , 뒤에 en 까지 붙어있는것으로 보아 영어번역이 되어있는녀석들이고 이녀석들을 번역하면 될거같습니다. 일단 전부 복사해서 한 폴더에 집어넣어줍니다.

2.node.js를 다운로드 해서 설치해주세요. (LTS붙은거로 하면될겁니다.)
https://nodejs.org/ko/download

1

1

3.번역할 파일들을 복사한 폴더에서 우클릭 터미널을 열어줍니다.

1
  1. 터미널에 npm install lz-string 입력후 엔터.
    - 이 시스템에서 스크립트…. 어쩌구 하는 오류가 뜬다면 , Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    입력후 엔터 그후 다시 위에 npm 어쩌구 입력.

  2. 폴더 내에 메모장같은거 만들어서 converter.js 로 이름 및 확장자를 바꿔주고 메모장이나 노트패드++ 같은거로 열어서 아래 코드를 입력.

    소스코드

    const fs = require('fs');

    const path = require('path');

    const LZString = require('lz-string');

    const currentDir = process.cwd();

    console.log("==================================================");

    console.log(" [Iavra 번역 파이프라인] 언팩/리팩 통합 모듈");

    console.log("==================================================");

    console.log(" [1] 언팩 (.jsono -> .json)");

    console.log(" [2] 리팩 (.json -> .jsono)");

    console.log("==================================================");

    const readline = require('readline').createInterface({

    input: process.stdin,

    output: process.stdout

    });

    readline.question('선택: ', (choice) => {

    if (choice === '1') runUnpack();

    else if (choice === '2') runRepack();

    else { console.log("종료"); process.exit(); }

    });

    // 1. 언팩 프로세스

    function runUnpack() {

    const files = fs.readdirSync(currentDir).filter(f => f.endsWith('.jsono'));

    files.forEach(file => {

    const raw = fs.readFileSync(path.join(currentDir, file), 'utf-8');

    // N4WAU Base64 전용 필터링: 유효 문자 외 전부 제거

    const clean = raw.replace(/[^A-Za-z0-9+/=]/g, '');

    const decrypted = LZString.decompressFromBase64(clean);

    if (decrypted) {

    const outPath = path.join(currentDir, file.replace('.jsono', '.json'));

    fs.writeFileSync(outPath, JSON.stringify(JSON.parse(decrypted), null, 4), 'utf-8');

    console.log[성공] 추출: ${file});

    } else {

    console.log[실패] 해독 불가: ${file});

    }

    });

    process.exit();

    }

    // 2. 리팩 프로세스

    function runRepack() {

    const targetDir = path.join(currentDir, 'repacking');

    if (!fs.existsSync(targetDir)) fs.mkdirSync(targetDir);

    const files = fs.readdirSync(currentDir).filter(f => f.endsWith('.json'));

    files.forEach(file => {

    const raw = fs.readFileSync(path.join(currentDir, file), 'utf-8');

    // Base64 압축 봉인

    const encrypted = LZString.compressToBase64(JSON.stringify(JSON.parse(raw)));

    fs.writeFileSync(path.join(targetDir, file.replace('.json', '.jsono')), encrypted, 'utf-8');

    console.log[성공] 봉인: ${file});

    });

    process.exit();

    }

1

소스코드가 작동하지않을경우 이렇게 수정해주시면 됩니다. gorgon 님 감사합니다.

  1. 터미널에서 node converter.js 입력후 엔터 누르면 이렇게 나올겁니다. 1번 입력후 엔터를 누르면 폴더내의 파일들을 알아서 척척해줄겁니다.

1

그러면 이제 아래 사진같이 나올겁니다 . 하나를 열어보면 ….

1
1

h는 엣찌 대사였나 보군요. 이렇게 쭉 나옵니다. 확인하기 쉬운 파일을 찾아서( g 로 된게 글로벌이라 생각되니이걸로) 대충 번역해서 …

1

※utf-8로 저장해야합니다. 꼭!

그 후 다시 터미널에서 node converter.js 입력후 이번에는 2번을 선택하면, 자동으로 리패킹이라고 폴더를 만들고 거기에 저장됩니다.

안타깝게도 그냥 통째로 하는걸로만 만들어놔서 (자바는 잘 몰라서 제미나이를 이용했습니다. ㅎㅎ;) 전부 리패킹되서 폴더에 들어가 있을겁니다.

1
1

여기서 아까 번역한 lang_g 요것만 data로 옮겨서 게임을 실행해보믄…

1

명칭이랑 타이틀이 바뀐것을 확인할수 있습니다.

대략 번역할 파일들을 훑어본 결과는 저기있는 내용만 번역해도 이미지빼곤 전부 번역할수 있을거 같더라구요….

여담

번역 연습해보겠다고 게임하나 잡고 하다가 나중에는 오기가 생겨서 c++로 소스 열심히 짜다가 파싱부분에서 1차 멘붕 base64 만이 아니라는것에

2차 멘붕와서 제미나이랑 열심히 상담하다 js로 변환해달라고 해서 해봤는데 작동을 안해서 3차 멘붕 그후 내부파일 보여주니 그제서야 토해내더라구요.

저는 여기까지인것 같습니다.

긴글 읽어주셔서 감사하고 행복한 하루 되세요.

대략 ai 번역은 번역탭에 올려놨습니다 . 일단은 …. 나머지는 …. 글쎄요….

10
6 comments
06/04 Edited 06/04
좀 복잡해보이긴 한데 좋은 예시일듯 정규식으로 짜서 추출 후 통으로 돌리면 번역은 금새 할 수 있을 것 같습니다. 영문 쪽 스크립트 번역보단 일본어 스크립트 번역으로 진행하시는 게 번역 진행은 수월하실 것 같네요.
약간 프로그래머로써 틀딱 이라고 할까요. 유니코드임에도 복호화시 혹시모를 데이터 변질이 있을까 겁이나서 영어로 먼저 해봤습니다. ㅎㅎ
06/04
소스코드 그대로 넣어도 안되서 확인해 보니까, console.log[성공] 추출: ${file}); console.log[실패] 해독 불가: ${file}); console.log[성공] 봉인: ${file}); 이 부분들을 인식을 못하고 있었습니다. console.log('[성공] 추출: ${file}'); 이런 식으로 고쳐주면 잘 작동하니 따라하시는 분들은 참고 바랍니다.
수정 감사합니다. ㅠㅜ 제미나이 이놈은 나중에 혼내도록 하겠습니다...
06/25
역시 비전공자에게는 어렵네요
로리 거유 소녀에게 최면을 걸어 섹스하는 애니메이션 영상 게임
영상
ロリ巨乳
08/30 7061 16
(직번)[몬무스]당신을 집착하는 니쿠사씨
동인
멕무
08/30 14213 17
[AI 번역][Kairaku Amnesia (Kinuo)] 가난한 아내가 집세를 보지로 갚을 때까지 ~28세 I컵 청초 아내, 악취나는 털복숭이 추남 집주인에게 NTR~
동인
crazyerdog
08/30 19705 29
[요청복구] RJ01295900 교배도시에 어서오세요 v1.03
복구
agnis
08/30 14076 21
펌,인도커리) 약혼자의 자매는 외모SSR, 성격은 최악지옥인 에로댄스여자2
동인
kjalar
08/30 23888 39
(청아) 꾸준 연필 37주차
창작
지나가던사람
08/30 6143 17
[기계번역] 마조 자위 입문 ~자, 딸딸이를 시작해보죠!~
영상
ejjsbs
08/30 22796 26
[구매보급,자체번역,료나] RJ01168443 버려진 아이
번역
쁠뿡
08/30 32108 38
[청아] アブジャン 신작 RJ01678278
영상
교미의요정
08/30 21502 20
제작 일기 ①「마차 안에서는」전투 시스템과 캐릭터 소개
정보
라임
08/30 7920 15
machi꺼 몇개
영상
Denia
08/30 27461 32
[구매보급]사랑받는 달콤한 LOVE✨ 키스✨ 처음으로 H의 리얼함✨ 작은 소꿉친구의 '좋아... ♡'×100... 벨로키스✦페로페로✦연속 질내 사정♡【처녀막 관통 SE】
소리
이름뭐하지
08/30 10995 26
(요청복구) 한글자막 아저씨 노치원 외 3개
영상
꽃사슴
08/30 30278 34
[구매보급][완전 신작! 호화 3편으로 구성♡]전편 귀 핥기 & 질내사정 아마아마 플레이♡ kakao 걸즈 컬렉션♡ 【스트로베리 피버♡】
소리
이름뭐하지
08/30 14334 30
[구매보급]다우너쿨계 성녀의 도스케베 참회
소리
이름뭐하지
08/30 14594 27
쌍둥이 JK 보지 메이드
소리
dasdaa
08/30 15104 36
[구매보급][자체번역]AI) 고고한 성녀 리제트, 패배하다 ~몸을 바치는 로그라이크 RPG~
번역
마카라이트
08/30 54338 49
【순애/노모】독신 헌터의 만남은 엘프의 숲에서♡
동인
HoneyWorks
08/30 47850 79
『마음과 몸~15일 만에 완전히 변한 용사의 아내~』NTR 게임 소개
정보
라임
08/30 9842 15
[요청복구] Treasure 내가 찾은 대체 할 수 없는 것
복구
뺏기는게좋은걸
08/30 31040 26
[직번] 강제 미소녀 검사 - 스파이로 의심받은 여자
동인
sgdvl
08/30 54456 71
[요청복구] 다우너 학생회 임원과 방과 후 남겨진 정액 수확 성지도~ "빨리 끝내고 싶은데…" 라고 말하면서 정액이 비어버릴 때까지 안 보내주는 개변태 농후 봉사~
소리
ilyug2
08/30 18151 32
[구매보급][번역요청] AI,TS 변전의 마녀 -나락 도시 그린자
미번
마카라이트
08/30 18503 27
요청복구 3종 (14일)
복구
쌀쌀쌀쌀
08/30 37354 34
[구매보급] ai) chui 작가 No.1 ~ No.30 모음
영상
푸니푸니
08/30 38910 34
후타, 후여, NT?R) [momomo] 꼬추가 크다고 이지메하는 건 좋지 않아요 엣... 크다아~
동인
라비쉬
08/30 52004 60
[직번/Dekosuke 18gou/팬스가] 네 남자 내가 좀 가져갈게
동인
BroadRight
08/30 61839 111
AI)블아)아비도스 전원임신 보테배sex
야짤
koreno1
08/30 14315 15
【순애】어른 놀이
동인
HoneyWorks
08/30 62143 96
호감도 짤 몇개
야짤
Denia
08/30 16847 29