본문으로 바로가기

[다국어 처리] 다국어 처리, 관리방법 시행착오 및 개선

배경

회사에서 운영하는 서비스는 여러 국가에서 이용되고 있습니다.
각 국가별 사용성을 향상시키기 위해 다국어 처리를 진행하고 있습니다.

주요 시행 착오와 개선 사항은 다음과 같습니다.

시행 착오 1

여러 단어를 결합한 경우, 해당 로케일을 결합하여 사용하는 과정에서 문제가 발생했습니다.
예를 들어, 사용자정보를 합쳐서 사용자 정보로 표현할 때, 존재하지 않는 단어가 생성되는 경우가 발생했습니다.

코드로 표현하자면 아래와 같습니다.

사용자 : user
정보 : information
사용자 정보 : `${user}${information}`

국가별로 단어 사용자 정보사용자 + 정보 단어의 합이 아닌 경우가 있습니다.
이를 해결하기 위해 단어를 합치는 대신 새로운 로케일을 추가하는 방법을 도입했습니다.

사용자 : user
정보 : information
사용자 정보 : userInformation

위처럼 사용하면 어느 국가에서도 문제가 발생하지 않았습니다.

시행 착오 2

로케일을 페이지 단위로 생성하다 보니 중복 로케일이 많이 발생했습니다.
예를 들어, 사용자 단어가 있는 경우 통계 페이지에서는 statisticsUser, 대시보드 페이지에서는 dashboardUser로 관리를 했습니다.

statisticsUser : 사용자
dashboardUser : 사용자

위처럼 관리하는 중복된 값이 많아졌습니다.

결론

위 두 가지 문제를 해결하기 위해 새로운 로케일 관리 방법을 도입했습니다.

  • 로케일은 짧은 단위로 생성합니다.
  • 로케일을 합쳐서 사용하는 대신 필요한 경우 새로운 로케일을 추가합니다.
  • 동일한 값의 로케일 키를 생성하지 않습니다. (일부 예외가 있을 수 있습니다.)
  • 로케일 키 생성 시 영어를 기준으로 합니다. (검색이 용이합니다.)

위에서 언급한 동일한 값의 로케일 키를 생성하지 않습니다. 의 예외의 예시를 알아보겠습니다.
동일한 값이지만 다른 문화권에서는 다른 형태로 표현되는 경우가 있습니다.
예를 들어, 영어에서는 1st, 2nd, 3rd, 4th 등으로 표현하지만, 베트남어에서는 모두 ngày로 표현됩니다.
이 경우 중복된 ngày 값을 가질 수 있습니다.

결과

로케일 키가 중복되는 문제를 해결하고, 변경 사항을 반영하여 약 1,000개의 로케일 키가 감소했습니다.
이로 인해 코드 라인도 약 10,000줄이 줄어들었고, 로케일 관리가 더욱 간편해졌으며 개발 속도가 향상되었습니다.
또한, 동일한 단어를 반복 번역하는 작업이 줄어들어 로케일 결과물을 받는 속도도 향상되었습니다.

반응형