프로그램을 지역화하는 방법이 궁금합니다.

HDNua의 이미지

안녕하세요. 군인이 되어 한동안 KLDP에 드나들지 않았던 대학생입니다.
(뭐 입대 전에도 다른 분들이 기억하실만큼 활동했던 것 같진 않지만)
저를 소개하자면, 저는 게임 프로그래머를 목표로 하는 사람이고,
iOS App, 게임, 일반 프로그램 등 다양한 프로그램을 만들어보며 공부하고 있습니다.
군인의 신분으로 공부하기가 쉽지 않긴 하지만 나름 틈날 때마다 몰래 책 들여다보면서
배웠던 내용을 잊지 않게끔 노력하고 있습니다. ㅎㅎ (물론 일도 열심히 합니당)

아무튼 제가 입대 직전 가장 관심있게 바라보던 부분이 게임의 한글화 부분이었습니다.
(중학교 때부터 게임 제작과 함께 달성하고 싶었던 인생 목표 중의 하나였기도 했습니다)
입대 전에 다른 포털사이트에서 게임 한글화와 관련해 여러 정보를 뒤져봤지만
제대로 이를 설명해주는 블로그나 사이트를 찾는 게 쉽지 않더군요.
나름 공부해보려고 'Reverse Engineering Vible'과 같은 리버싱 관련 책을 사서
맨 땅에 헤딩하듯 공부해보려고도 했습니다만 이렇다 할 성과는 없는 상황입니다.

제목에 프로그램을 지역화하는 방법이라고 적었는데, 일반 응용 프로그램을 한글화하는 방법도 궁금하여 그렇게 적었습니다.
콘솔 에뮬레이터를 이용한 게임의 한글화보다, PC에서 플레이 가능한 게임의 한글화를 공부하고 싶습니다.
이와 관련해 좋은 문서나 자료가 있을지 KLDP 분들께 도움을 청합니다. 읽어주셔서 감사합니다.

익명 사용자의 이미지

취미로 한글화를 하던 사람입니다.(주로 말씀하신 콘솔 게임이지만)

PC 나 콘솔 게임이나 기본적인 방식은 전혀 다르지 않습니다. 게임 대사의 유니코드 지원 여부, 폰트 출력 방식 등을 보고
필요에 따라서 바꿔줘야 할 부분은 바꿔주어야 하고 다음으로 대사 코드를 한글 코드로 된 대사로 바꾸는 작업(노가다) 입니다.

다만 디버깅이 가능은 하지만 조금 어려운 콘솔 게임에 비하여 PC 의 경우에는
좀 더 쉬운 디버깅(물론 제 개인적인 생각입니다. z80/arm 등 보다는 x86 디버깅을 오래 해 와서 더 쉽습니다.)
이 가능하다는 점에서 수월하게 작업을 할 수 있다는 점에서 좋습니다.

그리고 리버스 엔지니어링 책을 보시는데, 사실 PC 한글화에 있어서 필수 요소라고
부를 수는 없습니다. 워낙 툴도 많고 방식도 다양하기 때문에 굳이 코드 참조 또는 패치를 하지 않아도
한글화는 가능합니다. 자세히 설명드리기는 어려울 거 같고 딱히 추천해 드릴 문서나 자료도 없네요.
그리고 이런 글은 kldp 보다는 네이버의 한식구 같은 카페에 가시는 것을 추천합니다.

HDNua의 이미지

한글화 관련해서 저도 다른 쪽을 찾아보긴 했는데,
예전에 있던 좋은 글들은 모두 문을 닫은 사이트였고
요즘 올라오는 글들은 어떻게 PC 게임을 한글화해야 하는가에 대해
구체적으로 설명해주고 있지 않습니다.
(한글화 사이트가 문을 닫은 이유와 같다는 소문을 들었습니다.)
모두 개론적인 내용에 대해서만 수박 겉핥기 식으로 다루고
그나마도 하다보면 된다는 식으로만 글을 마무리하더라구요.

게임보이 에뮬레이터로 실행하는 롬 파일 게임의 한글화는 문서가 있는데,
제가 궁금한 PC 게임 한글화에 대해서는 아무리 찾아도 정보가 없네요.
검색하니 The Game Localization Handbook이라는 외국 서적이 나오긴 하던데
가격이 지나치게 비싸고 도서관에도 없는 것 같아 보기는 힘들 것 같더군요.

