i18n, l10n이란?

ShallWeDance·2022년 3월 28일
1

i18n이란?

i18n이란 internationalization(국제화) 라는 단어를 축약한 것이다. i부터 n까지 18개의 문자수를 축약해서 i18n으로 나타낸다. 국제화는 다양한 언어 및 지역에 적용할 수 있도록 프로그램을 설계하는 프로세스다. 이상적으로는 국제화는 설계의 기본 단계 중 하나이다.

프로그램이 특정 지역이나 언어에 종속되지 않고 다양한 지역, 언어에서 정상 작동하도록 국제적으로 통용되는 sw을 설계하고 개발하는 과정을 말한다.

참고자료: Web best practices

i18n은 일반적으로 다음과 같은것을 의미한다.

  • 현지화, 국제적인 배포에 대한 장벽을 제거하는 방식으로 설계 및 개발
    • Unicode 사용
    • 필요에 따라 적절하게 레거시한 문자 인코딩을 처리하는 것
    • 문자열 연결에 신경쓰는 것
    • 유저 인터페이스의 문자열 값에 의존하지 않는 것 등
  • 현지화가 이루어질 때까지 사용할 수 없는 기능을 지원
    • 양방향 텍스트를 지원
    • 언어를 식별하기 위해 DTD(document type definition)에 마크업을 추가
    • 세로 텍스트나 기타 라틴어 이외의 인쇄 기능에 대한 CSS 지원 추가 등
  • 코드가 지역, 언어 또는 문화적으로 적절하게 지원
    • 현지화 데이터
    • 날짜 및 시간 형식
    • 달력
    • 숫자 형식 및 숫자 시스템
    • 정렬 방식 및 표시
    • 이름
    • 주소 형식 처리 등
  • 소스코드와 콘텐츠에서 현지화 가능한 요소를 분리하여 지역에 따라 현지화된 대체적인 요소를 로드하거나 선택

l10n이란?

l10n이란 Localization(현지화) 라는 뜻으로 특정 대상 시장의 언어나 문화 및 기타 요구 사항을 충족하기 위해 제품을 조정하는 것을 말한다.

예를들면, 한국에서의 통화기호는 ₩(원)를 사용하고 미국의 경우 $(달러)를 사용한다.
날짜형식의 경우 우리나라는 yyyy-mm-dd 형식을 사용하지만 대부분의 나라의 경우 dd-mm-yyyy 형식을 사용한다.

참고자료: Date Format in the United States)

이와 같은 부분은 하드코딩으로 관리하는 것이 아니라 라이브러리로 관리 되어야하는 부분이다.

라이브러리는 프로젝트 규모와 성격에 맞게 선택하면 된다.

다음과 같이 찾아볼 수 있다.

참고로 date format에 대해 얘기하는 김에 이제 Moment.js 로 새로운 프로젝트를 설계하지 않기를 바란다.
더 이상의 업데이트나 기능 추가가 없을 것이라고 공식적으로 발표했기 때문이다.
Moment.js Documentation

국제화의 가치

이상적으로는 국제화는 설계 및 개발 프로세스의 기본이며 사후 고려되어야 하는 사항은 아니다. 기존에 이러한 고려 없이 만들어진 제품을 글로벌한 시장에 도입하는 것은 다시 재설계 하는 것 보다 어렵기 때문이다. 따라서 기본적으로 고려해야할 사항이다.

DB design patterns

프론트엔드에서 라이브러리 사용, Locale에 따른 CSS적용, 필요한 컨텐츠를 로드하는 방식으로 global products를 만들 수 있다면 DB는 어떤 식으로 설계되어서 적용해야 할까? 라는 궁금증이 생겨서 찾아봤다. 단순하게 Locale에 따라 값을 저장하기만 하면 되는지 궁금해졌다.

찾아보니 여러가지 패턴이 있고 각각의 장단점이 있었다.

1.각각의 필드에 별도의 column 을 가지는 구조

장점

  • 구현하기 쉽다.

단점

  • 확장할 수 없다.
  • 지원하는 Locale 지역이 늘어날 경우 테이블의 열 수가 증가한다.
  • 만약 언어에 대한 컬럼을 발견하지 못 할경우 에러가 난다.
  • 데이터 형식을 관리하기 어렵다.

2. 각각의 언어에 대해 별도의 row를 가지는 구조

장점

  • 간단하고 효율적이다.
  • 특정 language_code를 기반으로 쿼리가 간단해진다.

단점

  • 정확하게 지원하게 되는 언어가 몇개인지 모른다.

3. 별도의 translation table을 가지는 구조

장점

  • 지원하는 언어를 한번에 파악할 수 있다.
  • 지원하는 언어에 따라 데이터형식(날짜, 통화 등)을 한꺼번에 관리하기가 쉬워진다.

단점

  • 테이블을 조인해야한다.
  • DB의 모든 테이블에 대해 동일한 테이블 아래의 모든 언어 관련 번역이 관련되어 있다.
  • 적절한 인덱싱이 필요하다.

4. 별도의 translation table에 접근하는 구조

장점

  • 번역되지 않은 데이터를 가진 테이블에 조인할 필요가 없다.
  • 번역을 위한 별도의 테이블이 있으므로 쿼리가 쉬워진다.
  • 데이터의 불일치가 거의 없다.
  • 콘텐츠 번역 외에 다른 현지화된 데이터를 테이블에 저장해서 효과적으로 현지화 할 수 있다.

나름대로 번역을 해봤지만 원글에 설명이 훨씬 잘 되어있다.

출처: Database Internationalization(I18N)/Localization(L10N) design patterns

그 외 Ref

0개의 댓글