앱 리소스 관리하기 - Lokalise Tool을 소개합니다.

이전 포스트에서 글로벌 서비스를 하기 위해 고려해야 할 것들과 간단하게 구글 시트를 활용하여 앱 리소스를 관리하는 법을 소개하였습니다. 앱 리소스를 관리하는 방법을 크게 1)구글시트를 활용한 리소스 관리, 2)리소스 관리 도구을 활용 하는 방법 으로 나누어 볼 수 있다고 하였는데요, 이번 포스트에서는 원티드가 사용하고 있는 Lokalise라는 리소스 관리 툴을 소개해보려 합니다.

앱 리소스 정리하기

먼저 프로젝트를 하나 생성하고 기존 리소스들을 Lokalise 툴을 관리하기 위한 준비를 합니다. 프로젝트에서 실제 사용중인 리소스들을 업로드 진행해 봅니다.

업로드

대부분의 리소스 관리 도구가 그렇듯, lokalise도 iOS, Android 함께 관리할 수 있습니다. 만약, iOS, Android 리소스가 동일한 값을 사용하지만 키가 다르게 설정 되어있다면 먼저 키를 동일하게 맞추는 작업을 하는 것을 추천드립니다. 공통 리소스는 하나로 관리하는 것이 유지보수에 용이하며, 관리하는 리소스가 많으면 많을수록 도구를 이용할 때 더 많은 비용이 발생하기 때문입니다.

또 한가지, 리소스를 업로드할 때 strings.xml, localizable.string 등의 파일을 선택하면 자동적으로 어떤 언어에 해당되는 파일인지 자동적으로 Detection 하는데요, 정상적으로 이것이 처리되었는지 반드시 확인을 해주어야 합니다. 특히 중국어 관련 리소스의 경우 아직은 100% Detection이 되지 않는 것 같습니다.

리소스 관리하기

프로젝트에 리소스를 하나 생성하거나 기존에 사용중인 리소스를 업로드 완료하였으면, 다음과 같은 화면을 확인할 수 있습니다.

리소스관리

각 화면은 아래 내용을 참조하세요.

  1. 프로젝트 관리메뉴 입니다. 리소스 업로드 / 다운로드, 리소스 관리를 위한 Task 생성 및 리소스 별로 어떤 화면에서 실제 사용중인지, 프로젝트 설정 등이 가능합니다.
  2. 현재 프로젝트가 어떤 언어를 지원하는지 확인이 가능합니다. 지원하는 언어가 많으면 점점 더 보기 힘들어지는데, Billingual-View 모드로 원어 / 대상언어 로만 표시도 가능합니다.
  3. 검색이 가능합니다. 키 검색, 언어별 검색 모두 지원됩니다.
  4. 리소스 목록을 좀 더 보기 좋게 필터를 설정 가능합니다. Android Platform 만 사용하는 리소스만 본다던가, 특정 검색 조건 (ex. 키 이름에 action 이 포함되어 있다던가 등) 을 커스텀 필터로 만들어서 목록을 바로 볼 수 있도록 제공합니다. 생산성 도구를 다양하게 사용해 보셨다면, 그리 어렵지 않게 사용이 가능합니다. 원티드의 경우 주로 플랫폼별로 구분 (Android/iOS 공통사용, Android Only, iOS Only) 필터와 과제별로 추가되는 리소스를 태그 단위로 묶어서 많이 사용합니다. 또, 필터를 이용하여 URL 공유도 가능하여, 번역가에게 업무 요청시 매우 유용하게 사용 가능합니다.
  5. 새로운 리소스를 추가할 수 있습니다. 반드시 Key와 기본 언어값, 지원 플랫폼 등을 지정해 주는것이 좋습니다. 만약 새로운 기능이나 특정 기능들을 나타내는 리소스라면 Tag 등으로 지정해서 별도로 관리 가능합니다.
  6. 리소스에서 제공되는 메뉴입니다. 키를 선택하면 생성할때와 동일한 UI를 이용하여 수정이 가능한데, 해당 리소스가 실제 어디서 사용되는지 캡쳐화면을 업로드할 때 많이 사용합니다. 리소스 단위로 번역담당가, 개발자간의 의사소통을 Comment로 제공이 가능하고, 각 리소스 별로 link url 도 지원됩니다.
  7. 리소스의 번역 문구입니다. 선택하면 수정이 가능합니다. 번역 자동 완성 등을 제공해서 직접 번역을 해야할 때 요긴하게 쓰입니다.
  8. 각 번역 문구에서 제공되는 메뉴입니다. 주로 리소스가 번역된 히스토리 확인하는데 많이 사용 합니다.

