번역자분들께 “번역하면서 뭐가 제일 어려워요?”라고 질문하면 첫째로 거론하는 게 아마 전문용어의 번역 문제일 겁니다.

예를 들어 ‘evaluate’는 뭐라 번역하면 좋을까요? 보통은 ‘평가하다’라는 단어를 떠올리겠죠?
그러나 ‘얼랭(Erlang)’에선 ‘어떤 것의 값 또는 가치를 구하다’라는 의미를 갖는데, 이런 의미를 가장 잘 설명하는 단어는 뭘까요?

계산? 수행?

그런데 그리 번역하는 데는 또 다른 문제가 있습니다. 아래 글을 보시죠.

이 책(『프로그래밍 얼랭(Programming Erlang)』)에서는 원서의 ‘evaluate’를 일관되게 ‘평가’로 번역하였다. 이 책의 번역 초고를 리뷰하는 과정에서 몇몇 리뷰어들이 평가라는 단어가 잘 맞지 않는다고 지적해 주시면서 어느 분은 ‘계산’이라는 용어를, 또 어떤 분은 ‘수행’이라는 용어를, 또 다른 어떤 분은 일률적으로 사용하기보다는 문맥에 따라 다르게 사용하는 게 어떠냐는 지적도 해주셨다. 사실 이 책을 번역하면서 단어를 선정하는 데 있어 가장 많은 고민을 한 단어도 바로 이 evaluate였다. 분명 뜻은 ‘어떤 것의 값 또는 가치를 구하다’라는 의미지만, ‘계산’이라고 하자니 이 책의 여러 곳에서 사용되고 있는 calculate라는 단어와 중복되고, ‘연산’은 operate와, 그리고 ‘수행’은 또 perform이라는 단어가 각각 제자리를 차지하고 있어 도무지 evaluate가 끼어들 틈이 없었다. 그렇다고 문맥에 따라 다른 용어를 쓰자니 오히려 독자 여러분께 혼란을 줄 수도 있을 거란 생각이 들어, 앞서 번역된 전산학 관련 서적들을 여러 권 참고한 끝에 결국 ‘평가’라고 하였다. 그러니 이 책에서 ‘평가’라는 단어가 나올 때마다 지금까지 설명한 내용으로서 평가, 즉 evaluate라는 점을 기억하면서 읽어주시길 부탁드린다.

-『프로그래밍 얼랭(Programming Erlang)』 16쪽 옮긴이 주석에서

사용자 삽입 이미지

인사이트에서 최근 자바스크립트(JavaScript) 책을 몇 권 발간했고(1, 2), 준비하고 있습니다.(3, 4)

완성된 번역문을 들여다보는데 Unobtrusive라는 단어가 자꾸 눈에 띄더군요. 웹에서 ‘겸손한’으로 번역된 경우를 많이 보아 왔기에(1, 2, 3, 4 등등…) 그러려니 하고 있었는데, 박영록 님은 『프로토타입과 스크립타큘러스』를 번역하시면서 ‘나대지 않는/주제넘지 않는’이라는 용어를 사용하셨기에 질문을 했더니 아래와 같은 취지의 답을 보내 오셨습니다.

현재 공식적으로 정착된 번역어가 없고, 겸손한 자바스크립트라는 표현이 좀 쓰이며, 나대지 않는 자바스크립트라고 하는 사람도 있다. 하지만 겸손하다는 말이 unobtrusive를 적절하게 반영하지는 못하고, 나대지 않는다는 표현이 오히려 더 와 닿지만 출판용(?)으로 조금 부적절한 감이 있다. 그래서 역자는 주제넘지 않는 자바스크립트라는 표현을 선택했다. 좀 장황한 감이 있어서 약간 아쉬움이 남는다.

– 『프로토타입과 스크립타큘러스』 옮긴이 글에서

그런데 『자바스크립트 완벽 가이드』를 번역하셨고, 『프로 자바스크립트 테크닉(Pro JavaScript Techniques)』를 번역하고 계신 송인철 님은 또 다른 의견을 내셨습니다.

제 개인적인 의견은, 누군가에게 unobtrusive javascript가 무엇인지 설명을 한 다음에 이런 javascript를 ‘겸손하다’고 한다면, 그 사람에게 잘 와 닿지 않겠다는 겁니다. unobtrusive javascript라는 개념은 자바스크립트와 HTML이 완전히 분리되어서 서로 간섭하거나 영향을 주지 않는다는 개념이고 여기서 당신은 이런 상황을 보면 자바스크립트가 겸손하다는 생각이 들지 않냐고 말하는 격인데 적절하지 않다고 봅니다.

라고 하시면서 ‘무간섭’라는 번역어를 제시하셨습니다.

