에카테리나 & 다리아의 추가 글
빵
다른 많은 기업들과 마찬가지로 카스퍼스키도 어느 시점부터 애자일 개발 방식으로 전환했습니다. 이로 인해 출시 주기가 자연스럽게 훨씬 짧아졌습니다. 이전에는 몇 달에 한 번씩 새 앱 버전을 출시했지만, 이제는 2주마다 한 번씩 출시하게 되었습니다. 물론 각 신규 릴리스에 포함된 문자열 수는 줄었지만, 이는 큰 도움이 되지 않았습니다. 여전히 이 소량의 문자열을 전체 현지화 및 언어 테스트 프로세스를 거쳐야 했으며, 훨씬 더 촉박한 마감 기한을 맞닥뜨려야 했기 때문입니다.
모바일 앱에는 텍스트가 거의 포함되지 않는다는 오해가 흔히 있습니다. 그런다면 좋겠지만요! 예를 들어 저희의 경우, 앱당 UI 텍스트만 평균 약 25,000단어에 달했으며, 이는 약 10개의 앱에 적용되고 각 앱마다 약 20개의 대상 언어로 번역되었습니다. 게다가 매주 새로운 UI 및 문서 텍스트가 추가로 들어왔습니다.
결과적으로 현지화는 전체 출시 롤아웃 프로세스에서 근본적인 병목 현상이 되었습니다. 그리고 이전에는 제품 관리자들이 현지화 팀 구성원들의 이름조차 알지 못했는데 — 모든 번역이 '마법처럼 저절로' 나타났으니 그럴 필요가 있었겠습니까? — 이제는 그들이 원했던 것보다 훨씬 더 깊은 수준에서 관련된 모든 문제들을 인지하게 되었습니다.
카스퍼스키에서 현지화 과정은 일반적으로 두 단계로 구성됩니다: 번역과 언어 테스트입니다.
번역 단계에서 발생한 일반적인 문제는 사용된 프로세스와 CAT 도구의 한계로 인해 수작업이 너무 많았다는 점입니다. 구체적으로:
다중 브랜치 파이프라인이 지원되지 않아 번역을 위한 델타를 수동으로 생성한 후 나중에 브랜치로 다시 푸시해야 했습니다.
앱과 언어 간 일관성을 보장하는 것이 불가능했습니다.
예를 들어, 소스 텍스트가 프로세스 중에 변경된 경우, 추가로 요청된 번역을 병렬로 진행할 수 없었습니다. 대신, 기본 번역 패키지가 준비될 때까지 기다린 후, 추가 번역을 진행해야 했습니다.
언어 테스트의 주요 목적은 문맥 내에서 전체 번역을 확인하는 것입니다. 당사는 당사 용어를 잘 아는 탄탄한 번역가 팀을 보유하고 있습니다. 그러나 주변 문맥을 보지 않고 번역하거나 단순히 버튼인지 제목인지조차 모른 채 번역할 경우, 문제가 빠르게 발생할 수 있습니다.
따라서 언어 테스트는 일반적으로 스크린샷을 통해 결과 앱 화면 전체를 수동으로 확인하는 작업을 포함합니다. 이는 다음과 같은 문제점을 식별하는 데 도움이 됩니다:
텍스트가 화면 요소 크기에 비해 너무 길어 표시되지 않습니다. 누락된 텍스트에 면책 조항이나 금융 정보가 포함된 경우 법적 문제가 발생할 수 있습니다.
번역자가 실수를 하거나, string로 외부화되지 않고 하드코딩된 경우,
문맥에 맞지 않게 번역된 텍스트, 예를 들어 버튼의 텍스트 — "Download"와 같이 — 가 문법적으로 부정사 대신 명령형인 경우.
스크린샷 작업만 해도 엄청난 시간이 소요되었습니다. 예를 들어, 신규 기능에 40개의 UI 화면이 포함되고 20개의 대상 언어가 있다면, 최대 70시간에 달하는 수동적이고 기계적인 지루한 작업이 필요할 수 있습니다.
결국, 3개월마다 새 버전이 출시될 때는 감내할 수 있는 수준이었습니다. 하지만 격주로 출시가 이어지자 현지화 팀에 부담이 가기 시작했습니다. 반드시 해결해야 했고, 그것도 신속하게 해결해야 했습니다.
우리는 두 가지 선택지가 있었습니다:
1. 경험이 적은 인력을 채용하고 현지화 작업량을 줄이는 것 — 이 두 가지 모두 자연스럽게 품질 저하로 이어지거나,
2. 자동화하는 것.
우리는 후자를 선택했습니다.
왜 스마트캣인가요?
CAT/TMS 솔루션을 선택할 때 우리의 최우선 고려 사항은 다음과 같았습니다:
내부 승인 절차 간소화 — 예산 승인, 시리얼 키 생성 등 모든 복잡한 절차,
기본 기능 즉시 사용 가능 — 추가 기능 개발을 기다리지 않고 즉시 사용 가능해야 함,
경량 서버 요구사항 — 역시 긴 승인 절차를 피하기 위함,
합리적인 가격, 가급적 무료 서비스 이용.
서비스 측의 적절한 지원 — 사내 개발자를 고용할 필요가 없도록,
보안 요구 사항 — 우리가 서비스에 연결하는 방식, 반대가 아닌,
다중 브랜치 지원 — 여러 기능을 동시에 번역할 수 있도록,
추가 번역이 원본 배치와 병행 가능해야 함.
최종 후보 목록을 작성했을 때, 우리는 단 두 가지 이름만 남게 되었습니다: Smartcat과 Zing, 에버노트 제작진이 만든 연속 로컬라이제이션 서버입니다.
우리는 Zing의 맞춤 설정 기능, 무료 설치 패키지, 그리고 사내 호스팅이 가능한 프라이빗 액세스 기능을 높이 평가했습니다. 단점으로는 설치 과정이 결코 쉽지 않아, 모든 번역가와 직원을 온보딩하는 데 드는 시간 비용이 서비스 운영 비용을 지나치게 높일 수 있다는 점이었습니다.
그래서 Smartcat을 선택했습니다. 내부 VCS에 CAT 도구를 직접 연결할 수 없기 때문에, 우리는 Smartcat–Serge 번들을 사용하기로 했습니다. (Serge는 버전 관리 시스템과 번역 관리 시스템 간 문자열을 동기화하는 오픈소스 소프트웨어입니다. 다양한 형식의 파일에서 문자열을 식별하여 업계 표준 PO 형식으로 변환한 후 Smartcat에 전달합니다. 서버에 직접 설치할 수 있어 기밀 정보가 외부로 유출되지 않습니다.)
결과적으로 도출된 솔루션에서 가장 마음에 들었던 점은 다음과 같습니다:
모든 요구 사항을 지원합니다: 다중 브랜치 파이프라인, 추가 번역, 보안 등.
즉시 업데이트를 받을 수 있습니다, 아무것도 다운로드하거나 설치할 필요 없이,
자체 파싱 스키마를 생성할 수 있습니다 문자열을 위해 Smartcat–Serge 번들 덕분에,
번역가와 대화할 수 있습니다 플랫폼을 떠나지 않고도 문서 작업을 하는 번역가와,
생산량 증대가 필요할 경우 플랫폼 마켓플레이스에서 프리랜서를 바로 찾을 수 있습니다,
모든 언어 및 프로젝트 비용을 단일 청구서로 결제할 수 있습니다,
제공받는 지원이 매우 만족스럽습니다 — Smartcat 팀은 저희의 워크플로우를 구축하고 실행하는 데 도움을 주었을 뿐만 아니라 저희에게 중요한 기능들을 우선적으로 처리해 주었습니다. — 프로젝트 전체 텍스트 검색 기능 때문에 결국 구독을 선택했지만, 이는 선택 사항이었습니다.
우리가 직면한 몇 가지 어려움은 다음과 같습니다:
초기에는 프로젝트 내 모든 문서에서 텍스트를 검색할 수 없었습니다 — 현재는 Smartcat이 해당 기능을 구현했으므로 더 이상 문제가 되지 않습니다.
프리랜서들이 프로젝트 문서 업데이트 알림을 놓치거나 무시하는 경우가 있어, 내장 채팅을 통해 수동으로 리마인더를 보내야 합니다.
프로젝트 관리자가 번역가 초대를 수동으로 시작해야 합니다 — 하지만 이 단계가 곧 자동화될 예정이라고 들었습니다.
지금까지 Smartcat을 사용한 경험을 고려할 때, 해당 팀이 이미 이러한 문제 해결을 위해 노력하고 있을 것이라고 기대합니다.
Before & After
상황을 객관적으로 파악하기 위해, 과거와 현재의 프로세스와 수치 측면을 비교해 보겠습니다.
프로세스
이전
변경 전에는 번역 및 언어 테스트 단계를 거치며 거의 30단계에 가까운 절차를 거쳐야 했습니다:
번역:
저장소의 여러 브랜치에서 텍스트를 가져옵니다 — 수동으로,
번역을 위한 델타를 생성합니다 — 수동으로,
번역용 패키지를 빌드합니다,
FTP 서버에 업로드하고,
에이전시, 프리랜서 또는 현지 사무소에 수많은 이메일을 작성하고,
번역이 완료되면 FTP 서버에서 번역물을 가져오고,
CAT 도구에 로드하여 모든 것이 정상인지 확인하고,
번역된 문자열을 저장소에 업로드하며 브랜치를 혼동하지 않도록 주의 — 수동으로,
빌드 실행, 오류 수정, 빌드 완료,
추가 번역 요청 — 본질적으로 동일한 과정을 반복합니다.
언어 테스트:
빌드를 시작하고 완료될 때까지 기다립니다,
로컬라이제이션 오류로 인해 실패한 경우 빌드를 재시작합니다,
디버그 메뉴가 없는 경우 특수 테스트 환경을 구성합니다,
20개 이상의 언어로 모든 관련 스크린샷을 촬영합니다,
QA 팀과 협력하여 누락된 스크린샷 확보 방법 모색,
스크린샷 패키지 생성 및 명명,
FTP 서버에 업로드,
번역사에게 번역 검토 작업 할당,
에이전시의 질문에 답변,
작업 승인 및 수정 사항 적용,
빌드 수행 — 때로는 시간이 오래 걸림,
오류 발생 시 빌드 재실행,
회귀 테스트용 스크린샷 촬영,
다시 스크린샷 업로드 및 번역사에 작업 할당,
다시 번역사와 모든 사항 논의,
번역 변경 사항 발생 시 다시 회귀 테스트 실시.
이후
이제 모든 단계에 걸쳐 단 아홉 단계만 남았습니다:
카피라이터가 Git에 새 문자열을 커밋합니다. Serge가 자동으로 해당 문자열을 Smartcat에 공급합니다.
로컬라이제이션 프로젝트 매니저가 번역가를 배정합니다,
번역가는 스크린샷과 코멘트를 손쉽게 활용하며 컨텍스트 내에서 번역합니다,
로컬라이제이션 프로젝트 매니저가 번역을 검토 및 확정하면, 번역 내용은 자동으로 Git으로 다시 반영됩니다,
로컬라이제이션 팀이 로컬라이즈된 텍스트를 위한 기능 스크린샷 봇을 실행합니다,
로컬라이제이션 팀은 현지화된 스크린샷을 FTP 서버에 업로드하고 언어 전문가에게 전송합니다.
언어 전문가는 현지화된 스크린샷을 확인하며 필요한 경우 번역을 수정합니다.
변경 사항은 자동으로 Git으로 반영됩니다.
로컬라이제이션 팀이 풀 리퀘스트를 클로즈합니다.
이게 전부입니다 — 복잡성이 이렇게 세 배나 줄어들면서 기존 방식과 비교해 정말 큰 차이를 느끼고 있습니다!
숫자
모든 숫자는 한 번의 릴리스(2주마다) 및 하나의 앱 기준입니다.
단계 | 시작 전 시간 | 시작 후 시간 |
모든 브랜치에서 문자열 수집 | 1 | - |
새로 추가되거나 업데이트된 문자열만 포함하는 델타 생성 & 20개 이상의 언어를 지원하는 CAT 도구에 업로드 | 4 | 0.25 |
20개 이상의 언어를 위한 번역 패키지 생성 | 0.5 | - |
20개 이상의 언어로 번역 패키지를 FTP 서버에 업로드 | 0.5 | - |
20개 이상의 언어로 작업 수행 가능 여부를 확인하기 위해 에이전시/번역사와 소통합니다 | 2–3 | |
플랫폼에서 바로 에이전시/번역사에 작업 배정 | - | 0.25 |
번역가의 질문에 답변하기 | 2–4 | 0.5 |
검토 및 번역 확인 | 1 | 0.25 |
빌드 실행 | 최대 8 | 0.25 |
추가 번역 | 8 | 0.25 |
스크린샷 획득 | 16–32 | 자동 스크린샷 도구 사용 시 8장 |
FTP 서버에 스크린샷 업로드 | 8 | 1 |
대행사/번역가와 소통하고 확정된 번역본 확보하기 | 8 | 1 |
리소스 파일 업데이트 | 8 | 2 |
변경 사항을 Git에 기록 | 8 | 0.25 |
앱당 릴리스당 총 소요 시간 | 84시간 | 14시간 |
보너스
우리는 계속 발전해 나갈 수 있으며, 시간이 지나면서 현지화 프로세스의 효율성과 품질을 동시에 향상시킬 다른 방법들도 찾아낼 것이라고 확신합니다. 가장 중요한 것은 현지화가 더 이상 출시 주기의 병목 현상이 아니라는 점입니다. 이렇게 짧은 시간 내에 이러한 성과를 거둔 것은 우리 팀과 Smartcat 플랫폼 모두에게 큰 성과라고 생각합니다.
부록. 팁과 아이디어
다음은 Smartcat 도입 후 저희가 취한 구체적인 조치들입니다. 저희의 발자취를 따라가고자 하는 다른 기업과 팀을 위한 '참고 자료'로 여기에 정리해 둡니다. 모든 조치가 쉬운 것은 아니지만, 대부분은 현지화 과정을 더 원활하게 하고 오류 발생 가능성을 줄이는 데 도움이 될 것입니다.
통합:
Git–Serge–Smartcat 통합을 테스트하여 모든 문자열이 Smartcat 프로젝트로 전송되고 다시 돌아오는지 확인하세요. 운영 단계에서 예상치 못한 문제가 발생하지 않도록 해야 합니다.
소프트웨어 엔지니어와 브랜치 명명 규칙을 합의하세요. 이렇게 하면 현지화가 필요한 특정 브랜치를 찾아내는 봇을 설정할 수 있어, 여러분과 개발자 모두의 커뮤니케이션 시간을 절약할 수 있습니다.
필요한 경우 Serge의 기본 파서를 사용자 정의하세요. 예를 들어, 번역자가 볼 수 있도록 문자열 ID, 주석 및 스크린샷 참조 링크를 만들었습니다.
UI 테스트 및 기능 스크린샷 촬영을 고려하세요 Kaspresso 프레임워크를 사용하세요. 예를 들어, 저희 개발자들은 사용하는 각 문자열에 스크린샷 링크를 첨부합니다. 파일이 Smartcat으로 전송되면 스크린샷 링크가 자동으로 '코멘트' 탭에 추가됩니다. Kaspresso에 대한 자세한 내용과 사용 이유를 여기에서 자세히 확인할 수 있습니다.
현지화 및 언어 테스트:
용어집이 준비되어 있다면, Smartcat에 업로드하여 현지화 작업 전반에 걸쳐 일관성을 유지하세요.
사내 언어 전문가들을 추가하여 플랫폼을 탐색하고 실제 작업을 받기 전에 사용법을 익히도록 하세요.
프리랜서를 찾고 선정한 후, 스크린샷, 코멘트, 용어집 등의 사용법을 숙지하도록 회사 프로세스에 따라 온보딩하세요.
필요한 경우, 추가 현지화 또는 테스트 요구 사항을 위해 번역 대행사를 찾으세요.
도움이 되셨기를 바랍니다 — 여러분만의 팁이 있다면 알려주세요!