번역 리소스 반영하기

리소스 다운로드 기능을 사용하면 어떤 플랫폼으로 다운로드 할 것인지, 어떤 언어들을 실제 다운로드 할 것인지 등을 설정하여 리소스 다운이 가능합니다. 실제로 다운로드 될 리소스를 Preview로 확인하는 기능은 매우 유용합니다.

실제 프로젝트에 반영할 때는 두 가지 정도 확인 해주면 됩니다. 먼저 LANGUAGE ISO 규격으로 다운로드하면 폴더가 생성됩니다.

다운로드 리소스 결과

안드로이드는 zh_CN, zh_TW 같은 형태 리소스 폴더는 zh-rCN, zh-rTW 와 같이 폴더명을 변경해 줘야 합니다. 그리고 zh_Hans_CN 같은 폴더명은 안드로이드는 지원하지 않으므로 약간의 추가적인 처리가 필요할 수 있습니다. (중국어 종류가 많아서 너무 힘들어요 ㅠㅠ)

또 한가지는, 프로젝트의 기본 언어 설정에 따라 다운로드되는 리소스 구성이 달라집니다. 만약 기본 언어 설정이 한국어라면 다운로드한 리소스 폴더 구조는 아래와 같이 생성됩니다.

다운로드 리소스 결과

values 폴더의 리소스는 설정된 기본 언어인 한국어를 따라가게 됩니다. 만약, 다국어 리소스 추가의 편의를 위하여 기본 언어를 바꾸고 작업했다면 프로젝트에 리소스 반영을 할 때에는 기본 언어값을 English 로 반드시 설정하고 다운로드 해야 합니다.

번역 업무 요청하기

도구를 사용하면서 가장 큰 장점은 아무래도 URL링크를 생성(리소스 키 단위, 작업 범위 단위 등 다양하게)하여 번역 담당가에게 요청을 할 수 있다는 점입니다. Task를 생성하여 번역담당자에게 어떤 언어가 번역이 되어야 하는지 세부 설정을 해두면 요청한 번역이 얼마나 진행되었는지 확인이 가능합니다. 다만, Task로 생성할 경우 지원하는 언어가 많아지면 많아질수록 오히려 Task 생성하는데 오래 걸리는 이슈가 있으므로, Filter를 적절하게 생성해서 활용하는 것을 추천합니다.

그리고 설정 - Integrations를 이용하면 다양한 서비스들과 연동할 수 있습니다. 원티드는 Slack을 통하여 알림을 종류별로 설정을 하여 실시간 알림 및 번역 담당가와 편리하게 커뮤니케이션하는데 굉장히 편리하게 사용하고 있습니다.

더 많은 기능들

API기능을 활용 한다던가, Over-the-air 라는 기능를 이용하여 앱 내 리소스가 도구에서 수정되면 즉시 반영되게 하는 등 다양한 장점이 있습니다. 어떤 것들이 더 있고, 잘 적용할 수 있을지에 대한 고민이 있습니다.

실제 사용하면서 겪는 이슈

이미 배포된 리소스 중 해당 툴에서 관리되고 있는 리소스가 제거 되었을 때 이슈가 있습니다. 예를들어 출시를 앞두고 각 작업자들이 작업한 코드를 머지하게 될텐데요, 이 중 누군가의 코드에서 사용되지 않는 리소스를 제거하였다면, 실제로 모든 코드들을 머지하였을 때 빌드 에러를 경험 하였었습니다.

검증, 배포를 위한 빌드를 할 때에는 작업자들간 이런것들이 잘 공유될 수 있도록 체크하고 있습니다. 기본적으로 아까 소개한 Slack integration 을 활용하여 만약 리소스가 제거되었다면, 그 내용에 대해서는 슬랙의 알림 채널에 별도로 리소스가 삭제되었다는 공지를 남겨두어 작업자들이 잘 공유될 수 있도록 공유하고 있습니다.


다국어 업무는 이전 포스트에서 정리한 것 처럼 다양한 사람이 더 많은 의견을 교환하고 작업이 이루어 질 수 있어야 하는 공간이라고 생각합니다. 원티드 앱 프로젝트에서는 글로벌 서비스를 준비하면서 리소스 관리를 위한 더 나은 방법을 다양하게 고민하였고, 현재는 소개해드린 것 처럼 다국어 업무를 진행하고 있습니다.

글로벌 서비스를 준비하시고 계신다면 리소스 관리에 대한 고믾이 많을 것으로 예상 되는데요, 저희가 정리한 글이 도움이 되었으면 좋겠습니다 :)