이에 대해 박영록 님은 다시 아래와 같은 답을 해오셨고,

‘무간섭’이라는 말을 쓴 의도는 알겠으나 자바스크립트는 HTML을 조작하기 위해서 존재하는 것인데 간섭하지 않는다고 하면 오해를 살 여지가 큰 것 같습니다. 그냥 둘이 한 장소에 섞이지 않는다는 것이지 자바스크립트가 HTML에 간섭하지 않을 수는 없습니다. 독립형 자바스크립트, 분리형 자바스크립트 같은 말이 오히려 더 적합할 수도 있는 듯. 하지만, 이 말만 가지고는 unobtrusive의 뉘앙스는 온전히 전달이 안 되는 것 같습니다.

이에 대해 송인철, 이동기, 이유원, 황인석 님께선 다시

저희들도 박영록님 의견에 어느 정도 공감합니다. 사실 저희 내부적으로 ‘무간섭’이란 용어가 나오기 전에 ‘참견하지 않는 자바스크립트’라는 용어를 사용하기로 결정한 적도 있습니다. 참견하지 않는다는 말이나 주제넘지 않는다는 말이나 비슷하다고 생각합니다. 그러나 박영록 님께서도 지적하신 대로 용어로서는 적절하지 않는 것 같아서 결국 ‘무간섭’이라는 용어를 쓰기로 결정했던 것입니다.

이라고 의견을 다시 정리하셨습니다.

그래서 이번에는 ‘겸손한’이라는 용어를 사용하셨던 김석준 님께 의견을 요청해 봤습니다.

흔히 Unobtrusive JavaScript라고 부를 때의 ‘Unobtrusive’는 Progressive Enhancement(점진적 개선)라고 하는 웹 개발 방법론과 함께 이야기되는 것입니다. 즉, 자바스크립트가, 자바스크립트가 들어가서는 안 될 곳까지 침범하여 ‘무례하게’ HTML 코드의 아무 곳에나 막 들어가던 방식에 대응하여, 자바스크립트가 원래의 기능인, 웹페이지에서 동작(behavior)을 담당하는 부분에만, 그것도 기존의 웹 페이지의 기능을 개선(enhance)하는 방향으로만 들어가도록 하자는 생각내지는 개발 방식입니다. 이렇게 의미를 이해하고 나서 Unobtrusive를 다시 생각해 보면, ‘주제넘지 않는’이란 표현은 아주 적절해 보입니다. 다만 영어의 한 단어를 우리말의 구로 표현하는 게 조금 걸린다면, ‘충실한 자바스크립트’ 나 ‘겸손한 자바스크립트’ 정도로 표현할 수도 있을 겁니다. 참, 그리고 많은 분들은 시쳇말로 ‘나대지 않는 자바스크립트’라고 부르기도 한답니다.^^

여러분의 의견은 어떠세요?

이런 고민과 논의 과정을 통해 제대로 의미를 전달하는 우리말을 찾을 수 있다면 저희로선 큰 보람을 느낄 수 있을 거 같은데….


참고로
프로토타입과 스크립타큘러스』를 번역하시면서 박영록 님께서 번역어를 고민하셨던 용어들을 옮긴이의 글에서 정리하셨기에, 여기 올립니다.

* argument, parameter: 비슷한 의미를 지니며 이 책에서도 일부 혼용해서 쓰고 있는데 함수의 경우에는 인자로, URL의 parameter는 파라미터로 번역했다.
* array : 배열로 번역했는데 자바스크립트 Array의 인스턴스라는 걸 강조해야 하는 경우에는 Array 객체로 번역했다.