개인적으로는 요즘같은 시대에 인터넷이라는 정보의 바다에서
한글화와 같이 재미있어보이는 주제를 검색으로 간단히 찾을 수 없다는 게
정말 안타까운 일이 아닐 수 없다는 생각도 듭니다.

한글화를 해보셨다시니 그 방법에 대해 자세히 여쭤보고 싶었지만
이미 어렵다고 하시니 아쉬운 마음만 크네요.
소중한 답변 정말 감사합니다.

저는 이렇게 생각했습니다.

mirheekl의 이미지

(일단 본 리플은 순수히 제 사견임을 미리 말씀드립니다.)

제가 느낀 바로는 국내 PC게임의 한글화는 철저히 비공개 방식으로 운영되는 것 같습니다. 특히 그 한글화 작업에 들어가는 노가다나 코드분석 등을 중요한 지적 자산으로 생각하고 있기 때문에, 한글화가 끝난 파일과 모듈은 공개를 할지언정 과정에 대해선 아주 기본적인 것도 좀처럼 외부로 공개를 하지 않더군요. (제 느낌입니다. 근거는 없습니다.)

또한 법적인 문제도 존재합니다. 저작권이 있는 프로그램을 리버스 엔지니어링으로 수정한다는 것 자체가 소위 핵 프로그램과 마찬가지의 취급을 받을 수 있습니다. 또한 게임 제작사들이 데이터 임의 수정을 방지하기 위해 보안기술을 사용하게 되는데 이를 뚫는 방법이 공개되면 이역시 문제가 되겠죠. 특성상 일반에의 공개가 어려운 정보들이기 때문에 찾기가 어려운 것입니다. 결국 찾는다 해도 혼자 맨땅에서 헤딩을 해야 하는 일반론적 기술이거나, 아니면 이미 한참 오래되어 도태된 기술만 나오게 되는 것이죠. 이게 바로 글쓰신 분의 현재 상황인듯 하고요.

물론 개중에는 모드 제작방법이 공개돼있어서 모드 형태로 한글화가 가능하다거나, 잘 알려진 파일 형식 또는 텍스트 형태로 관련 데이터가 저장되어 있는 게임들도 있지만, 이런 쪽을 만지는 것에는 전혀 흥미가 없으실 것으로 생각합니다. 제 생각에는 리버스 엔지니어링쪽을 실제 예와 함께 공부하고 싶으신 것 같거든요.. 맞나요?

그럼 남은 방법은 무엇이겠습니까? 바로 직접 그 팀에 들어가는 것입니다. 디버깅과 코딩에 자신이 있으시다면 큰 어려움은 없지 않을까 싶습니다. 많은 한글화팀중에 주류는 제가 보기엔 일본산 성인 게임의 한글화입니다. 카페나 인터넷 커뮤니티 등을 잘 찾아다니시면 참여방법이 나오지 않을까 싶네요. 다만 말씀드렸다시피 코드를 직접 수정하게 되면 불법의 소지가 있다는 점, 절대 잊지 마시기 바랍니다.

--

익명 사용자의 이미지

리버스 엔지니어링을 실제 예와 함께 공부하고 싶어보인다는 말씀은 정확하십니다.
(저같은 경우는 목표가 리버싱 공부보다 한글화 자체에 초점이 있긴 합니다만)

한글화가 검색만으로 답을 얻을 양지의 기술은 아니라는 생각은 하고 있었지만
어째선지 팀에 직접 들어가 정보를 얻는 건 일부러 거부하고 있었는데,
mirheekl님 댓글을 읽고 팀에 직접 들어가는 것이 더 낫다고 마음을 고쳤습니다.

다만 걱정은, 제가 지금 군대에 있어 컴퓨터로 직접 테스트해보기 애매한 상황이거니와
제 프로그래밍 실력이 팀에 들어갈 수 있을 정도가 되는지 기준도 모르기에
팀에 바로 들어갈 수가 없다는 점입니다.

