웹 미니게임을 다국어로 만들 때 생기는 의외의 어려움
이 사이트의 모든 게임은 처음 만들어지는 순간부터 한국어와 영어를 함께 지원하도록 설계되어 있습니다. 언뜻 보면 당연한 선택 같지만, 이 사이트의 모든 게임이 외부 라이브러리 하나 없이 순수한 HTML·CSS·자바스크립트 한 파일로 만들어진다는 원칙과 부딪히면서 생각보다 까다로운 문제가 됐습니다.
번역 프레임워크를 쓰지 않기로 한 이유
보통 다국어 웹사이트는 i18n 라이브러리나 별도의 언어 파일을 불러오는 구조를 씁니다. 하지만 이 사이트는 각 게임을 의존성 제로 원칙으로 만들고 있어서, 이런 라이브러리를 쓰면 로딩 속도가 느려지고 유지보수 지점도 늘어납니다. 대신 선택한 방식은 단순한 치환 사전 패턴입니다. 브라우저의 localStorage에 저장된 언어 설정을 읽어서, 영어 모드일 때 화면의 각 요소를 셀렉터로 찾아 텍스트를 통째로 바꿔 끼우는 방식입니다.
같은 뜻, 다른 길이
실제로 부딪힌 문제 중 하나는 언어별 텍스트 길이 차이였습니다. 한국어로 "다시 도전"이라는 네 글자가 영어로는 "Try again"이 되면서 버튼 폭이 달라지고, 판정 이름 같은 경우 한국어로는 "특수부대급" 다섯 글자가 영어로는 "Special Forces"처럼 훨씬 길어지는 경우가 많았습니다. 버튼이나 카드 크기를 고정값으로 만들면 한쪽 언어에서는 딱 맞아도 다른 쪽에서는 줄바꿈이 깨지거나 넘치는 문제가 생겨서, 결국 대부분의 텍스트 영역은 고정폭 대신 내용에 맞춰 늘어나는 유동적인 레이아웃으로 다시 설계해야 했습니다.
번역이 아니라 이식이 필요할 때
또 하나 흥미로운 지점은, 판정 문구처럼 유머와 뉘앙스가 중요한 텍스트는 직역이 거의 항상 어색하다는 것이었습니다. "손이 떨려서 커피를 쏟았어요" 같은 한국어 특유의 표현은 영어로 그대로 옮기면 맥락이 살지 않아서, 같은 재미를 주는 완전히 다른 영어 표현을 새로 쓰는 경우가 더 많았습니다. 다국어 지원은 결국 번역의 문제가 아니라, 같은 농담을 다른 언어로 다시 만드는 문제에 더 가까웠습니다.