지원 엔진 · Gettext (.po / .mo)
gettext는 일본산이 아닌 인디 게임 대부분이 현지화에 쓰는 방식입니다. Python과 pygame 게임, Solarus, SDL과 GTK 게임, 그리고 Poedit·Weblate·Crowdin을 거친 모든 것이 여기 해당합니다. 문자열은 locale 폴더에 .po 원본과 컴파일된 .mo 카탈로그로 들어 있습니다. RuneTranslate는 프로젝트를 만들 때 이를 감지하고, 모든 문자열을 번역한 뒤 동작하는 .mo를 다시 씁니다. 실행 중인 게임이 읽는 파일이 바로 그것입니다.
gettext 카탈로그는 대부분 UI입니다. 메뉴 항목, 버튼 레이블, 툴팁, 여러 화면에서 반복되는 상태 표시 같은 것들이죠. 명사와 아이템 이름, 핵심 동사를 용어집에 한 번만 넣어두면 어디에 나오든 동일하게 번역됩니다. 대사보다 오히려 더 중요합니다. 한 곳에서는 “저장”, 다른 곳에서는 “보관”이라고 쓰는 메뉴는 버그처럼 보이니까요. 용어집 기초 →
locale/, lang/ 또는 i18n/ 폴더가 들어 있는 게임 디렉터리를 RuneTranslate로 지정하세요. 감지는 확장자가 아니라 실제 바이트를 보기 때문에, 사실은 3D 장면인 .mo는 무시됩니다. 낱개의 .po 파일이 모인 폴더도 됩니다.
새 프로젝트 창이 프로젝트를 만들기 전에 읽어낸 카탈로그 수, 컴파일된 .mo와 원본 .po의 비율, 게임이 이미 포함한 언어, 전체 문자열 수를 알려줍니다.
대상 언어와 서비스를 고르세요. 무료 Google이나 DeepL, 또는 본인의 DeepL·OpenAI·Claude·DeepSeek 키를 쓸 수 있습니다. 서식 자리표시자(%s, %d, %(player)s, {count})는 번역 전에 가려지고 번역 후 복원되므로, 어떤 서비스도 이를 지우거나 바꿔 쓸 수 없습니다.
문자열은 카탈로그 파일별로 묶입니다. 각 항목은 gettext 컨텍스트(msgctxt)를 그대로 유지합니다. 개발자가 바로 그 문자열을 위해 적어둔 구분 정보이므로, 같은 단어가 왜 두 번 나오는지 알 수 있고 각각 알맞게 번역할 수 있습니다.
내보내기는 올바른 locale/<선택 언어>/LC_MESSAGES/ 카탈로그와, 게임이 원래 불러오던 카탈로그의 갱신본을 함께 담은 게임 전체 사본을 만듭니다. 게임이 언어를 어떤 방식으로 고르든 번역이 나타납니다. .po와 컴파일된 .mo가 모두 기록됩니다.