NEW 기획 디자인 개발 프로덕트 아웃소싱 프리랜싱

프로덕트

알라미 팀이 앱 내 문구를 50여 개 언어로 현지화하는 방법

 

국내 유명 IT 기업은 한국을 넘어 세계를 무대로 할 정도로 뛰어난 기술과 아이디어를 자랑합니다. 이들은 기업 블로그를 통해 이러한 정보를 공개하고 있습니다. 요즘IT는 각 기업의 특색 있고 유익한 콘텐츠를 소개하는 시리즈를 준비했습니다. 이들은 어떻게 사고하고, 어떤 방식으로 일하는 걸까요?

 

이번 글은 전 세계 6,000만 명의 아침을 깨우는 앱 '알라미'를 서비스하는 딜라이트룸의 'User&Product Operation' 팀 이야기입니다. 서비스의 해외 진출에 앞서 어떤 방법으로 더 좋은 번역을 위해 고민하고, 실행하는지 소개하고 있습니다.

 

변화한 경보를 저축하지 않고 나가시겠습니까?

= Leave without saving changed alarm? … 음 네?

 

해외에서 유행하는 앱을 받고 보니 모두 외국어로 되어 있어서 당황한 적 있으신가요? 아니면, 어설프게 번역된 앱을 보고 웃은 적은 없으신가요?

 

김치 위시리스트
김치를 많이 원하셨나 봅니다… <출처: 트위터>

 

앱이 ‘어떤 언어로, 얼마나 잘 번역되어있는가?’는 상당히 중요합니다. 일단 알아들을 수 있어야 쓰든 말든 결정할 수 있기 때문입니다.

 

물론 앱의 기능이 가장 중요하지만, 이해할 수 없으면 그 좋은 기능을 쓸 수조차 없습니다. 이에 더해 ‘잘’ 설명하면 기능을 더 매력적으로 전달하고 더 나아가 서비스 자체의 매력도를 높일 수도 있습니다.

 

알라미는 전 세계 유저를 대상으로 서비스를 지원하고 있는데, 이 과정에서 품질을 높이기 위해 저희 User & Product Operation 그룹(UPO 그룹)에서 새로운 기능/문구가 들어갈 때마다 번역을 진행하고 있습니다.

 

이번 글에서는 이 번역 과정을 어떻게 진행하고 있는지 살짝 소개해보겠습니다.


스트링? 현지화? 무슨 뜻이냐면요

들어가기 전에, 글 내에서 자주 쓸 용어를 먼저 설명하겠습니다.

 

스트링 현지화 번역
String은 무엇이며, 현지화와 번역의 차이는 무엇일까요?

 

우선, 앱 내에 들어가는 단어, 문장, 문구는 ‘스트링(String)’이라고 지칭합니다. 스트링을 사전에서 찾아보면 ‘(컴퓨터의) 문자열’이라는 의미라는 데, 여기서 온 걸로 보입니다. 안드로이드와 iOS 양 플랫폼 모두, 앱 내에 담기는 거의 모든 문구/단어는 문자열로서 스트링 파일 안에 담깁니다. 해서 이 글에서 스트링이라는 단어는 ‘앱 내에 나타나는 단어/문구/문장’으로 이해하면 됩니다.

 

두 번째, ‘번역’과 ‘현지화’를 알라미 팀에서는 다른 의미로 쓰고 있습니다. 번역은 단순히 원문(영문/국문)을 다른 언어로 변환하는 의미로 사용하고, 현지화는 ‘해당 국가의 문화와 뉘앙스에 맞춘다’는 의미로 쓰고 있습니다. 즉, 현지화 과정에서 번역이 더 고도화될 수도 있고, 이미 영어 표현이 통용되고 있다면 번역하지 않고 영문 그대로 쓸 수도 있지요. 이 글에서는 이 두 단어를 적절히 구분해서 사용하고 있습니다.

 

 

현지화, 왜 하나요?

여러분이 여러 국가에 앱을 출시하고 관리한다면, 스트링을 현지화할 때 어떤 목표를 잡으실 건가요? 아니, 애초에 현지화는 왜 하는 걸까요? 더 근본적으로, 앱 내에 쓰인 문구는 대체 왜 들어간 걸까요?

 

저는 스트링의 목적은 의미 전달이라고 생각합니다. 앱이라는 공간에서 앱 제작자가 스트링이라는 형태로 사용자에게 말을 거는 것이지요.

 

