본문 바로가기
React

i18next-react와 Google Sheets를 활용한 국제화(i18n) 자동화 도입기(1) - intro/도구 선정

by 복숭아 우유씨 2024. 9. 18.

도입기라고 하기엔 별거 없지만,

다른 블로그 글과 달라진 부분도 있고,

나중에 또 적용해야 할 나를 위해 써보는 도입기!

 

(1)을 붙인 건 더 업데이트해야 할 부분이 많기도 하고,

한번에 다 쓰려고 하다보니 자꾸 미뤄져서 잘라서 써야겠단 생각이 들었다ㅎㅎ

(메인 업무가 아니여서 틈틈이 조금은 더디게 진행된단 점도 있고ㅎㅎ)

 

 

배경 및 문제인식

회사의 서비스가 글로벌 시장 진출을 준비하면서 국제화(internationalization, i18n)를 준비하게 되었다.

국제화에는 여러 지원이 포함되지만, 가장 우선시해야 하는 것 중 하나인 언어 대응을 준비하게 되었는데, 기존 방식이 비효율적이고 생산성이 떨어지는 방식으로 되어있었다. 즉, 아래와 같은 문제점들을 도출하였고 이를 개선할 수 있는 방안을 고안하게 되었다.

Problems (기존 방식의 문제점 도출)

  현재 방식: 수작업 및 엑셀/Jenkins 사용한 부분 자동화 방식

  •  개발자/기획자/번역가 등 여러 단계를 거치며 휴먼 에러 발생 가능성 높음
  •  파일 이력/버전 관리의 어려움
  •  비개발자와의 협업의 어려움
  •  개발자의 생산성 저하
 

해결 방안 도출

1. 기존 상태에서 필요한 것들

  1)  유지할 것: 기존에 리액트와 i18next를 사용해서 국제화를 적용하고 있었고, i18next는 국제화 적용에서 많이 사용되는 framework였기에 이는 유지하기로 했다.

  2) 추가가 필요한 부분

   - 소스코드에서 국제화에 사용되는 key 자동 스캔 필요

   - 비개발자와 협업하기 좋은 도구 선정 필요 (비개발자도 쉽게 사용할 수 있는 도구)

   - 위의 두 항목을 자동으로 연동시켜주는 도구 필요

 

2. 무엇을 도입할 것인가?

새로 도입할 기술을 무엇으로 해야할지는 역시 구글링을 통해 많은 사람들이 먼저 도입한 방법을 검토해보기로 했고, 그 중 아래의 도구들을 우선 선정해서 초기 도입 테스트를 완료했다.

 

1) key 스캔

 i18next-parser, i18next-scanner 등의 라이브러리가 있다. 심지어 i18next 공식문서에서도 키를 추출하는 다양한 방법을 소개하고 있다. (해당 문서에서는 runtime에 추출하는 방법도 소개하고 있으니 상황에 따라 방법을 선택하면 되겠다.)

- i18next-scanner를 선택했다.

- 이유: 일단 참고했던 글이 scanner를 쓰고 있어서 먼저 써보게 됐다. i18next가 JSON format을 v4을 사용하게 되면서 복수형 표현에 대한 기준이 달라졌으나 i18next-scanner에서 v3만 지원하는 이슈가 있었으나 해당 이슈가 해결 되어서 변경없이 사용하게 되었다.

 

2) 비개발자와 협업하기 쉬우면서도 자동화가 가능한 도구

-  비개발자와의 협업도구로는 구글 시트를 사용했고, 자동화를 도와주는 라이브러리로 Google-spreadsheet를 사용하게 되었다.

- 이유:

  - 구글 시트는 비개발자가 쉽게 접근해서 작성할 수 있으며, 협업이나 이력 관리가 간편해진다는 큰 장점이 있었고, 더불어 구글에서 제공해는 api를 사용하면 쉽게 자동화 할 수 있다는 장점이 있었다.

  - google-spreadsheet는 JS/TS 생태계에서 가장 유명한 Google Sheet API wrapper중 하나로써, auth관리, 셀/행 기준 api, 워크시트나 문서 관리 등을 보다 쉽게 할 수 있게 해준다는 장점이 있어서 사용하게 되었다.

 

3. 적용 방법 요약

- 간략하게 적용방법을 요약한 이후 세세한 내용은 별도로 살펴보도록 하겠다.

1) i18next를 먼저 적용한다.

 - 이때, 기본 설정을 관리할 파일을 작성하고, 최상위 진입점에서 해당 파일을 import해서 전역에서 사용할 수 있도록 한다.

 - 프로젝트에 맞게 locales 파일/폴더 등을 생성한다.

 - 사용할 곳에서 i18next의 useTranslation 훅을 사용해서 key값을 입력한다.

2) i18next-scanner로 key 스캔하기

 - config 파일을 작성하고, script를 통해 실행한다.

3) 구글 시트 upload/download 자동화 하기

 - 구글 시트 계정 설정하고, upload/download 로직을 작성한다.

 - 번역가가 구글 시트에서 key에 맞게 번역 작업을 해주면, 이를 다운로드하여 적용하면 끝!

 

요약하자면 간단(?)한데, 세세한 방법들은 다음 글에서 이어서 쓰는 것으로 하겠다.

 

 

 


Ref.

https://ui.toast.com/weekly-pick/ko_20210303

https://ytg.kr/i18next-json-format-v4/

댓글