글로벌한 프로덕트를 위한 지식 - i18n, i10n

willy·2022년 9월 4일
0

알아보자

목록 보기
3/3

회사에서 온보딩이 시작되고, 첫 스터디 과제로 i18n을 받았다. 처음 들어보는 기술인지라, 조금 혼란스럽기도 했지만 다행이도 집단 지성이 있는지라 미리 잘 정리해둔 글들을 보고 어느정도 이해할 수 있었다.

글로벌한 sw를 만드는 방식에 대해 관심이 많았는데, 정말 기본적인것 조차 못하고 있지 않았나 싶다. 이번엔 프로젝트를 글로벌하게 만들어줄 수 있는 방법에 대해 알아보도록 하자.


i18n, i10n: 국제화와 현지화

국제화(i18n)와 현지화(i10n)는 소프트웨어 개발에서 중요한 개념으로, 다국어 및 문화적인 다양성을 지원하기 위해 사용된다. 이해하기 쉽게 설명하면 다음과 같다.

internationalization(i18n)

i18n은 국제화를 뜻하는데, i와 n 사이에 18개의 글자가 들어있다고해서 이렇게 표현한다.

sw가 언어 및 문화권이 다른 곳에서도 사용할 수 있도록 프로덕트를 설계하는 것을 뜻한다. 그렇게 된다면, sw가 지역에 종속되지 않고 작동할 수 있게 된다.

애초에 글로벌한 sw를 만들때 반드시 고려되어야 하는 속성이고, 프로젝트 중간에 임시방편으로 추가하기엔 번거로운 점이 많으니 기본 단계에서 적용하는 것을 권장한다.

그렇다면 국제화의 목적은 무엇일까?

목적

만약 한 sw가 한글, 영어, 중국어, 일어를 모두 포괄해야하는데, i18n을 적용하지 않으면 같은 컴포넌트, 화면안에서 처리해야할 텍스트 양이 상당해진다. 같은 말을 모두 다른 언어로 표현해야하니까 말이다.

번역할 문자열이 많아지게 된다면, 개발자, 기획자, 번역가 간에 들여야할 비용이 많아진다. 그리고 한번 번역 작업을 배포할때마다 반복적으로 해야하는 문제점이 있다.

반복적이고 시간이 많이들게 된다면, 휴먼에러를 발생시키기 쉽다. 이러한 문제점을 자동화를 통해 개선할 수 있다면 어떨까? 국제화는 이러한 관점에서 주목받는 개념이다.

언어 뿐만 아니라, 국제화라는 것에는 많은 의미가 담겨있다. 우리가 사용하기도 하는 문자열 패턴은 볼 수 있는 왼쪽에서부터 읽어가지만, 아랍권에서는 오른쪽에서부터 글자가 시작하기도 한다. 숫자와 화폐 표기, 달력, 시간 표기법까지 모두 제각각으로 다를 수 있다.

국제화의 목적

  • 다국어 지원: 한 소프트웨어가 여러 언어로 번역되어 다양한 사용자들이 사용 가능.
  • 비용 절감: 번역 작업을 자동화하여 개발자, 기획자, 번역가 등의 비용을 절감.
  • 시간 절약: 자동화된 번역과 자원 관리로 인해 번역 배포 주기를 단축하여 시간을 절약.
  • 사용자 경험 향상: 지역에 맞는 문자열과 형식으로 표시하여 사용자들에게 더 나은 경험을 제공.

국제화는 언어 뿐만 아니라, 다양한 문화적인 측면도 고려합니다. 예를 들어, 언어에 따른 문자열 정렬 방식, 숫자와 화폐 표기법, 시간 표기법 등을 다양한 문화권에 맞게 처리해야한다.

sw의 i18n

다음과 같은 요소들을 살펴보아야한다.

  • 소프트웨어의 국제화 : 언어/지역에 독립적인 소스 코드를 설계합니다. 입력, 출력, 유니코드 지원 및 언어/지역 관련된 데이터 취급 방법 등을 고려합니다. (예: 언어/지역별 소팅 방법, 인코딩 설정, RTL 등)
  • 디자인의 국제화 : 언어/지역에 따라 유연하고 일관된 UI/UX를 디자인합니다. 소스 코드의 변경 없이도 다양한 언어/지역을 지원할 수 있도록 합니다. (예: 충분한 길이의 텍스트 박스)
  • 리소스의 국제화 : 번역가가 담당하는 부분으로서 언어/지역에 가장 적절하게 리소스를 준비하며 시장에 알맞는 전략을 제시합니다.

출처: - https://docs.microsoft.com/ko-kr/windows/win32/intl/understanding-internationalization


1. 번역 언어

앞서 살펴본 것 처럼 기본적인 번역을 뜻한다.

2. 문자 인코딩 방식

영어와 같이 글자별로 조합이 필요없는 언어는 ASCII 문자코드를 사용하지만, 한글은 글자의 조합이 필요한 유니코드를 활용한다.

3. 문자열 치환 방법

문자열을 해당 언어, 지역에 맞게 번역과 동시에 변환하는 것도 중요하다. 성능과 UX, 지속적인 통합에 큰 영향을 주기 때문이다.

크게 2가지로 나뉜다.

  • 서버사이드에서 언어별 리소스를 교체하는 것
  • 클라이언트 사이드에서 요청 언어별 리소스 요청 교체하는 것

클라이언트 사이드의 경우에, 리소스 캐시와 선호 언어 설정이 가능하기 때문에 긍정적인 유저 경험을 줄 수 있다.

그러나, 디바이스의 성능에 따라 다른 렌더링 이슈가 생길수도 있기 때문에 서버 딴에서 처리하는 것도 장점이 있다.


i10n

i10n은 localization을 줄여서 일컫는 말이다.

현지화(i10n)는 국제화된 소프트웨어를 특정 지역 또는 문화권에 맞게 맞춤화하는 과정을 의미한다. 현지화는 주로 번역 작업을 포함하며, 해당 지역의 문화, 관습, 미학, 법적인 요구 사항 등을 고려하여 소프트웨어를 현지 사용자들에게 적합하게 제공한다.

주로 현지에 걸맞게 제공하는 방식을 뜻하는데, 맥도날드를 예로들어보면 각 나라에 맞는 메뉴를 출시하는 것과 비슷하다. 마치 한국에서만 불고기버거를 파는 것 처럼 말이다.

여기에 필요한 작업은 다음과 같다.

  • 글 읽는 방향: 언어에 따른 텍스트의 읽는 방향(LTR 또는 RTL)을 처리.
  • 문자열 치환: 번역된 문자열을 해당 언어와 문화에 맞게 적절히 변환하여 사용자에게 제공.
  • 숫자, 화폐, 날짜, 시간: 언어에 따른 숫자와 화폐 표기법, 날짜와 시간 형식을 지역에 맞게 설정.
  • 지역 관습: 지역에 따른 관습과 특성을 고려하여 UI/UX를 조정.
  • 디자인: 지역의 문화적 취향에 맞는 디자인과 아이콘 등을 사용.
  • 법적인 요구 사항: 지역의 법적인 규제와 규칙을 준수.

현지화를 통해 소프트웨어는 해당 지역의 사용자들에게 더욱 친숙하고 접근하기 쉬운 환경을 제공하며, 글로벌 시장에서의 경쟁력을 강화할 수 있다.

국제화와 현지화는 서로 보완적인 개념으로, 소프트웨어 개발에서 다국어 지원과 문화적 다양성을 고려하는 데 중요한 역할을 한다.

profile
같은 문제에 헤매지 않기 위해 기록합니다.

0개의 댓글