{스트링 = 말}이라는 비유에 따라서 스트링 현지화의 목표를 생각해보겠습니다. 제가 영어를 배웠을 때를 돌아보면, 영어 공부의 목표로 삼았던 것은 제 생각과 의사를 잘 전달하는 것, 그리고 원어민처럼 자연스럽게 표현하는 것이었습니다.

 

스트링 현지화
<출처: freepik>

 

이처럼, 저희 UPO 그룹에서는 스트링 현지화에 대해 두 가지 목표를 두고 있습니다. ①제품에서 담고자 한 의미를 담으면서, ②현지인이 보기에 자연스럽게 번역하는 것입니다.

 

이 목표를 향한 전체적인 프로세스는 다음과 같습니다.

  1. 원문 작성: 한국어, 영어로 기반 다지기
  2. 1차 번역: 자동 번역을 통해 그 외 언어로 만들기
  3. 소스 코드에 반영하기
  4. 2차 현지화: 더 자연스럽고 적절하게 개선하기

 

이제 하나씩 들여다보겠습니다.

 

 

1. 원문 작성: 한국어, 영어로 기반 다지기

스트링의 탄생은 Product Manager(PM)와 Product Designer(PD)가 신규 기능 추가 혹은 기존 기능 개선을 기획하는 순간입니다. 화면을 기획하면서 ‘여기에서는 이런 문구를 넣어야겠다’라고 결정하게 되죠. 이 기획이 마무리되면, UPO 그룹에 스트링 생성/수정 협업을 요청합니다. 화면 기획 내에 있는 모든 스트링을 문서 템플릿 내의 테이블에 넣어줍니다.

 

번역 원문 작성
아침 분석 화면에 들어간 스트링의 번역 요청 사례

 

UPO 매니저가 요청받은 작업에 착수하면서 우선 기획서를 통해 스트링들이 추가된 목적을 확인합니다. PM이 정의한 문제 정의(What Why How)부터, PD가 디자인한 각 화면의 디자인 골도 확인하고요. 그 뒤 PD가 적어준 한국어 원문을 교차확인합니다. 유저 입장에서 ‘어떻게 이해될지’, 반대로 ‘제품 입장에서 원하는 바가 정확히 전달되었는지’ 확인하는 겁니다.

 

큰 줄기의 목적뿐 아니라 문장의 종결형이나 어투에 대해서도 피드백을 드립니다. ‘~할 수 있다’는 표현과 ‘~하세요’, ‘~합니다’ 등이 주는 느낌이 모두 다르기 때문입니다. 이미 PD팀이 깊게 고민하고 전달해주시지만, 유저에 빙의해 한 번 더 확인하고 피드백을 주고받습니다.

 

번역 문장 수정

 

이렇게 한국어를 확정하고 나서, 영문으로 현지화하여 PM & PD에게 전달합니다. 마지막 피드백을 받은 후 PM이 최종 결정을 내립니다.

 

 

2. 1차 번역: 자동 번역을 통해 그 외 언어로 만들기

자, 이제 영어/한국어 외의 언어로 번역을 시작합니다. 완전한 현지화 전에 일단 기초적인 번역부터 진행하는 방식입니다. 그렇기에 목표는 ‘일단 해당 언어 사용자가 이해할 수 있는 정도로 번역하기’입니다. 처음부터 완벽할 순 없기 때문입니다.

 

알라미에서는 50개 이상의 언어를 지원하고 있습니다. 이~렇게 많은 언어를 하나하나 번역 사이트에 입력하면 한세월이 걸리기 때문에, 구글 번역(Google Cloud Translation) API를 사용한 파이썬(Python) 스크립트로 자동 번역하고 있습니다. 그렇다고 완전히 잘못 번역되면 안 되기 때문에 사전/사후 작업을 통해 오역을 방지하고 있습니다. 이 과정에서 수많은 작업을 진행하지만, 너무 길어질 테니 요약해서 이야기해보겠습니다.

 

자동번역 자동화
그리스어 번역 과정을 예시로 들어볼게요!

 

첫째, 번역기에 넣기 전에 ‘최대한 풀어쓴 영문’을 준비합니다. 국문/영문으로 원문을 작성할 때는 함축적인 표현을 쓸 때가 많은데, 그대로 기계 번역을 돌리면 요상한 결과물이 나올 때가 있습니다. 해서 원문에 생략된 주어, 목적어를 명시하고 특수한 표현은 일반적 단어로 교체한 뒤 번역기에 넣습니다.

 

