거인의 코딩일지
[C.S] i18n, l10n, 국제화, 현지화 란??? 본문
728x90
i18n 이란??
- i18n이란 internationalization(국제화) 라는 단어를 축약한 것이다.
- i 부터 n 까지 18개 문자 수를 축약해서 i18n 으로 나타낸다.
- 국제화는 다양한 언어 및 지역에 적용할 수 있도록 프로그램을 설계하는 프로세스이다.
- 설계의 기본 단계 중 하나이다.
- 프로그램이 특정 지역이나 언어에 종속되지 않고 다양한 지역, 언어에서 정상 작동하도록 국제적으로 통용되는 sw을 설계하고 개발하는 과정을 말한다.
i18n 의 종류???
- 현지화, 국제적인 배포에 대한 장벽을 제거하는 방식으로 설계 및 개발
- Unicode 사용
- 필요에 따라 적절하게 레거시한 문자 인코딩을 처리
- 문자열 연결에 신경 쓰는것
- 유저 인터페이스의 문자열 값에 의존하지 않는 것
- 현지화가 이뤄질때 까지 사용할 수 없는 기능을 지원
- 양방향 텍스트를 지원
- 언어를 식별하기 위해 DTD(Document Type Definition) 에 마크업을 추가
- 세로 텍스트나 기타 라틴어 이외의 인쇄 기능에 대한 CSS 지원 추가 등
- 코드가 지역, 언어 또는 문화적으로 적절하게 지원
- 현지화 데이터
- 날짜 및 시간형식
- 달력
- 숫자 형식 및 숫자 시스템
- 정렬 방식 및 표시
- 이름
- 주소 형식 처리 등
- 소스코드와 컨텐츠에서 현지화 가능한 요소를 분리 하여 지역에 따라 현지화된 대체적인 요소를 로드하거나 선택함
i18n에 필요한 작업
- 소프트웨어의 국제화
- 디자인의 국제화
- 리소스의 국제화
1. 소프트웨어의 국제화
- 언어별 번역 : 국제화의 가장 큰 의미
- 문자 인코딩 설정
- 초기에는 문자를 표현하는 대표적인 방식은 ASCII 인코딩 방식이였으나, 한글이나 한자같은 문자는 2개이상의 특수문자를 합쳐서 표현하고는 했었다.
- 이러한 방식은 비정상 적이고 그에 따라 문자가 꺠지거나 제대로 표현하지 못하여 2~4 바이트 공간에 여유롭게 문자를 할당하고자 나온 방식이 Unicode
- Unicode 자체는 1바이트로 표현이 가능한 영문자도 2바이트 이상의 공간을 사용하여 메모리 낭비가 심하여 이를 가변 길이 문자 인코딩 방식으로 나온것이 UTF-8 이다.
- 문자열 치환 방법
- Server Side : 서버에서 언어별 리소스 교체
- Client Side : 클라이언트에서 언어별 리소스 교체
- Client Side 가 Server Side 보다 많은경우에서 좋은 방법이다. 그 이유는 리소스 캐시와 선호 언어 설정 등이 가능하기 떄문
2. 디자인의 국제화
- 소스코드의 변경 없이도 다양한 언어 / 지역을 지원할 수 있도록 처리해야함
- 언어 / 지역별로 가독성이 적절해야하고, 번역으로 인해 문자열의 길이가 길어질 수 있기 떄문
ex) 국제화 -> internationalization
- 언어 / 지역별로 가독성이 적절해야하고, 번역으로 인해 문자열의 길이가 길어질 수 있기 떄문
3. 리소스의 국제화
- 언어 / 지역에 맞춰 가장 적절한 리소스를 준비해야 한다.
l10n 이란??
- l10n이란 Localization(현지화) 라는 뜻으로 특정 대상 시장의 언어나 문화 및 기타 요구 사항을 충족하기 위해 제품을 조정하는 것을 말한다.
- ex
- 한국에서의 통화기호는 ₩(원)를 사용하고 미국의 경우 $(달러)를 사용한다.
- 날짜형식의 경우 우리나라는 yyyy-mm-dd 형식을 사용하지만 대부분의 나라의 경우 dd-mm-yyyy 형식을 사용한다.
국제화의 가치
이상적으로는 국제화는 설계 및 개발 프로세스의 기본이며 사후 고려되어야 하는 사항은 아니다. 기존에 이러한 고려 없이 만들어진 제품을 글로벌한 시장에 도입하는 것은 다시 재설계 하는 것 보다 어렵기 때문이다. 따라서 기본적으로 고려해야할 사항이다.
728x90
'코딩 > 기초지식' 카테고리의 다른 글
[C.S] 캐시히트? 캐시미스?? 캐시메모리가 투명하다??? (2) | 2023.10.12 |
---|---|
[C.S] 캐시(Cache) 란??? 캐시 알고리즘?? (2) | 2023.10.11 |
[C.S] Swagger(스웨거) 란?? (0) | 2023.10.06 |
[C.S] 렌더링 방식 종류와 장단점 (0) | 2023.09.26 |
프록시(Proxy)란? (0) | 2023.08.23 |