게임 한글화 어떻게 하면 되는가 - 땅땅치킨(http://cafe.naver.com/hansicgu/2202)
한글화에 대한 정보를 찾다 그나마 얻은 개론적인 내용이 이것이어서
Reverse Engineering Vible로 어셈블리와 리버싱을 동시에 시작하려했지만 실패했었는데,
혹 한글화 팀에 들어가서 올바른 활동을 할 수 있기 위해 제가 배워놓아야 할 기술이 있다면
이에 대해 알려주시면 감사하겠습니다.

정말 좋은 답변 감사드립니다.

HDNua의 이미지

로그인한 줄 알고 글 썼다가 로그인 안 되어있으면 뭔가 찝찝합니다... 흑

저는 이렇게 생각했습니다.

Prentice의 이미지

다른 방법으로는 애초부터 현지화 가능한 프로그램을 만들어보시는 수가 있겠지요?

손쉬운 예로 WoW 애드온이 있습니다. 애드온을 만들어서 영어와 한국어 지원을 넣어보시는 수가 있겠습니다.

HDNua의 이미지

음... 그러니까 현지화 가능한 프로그램을 직접 개발한 다음
이 프로그램을 다시 리버싱해서 한글화하는 방법을 익히라고 하신 건지요?

저는 이렇게 생각했습니다.

Prentice의 이미지

현지화를 하는 방법이 궁금하신데 리버스 엔지니어링엔 큰 관심이 없으시다면 그냥 다짜고짜 현지화를 해보시는 게 나을 수도 있으리란 생각에서 드린 말씀이었습니다.

WoW 애드온의 경우는 보통 영문 버전으로 해외에서 개발이 되고, 사용자가 알아서 한국어 버전으로 현지화되는 것이 보통입니다.

보통 파일을 다운 받아서 열어보시면 어딘가에 koKR.lua 파일과 enUS.lua 파일이 있을 것입니다. enUS.lua 파일에는 영어 원문이 들어 있고 koKR.lua 파일은 UTF-8 형식으로 번역을 담고 있습니다.

두 파일의 형식이 비슷할 때도 있지만 미묘하게 다를 수도 있으므로, esES나 deDE등 다른 언어 번역 파일이 기존에 있으면 참고하시면 좋습니다.

현지화에 있어서 고려해야 할 것은:

  1. 프로그램에서 다국어 처리가 가능한가?
    • UTF-8 지원을 한다거나 하면 손쉽습니다.
  2. 번역을 손쉽게 넣을 수 있는가?
    • 그냥 텍스트면 정말 쉽겠죠. QT Linguist를 쓴다거나 gettext/libintl 등을 쓴다거나 하면 변환이 필요할 수 있습니다.
  3. 한글을 넣었을 때 안 깨지는가?
    • 폰트가 없으면 깨질 수도 있겠죠. 아니면 폰트가 밉게 나온다던가요.
  4. 어순의 문제는 없는가?
    • 안녕하신가, 힘세고 강한 아침. 만약 나에게 묻는다면 내 이름은 왈도.
    • Hello, mighty fine morning, if you ask me. My name's Waldo.
    • 단어의 조합으로 문장을 만든다거나 하면 결과물이 꼬이게 돼있습니다. 문장은 반드시 생(?)으로 출력되는 것이 좋습니다. (최종 문장의 문장형을 쉽게 짐작할 수 있어야.)
  5. 번역의 길이 관련 이슈는 없는지?
    • 영어에서는 짧게 적을 수 있는데 한국어에서는 길게 적을 수 밖에 없는 경우, 레이아웃 등이 깨질 수 있는 것을 고려해야 합니다.
  6. 조사 처리가 가능한지?
    • %s(은)는 이런 식으로 하는 거 말고, %s<은|는> 이런 식(?)으로 번역하면 결과물에서 조사가 자동으로 들어가는지?
    • 유의점: 리을 받침은 -으로와 붙지 않고 -로와 붙습니다. 예: 학교로/집으로/서울로 <- 서울은 받침으로 끝나지만 "집"과 다름
  7. 검색 기능이나 파일 기록 기능 등이 한글을 잘 처리하는지?

이런 걸 고려해서 번역을 넣습니다. 번역 결과가 잘 반영되면 이젠 번역이 잘 됐는지를 따져야겠죠.

Prentice의 이미지

Firefox / Chrome / Emacs / Vim 현지화는 어떻게 되고 있는지

Gnome/KDE에 딸려오는 게임들 현지화는 어떻게 되고 있는지

이런 쪽도 한번쯤은 생각해보시는 것도 나쁘지 않을 것 같습니다.

HDNua의 이미지

소중한 답변 감사합니다. 더 찾아보겠습니다. ㅎㅎ

저는 이렇게 생각했습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.