둘째, 번역 결과물을 영문/국문으로 재번역해서 잘못 번역되지 않았는지 교차 확인합니다. 기계 번역 자체의 한계가 있기 때문에 잘 번역되었는지 확신할 수는 없지만, 적어도 완전히 다른 의미로 번역되는 것을 막기 위해서입니다.

 

하나의 예시로 저장 버튼의 ‘Save’를 다국어로 번역했는데 몇몇 언어에서 ‘저축’으로 번역된 적이 있습니다. 이를 모르고 앱에 반영했다가 여러 유저의 피드백을 받은 적이 있어요. 그 이후로 짧은 단어일수록 더 꼼꼼히 오역 여부를 확인하고 있답니다.

 

마지막으로, 고유명사는 번역 후 별도로 교체합니다. 특히 Alarmy라는 앱 이름을 번역기에 그대로 넣으면 오타로 인식해서 alarm으로 인식되거나, Alarmi 등 다른 단어로 바뀌곤 합니다. 그래서 번역기가 그대로 출력해주는 단어를 넣고, 번역을 끝낸 뒤 Alarmy라는 앱 이름으로 바꾸는 작업을 거칩니다. 고유명사처럼 취급되는 기능 이름도 마찬가지의 과정을 거칩니다.

 

 

3. 소스 코드에 반영하기

알라미는 ‘로컬라이즈(Lokalise)’라는 번역 솔루션을 이용하여 앱 내 스트링을 관리하고 업데이트하고 있습니다. 개발 그룹 입장에서는 단순 작업 리소스를 절약할 수 있고, 운영하는 UPO 그룹 입장에서는 수정이 필요할 때 별도 요청 없이 웹에서 수정하면 된다는 이점이 있어 온라인 솔루션을 사용하게 되었답니다. 

 

번역 소스 코드 반영
(회사돈회사산)

 

Lokalise를 통해 앱 소스코드에 반영하는 방법에도 여러 가지가 있는데, 저희는 ‘깃허브(Github)’ 연동을 통해 작업 사항을 ‘Pull Request(PR)’로 보내고, 코드 리뷰 후 반영하는 방법을 선택했습니다. 앱 내에 SDK를 삽입하여 실시간으로 반영하는 방법도 있지만, Github 연동 방식이 효과 대비 리소스/리스크가 더 작다고 판단했습니다.

 

세부적인 작업 순서는 이렇습니다.

 

번역 작업 순서

 

  1. 개발자분이 스트링의 Key 값과 Base language인 영문을 소스 코드에 직접 반영합니다.
  2. 그 뒤 변경 사항을 Lokalise로 동기화하면 Lokalise 웹페이지에서 변경 사항을 확인할 수 있습니다.
  3. 추가/수정된 Key 값에 대해 제가 영문 외 언어를 반영합니다.
  4. 작업 완료 후 PR을 전송하면, 개발자분이 코드 리뷰 후 앱에 반영합니다.
  5. 수정 사항이 반영된 테스트 버전이 나오면 화면에 잘 보이는지, 깨지는 것은 없는지 확인합니다. 문제가 없다면 새로운 버전에 반영되어 배포합니다!

 

 

4. 2차 현지화: 더 자연스럽고 적절하게 개선하기

 

여기까지 읽으면서 ‘기계 번역은 너무 어색하지 않나?’라고 생각하실 수도 있습니다.

 

맞아요. 기계 번역에는 분!명! 한계가 있습니다. 앞선 과정을 통해 오역을 방지하려 아무리 애를 써도 잘못 번역되기도 하고, 의도가 제대로 안 담길 수도 있고, 불필요하게 길이가 너무 길어질 수도 있고, 알라미의 톤앤매너에 맞지 않게 딱딱한 문장이 담길 수도 있는 등… 개선의 여지가 너무나 많습니다.

 

해서, 의도를 더 잘 담으면서 현지인 입장에서 자연스럽게 느낄 수 있도록 후속 개선 작업을 진행합니다. 이를 위한 방법에는 크게 두 가지가 있는데, ①번역 업체에 의뢰하는 것②유저의 도움을 받는 것입니다. 아직 저희도 여러 선택지를 사용하면서 장단점을 비교해보고 있기 때문에 ‘딱 이거다!’라고 말하지는 못하지만, 시도했거나 시도하고 있는 방법들을 간단히 짚어보겠습니다.

 