* bind, binding : 연결로 번역했다가 method chaining과 혼동의 소지가 있어서 발음 그대로 바인딩으로 표기했다.
* default : 기본값, 혹은 기본 설정으로 번역했다.
* document : 문 서라는 번역어가 정착이 되어 있지만 자바스크립트에서는 내장 객체 document가 또 다른 의미를 지닌다. 그래서 내장 객체를 지칭할 때는 document로, 그 외에는 문서로 번역했다. HTML document와 같은 경우는 HTML 문서로 번역했다.
* drag and drop : 끌어다 놓기로 번역했다가 drag, drop이 명사형으로 사용되는 경우도 많고 개발자들이 드래그 앤 드롭으로 쓰는 경우가 많아서 드래그 앤 드롭으로 번역했다.
* effect : 역 시 효과라는 번역어가 정착되어 있지만 이 책에서는 스크립타큘러스의 effect 기능을 지칭하는 것이라 좀 더 고민했다. 포토샵이나 프리미어 책 등에서는 effect를 발음 그대로 이펙트라고 표기하기도 하는데 이것도 대안 중 하나였다. 하지만 효과라고 해도 이해하는 데 별 어려움이 있는 것은 아니었기 때문에 그냥 정착된 용어를 그대로 사용했다. 비슷한 맥락으로 visual effect도 비주얼 효과, 비주얼 이펙트 등을 고려했지만 결국 시각 효과로 번역했다.
* element : 경 우에 따라 두 가지로 나눠서 번역했다. DOM의 element는 발음 그대로 엘리먼트라고 번역했다. XML 관련 책에서는 요소라고 번역하기도 하는데 의미가 통하지 않고 실제 개발자들은 엘리먼트라는 표현을 많이 쓰기 때문에 발음을 그대로 썼다. 배열의 element는 꽤 오래 전부터 원소라고 번역해서 쓰고 있었기 때문에 원소라고 번역했다.
* event : 다른 GUI 프로그래밍 관련 서적에서도 이벤트라고 그대로 쓰는 경우가 많고 마땅한 번역어가 없어서 이벤트로 번역했다.
* extend, extended : 확장이라고 번역했다.
* form : 양식이라는 번역어가 있지만 HTML 문서에서는 단순히 양식이라고 번역하면 의미가 와 닿지 않고 개발자들은 대부분 폼이라고 부르기 때문에 폼이라고 번역했다.
* helper : 도우미와 헬퍼를 놓고 고민하다가 도우미를 선택했다. 적절한 표현인지 아닌지 아직 확신이 있는 것은 아니나, 이해하는 데는 무리가 없을 것 같다.
* iterate, iterator : 반 복, 반복자라고 번역한 책이 많다. 하지만 프로토타입에서 iterator는 배열 뿐 아니라 다양한 컬렉션에서 쓰기 때문에 반복이라고 하면 의미가 잘 통하지 않는 것 같아서 순회, 순회자라는 표현을 사용했다. 순회라는 단어가 traverse의 번역어로 많이 쓰이는데 iterate의 느낌을 담기에도 부족하지 않다고 판단했다.
* method chaining : 메서드 연쇄
* namespace : 이름 공간과 네임스페이스를 놓고 고민하다가 네임스페이스를 선택했다.
* observer : 관찰자라고 번역했다가 다시 옵저버로 고쳤다. 코드에 observe, observer가 들어가는 경우가 많아 개발자들이 기억하기에 더 좋을 것이다.
* prototype : 가 장 어려웠던 번역이다. 이 책의 주제인 프로토타입과 같은 단어로 자바스크립트의 예약어이면서 자바스크립트 언어의 특성을 나타낸다. 고민 끝에 프로토타입 라이브러리는 프로토타입(Prototype)으로 표기하고 이건 프로토타입(prototype)으로 표기하거나, 경우에 따라 영어만 써서 prototype으로 표기했다.
* request, response : 이건 PHP나 JSP 관련 서적에서 이미 요청, 응답으로 번역하고 있는 경우가 많아서 그대로 요청, 응답으로 번역했다.
* return : 경우에 따라 리턴으로 쓰기도 하고 반환, 돌려주다 등으로 섞어서 번역했다. 이해하는데 별 어려움은 없으리라 생각한다.
* selector : CSS 의 selector를 가리키는 말인데 선택자라고 할 것인가 셀렉터라고 할 것인가를 고민했다. 실제 개발자들은 셀렉터라고 부르는 경우가 많지만 간혹 선택자라고 부르기도 하며 CSS 공식 문서의 한글 번역본에는 선택자라고 되어 있다. 그래서 결국 선택자로 번역했다.
* string : 문자열로 번역하되 자바스크립트 String 클래스의 인스턴스라는 점이 중요할 때는 String 객체로 번역했다.
* wrapping, wrapper : 래핑, 래퍼라고 번역했다. 아쉬운 부분이지만 마음에 드는 번역어를 찾지 못했다.
* unobtrusive javascript : 현 재 공식적으로 정착된 번역어가 없고 겸손한 자바스크립트라는 표현이 좀 쓰이며, 나대지 않는 자바스크립트라고 하는 사람도 있다. 하지만 겸손하다는 말이 unobtrusive를 적절하게 반영하지는 못하고 나대지 않는다는 표현이 오히려 더 와 닿지만 출판용(?)으로 조금 부적절한 감이 있다. 그래서 역자는 주제넘지 않는 자바스크립트라는 표현을 선택했다. 좀 장황한 감이 있어서 약간 아쉬움이 남는다.
* update : 갱신이라는 용어가 있지만 실제 개발자들이 거의 쓰지 않는 표현이다. 그래서 그냥 업데이트로 표기했다.

ps. 행복한 고니 님은 비(非)남용, 비간섭, 비돌출 이라는 표현을 놓고 고민하고 계시네요.