2015년 6월 27일 토요일

많은 소프트웨어에서 단수/복수 번역이 엉터리인 이유 (17)

앞으로 번역에 대해서 다룰 여러 주제 중에서 오늘은 단수/복수에 대해서 알아보자. 

국제화/지역화가 잘 된 소프트웨어라고 하더라도 단수/복수를 제대로 처리하고 있는 소프트웨어는 찾아보기 쉽지 않다. 우리는 단수/복수에 대한 구분을 하지 않는 언어를 사용하고 있다. 그래서 단수/복수 처리에 대해서 민감하지 않다. 하지만 단수/복수를 구분하는 언어권에서는 이를 제대로 처리하지 않으면 어색한 표현이 된다. 물론 의미는 알아보겠지만 그만큼 소프트웨어의 품질은 떨어지게 된다.




많은 소프트웨어에서 단수/복수 처리가 어렵기 때문에 꼼수를 부리곤 한다. 예를 들어 “%d file has been deleted”라는 문장을 사용해서 %d는 파일의 개수, 즉 숫자로 교체가 가능하다고 보자. 파일이 한 개라면 “1 file has been deleted”이 되지만 파일이 5개라면 “5 file has been deleted”가 되어서 어색한 문장이 된다.

그래서 “5 file(s) has been deleted”라고 하곤 하는데 has도 어색하다. 결국 “%d file(s) has(have) been deleted”라는 포맷을 이용하여 “5 file(s) has(have) been deleted”라고 할 수는 있지만 몹시 보기 지저분한 문장이 아닐 수 없다. 그래서 처음부터 “The number of deleted files: 5” 이와 같이 단수/복수와 무관한 문장들을 만들어 내지만 부자연스러운 것은 여전하다.

그리고 file(s)와 같은 꼼수를 쓰는 것은 영어나 몇몇 언어에서만 통한다. 우리나라 대부분의 개발자들은 한국어와 영어에 익숙하기 때문에 전세계 대부분의 언어가 그 틀에 크게 벗어나지 않으려니 추측하지만 우리가 상상할 수 없는 언어는 매우 많다.




예를 들어 폴란드어를 보자. 폴란드어에서 file은 plik이다. 이것은 단수 표현이다. 즉 file이 하나면 plik다. 그리고 2개면 pliki다. 3,4개도 pliki다. 하지만 5개가 되면 pliko’w로 바뀐다. 게다가 21개까지만 pliko’w다. 말로 설명하면 복잡하니 아래를 보라.

1 plik
2,3,4 pliki
5-21 pliko'w
22-24 pliki
25-31 pliko'w
32-34 pliki
35-41 pliko'w

복수의 형태가 두 가지인데 애매한 구간에서 바뀌며 끝에 ‘s’를 붙이는 형태도 아니다. 그래서 영어에서나 사용하던 끝에 (s)를 붙이는 형태로는 번역이 안된다. 

우리와 같이 단수/복수 구분을 하지 않는 언어는 일본어, 베트남어가 있다. 그리고 영어처럼 2개부터 복수로 처리를 하는 언어는 독일어, 스페인어, 이탈리아어, 그리스어, 터키어 등 가장 많은 언어가 여기에 속한다. 하지만 라트비아, 루마니아, 리투아니아, 러시아, 우크라이나, 크로아티아, 체코, 슬로베니아 등은 제각각 다른 단수/복수 체계를 가지고 있다. 

이런 상황에서 file(s)와 같이 쓰던가 단수/복수 처리를 별 것 아니라고 모두 단수로 처리해서 소프트웨어를 사용하라고 하는 것은 소프트웨어의 품질을 떨어뜨리는 결과가 된다. 현재도 여전히 많은 소프트웨어가 단수/복수 처리를 제대로 하고 있지는 않다.

그럼 소프트웨어에서 단수/복수 처리를 어떻게 할 수 있을까? 구체적인 방법은 추후 소개를 하도록 하겠다.



(을를이가 문제를 피해간 사례)

이와 유사한 문제로는 “을를이가은는” 문제가 있다. 한국어에만 있는 이슈인데 소프트웨어에서 “%s을 삭제했습니다.”라는 형식을 이용해서 %s를 “파일” 또는 “이미지”로 교체를 해서 출력한다고 보자. 이때 “이미지”로 교체를 하면 “이미지을”이라는 어색하는 문장이 된다. 그래서 “%s을(를) 삭제했습니다.”이라고 꼼수를 쓰던가 “파일을 삭제했습니다.”와 “이미지를 삭제했습니다.” 두 문장을 각각 번역하기도 한다. 하지만 %s에 들어가야 할 단어의 개수가 많고 문장이 조금만 더 복잡하면 번역해야 할 문장이 기하급수로 늘어서 좋은 방법은 아니다. 

단수/복수 문제는 전세계적인 문제라서 이를 연구하는 사람이 많지만 “을를이가은는”문제는 우리가 스스로 해결해야 한다. 

단수/복수 문제는 사소해 보이지만 무시할 수 없는 이슈이고 이러한 수준의 이슈들은 소프트웨어 번역에서 수 많이 존재한다. 급한 개발자나 경영자들은 언제 이런 이슈까지 신경을 쓰면서 소프트웨어를 개발하고 국제화를 하겠냐고 하소연을 하거나 스스로 해결을 해보고자 연구하고 라이브러리를 만들고 있을 수도 있다. 



하지만 소프트웨어 국제화는 이미 이전의 개발자들이 많이 연구를 해놓았고 해결책을 제시해 놓았기 때문에 대부분의 문제는 이미 제시된 해결책을 잘 찾아서 사용하기만 하면 된다. 스스로 해결해야 하는 문제도 있지만 이미 나와 있는 솔루션을 모르고 또 만드는 경우도 많다.물론 그렇게 재탄생한 자체 솔루션의 99%는 함정에 빠져서 문제를 완벽하게 해결하지 못한다. 이런 현상은 집을 만들기 위해서 망치가 없다고 망치를 직접 만드는 것과 비견된다. 

그래서 소프트웨어 국제화에는 방대한 지식이 필요한 것이다. 무엇이 필요하고 누가 이미 만들어 놓은 것들에는 어떤 것들이 있는지 알려면단편적인 지식보다는 소프트웨어 국제화 전반에 걸쳐 광범위한 지식이 필요하다. 

본 시리즈의 포스트를 통해서 조금씩 알아나가도록 하자.

댓글 없음:

댓글 쓰기