번역 후속 개선 작업

 

여러 방법을 하나하나 시도해보고 있지만, 최근 UPO 그룹에서는 ‘유저의 도움을 받는 게 더 효과적’이라고 판단을 내렸습니다. 물론 번역 업체의 막강한 장점도 있지만, 알라미 앱을 잘 아는 유저들의 힘이 크다는 걸 느꼈기 때문입니다. 그래서 어떻게 하면 유저들과 현지화 관련해서 잘 소통할 수 있을까 고민하고 시도하고 있답니다! 이에 대해서는 나중에 자세한 글을 작성하겠습니다.

 

 

배운 것들, 그리고 더 높은 목표

알라미의 스트링을 UPO 그룹에서 관리하기 시작한 지도 벌써 2년이 넘어갑니다. 아직도 부족한 부분, 더 시도하고 싶은 부분이 많지만 더 개선할 수 있다는 생각에 신납니다. 글을 마무리하면서, 그간 스트링 현지화를 진행하면서 느낀 깨달음을 공유해보겠습니다.

 

첫째, 핵심은 유저다!

‘유저로서 바라보는 알라미’를 잘 아는 건 유저입니다. 아무리 앱 내 기능을 속속들이 알고 있는 저라고 해도 유저의 생각과 마음은 정확히 알 수 없습니다. 특히나 현지화의 경우 다른 나라의 언어, 문화, 트렌드와 직결되다 보니 외국 유저들이 바라보는 알라미는 더더욱 알기 어렵습니다. 그렇기 때문에 유저들의 도움을 받거나, 최소한 피드백을 적극적으로 받는 것이 유저들이 알라미를 더 잘 이해할 수 있게 하는 첫 단추라고 생각합니다. 스트링 품질 개선을 위해 여러 유저와 이야기를 주고받으면서 매 순간 느끼는 부분입니다.

 

둘째, 내가 무엇을 말하려 하는지 확인하자!

이는 국문/영문을 확정하는 첫 단계부터 느끼는 부분입니다. 우리가 말을 할 때도 나 자신이 어떤 생각인지 정리되지 않으면 적합한 표현을 고르기 어렵듯이, 스트링도 어떤 의도로 어떤 뜻을 전달하고 싶은지 분명해야 합니다. 특히나 모바일 화면이라는 제한된 공간에서 의미를 전달할 땐 이것이 더욱 중요합니다. 그 의도를 기획자인 PM, 디자이너와 싱크하고, 현지화 과정에 참여하는 번역 업체나 유저에게도 잘 전달해야 좋은 스트링 현지화가 가능합니다.

 

셋째, 일단 해보자

기계 번역이라는 선택을 하기 전, ‘그냥 영어 그대로 두어도 되지 않을까’ 하고 고민을 했었습니다. 조악하게라도 현지 언어로 바꾸는 것 vs. 이해하지 못하더라도 잘 다듬은 영어로 두는 것. 각각 장단점이 있겠지만, ‘일단 번역해서 넣어보자!’라고 판단한 것의 장점을 많이 느끼고 있습니다. 유저들이 특정 스트링에 대해 구체적인 피드백을 주는 경우가 더 늘었기 때문입니다. 이 말은 유저들에게 어색해 보이는 스트링이 더 늘어났다는 증거이기도 하지만, 더 빠르게 피드백을 받아 개선할 수 있는 단초가 되었답니다.

 

새로운 기능이 빠르게 추가되는 만큼, 그리고 50여 개의 언어를 지원하는 만큼, 현지화에 있어 개선해야 할 부분은 계속해서 늘어나고 있습니다. 하지만 프로세스가 고도화되고 인사이트가 쌓이면서 더 빠르게, 더 잘 할 수 있겠다는 자신감도 붙습니다.

 

전 세계 어느 유저에게 물어봐도 “알라미 우리나라 앱 아니었어?!”라고 할 수 있는 그날까지! 도전은 계속됩니다. 앞으로도 현지화 과정에서 있었던 흥미로운 에피소드와 교훈들 나누겠습니다. 다음에 만나요!

 

<원문>

알라미 팀이 앱 내 문구를 50여 개 언어로 현지화하는 방법

댓글 0

딜라이트룸 제품 인사이트 팀

글로벌 1위 모닝 웰니스앱 알라미를 운영하는 딜라이트룸에서 사용자 경험과 제품 개선에 머리를 맞대며 함께 성장하고 있는 전문가 집단입니다.

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.