💻 Frontend
L10n 리서치 및 국가별 화폐 및 복수형 구현
[목차]
1) l10n이란?1-1) Localization이란1-2) Intl2) Currency 화폐 표기2-1) Intl 사용방법2-2) vuei18n 라이브러리 사용방법3) Plural (복수형) 표기3-1) 국가별 복수형 표기3-2) Intl 객체이용3-3) vuei18n pluralization 메서드
1) l10n이란?
1-1) Localization이란
mdn 정의
화폐, 문자 쓰는 방향(RTL, LTR), 단수/복수, 숫자 등 나라별로 다른 표기법에 대한 현지화 작업
Locallization이 필요한 항목 - 측정단위 (km, mile) - 텍스트방향 (rtl) - 숫자, 날짜, 화폐 - 라틴어 스크립트의 대문자사용 - 관용구(속담 등)의 각색
1-2) Intl
Intl 객체는 localization을 돕는 자바스크립트의 API이다
지원하는 메서드는 아래와 같다. Locale과 Options 인자를 전달할 수 있다.
Collator : 각 locale에 맞는 문자열을 비교하고, compare()메서드를 통한 정렬이 가능함 DateTimeFormat : 각 locale에 맞는 날짜 및 시간 서식 ListFormat : 배열을 문자열로 리스트화하여 변환 (style, type으로 다르게 표현 가능) NumberFormat : 숫자서식 적용 가능 (화폐, 소수점 단위 표기 등이 가능함) PluralRules : 복수형 규칙 적용 가능 RelativeTimeFormat : 각 Locale에 맞는 시간 표현 가능 (en- "1 day ago”, es-"pasado mañana”)
2) Currency 화폐 표기
2-1) Intl 사용방법
NumberFormat 메서드에서 locale과 opions 설정해서 인자로 전달
new Intl.NumberFormat(Locale, {
style: "currency",
currency: currencyCode(USD),
}).format(currencyNumber)2-2) vuei18n 라이브러리 사용방법
- Locales 파일에서 locale에 따른 currency 값 할당하기
const numberFormats = {
"ar-AE": {
currency: {
style: "currency",
currency: "AED",
},
},
"en-US": {
currency: {
style: "currency",
currency: "USD",
},
},
};
const i18nSample = createI18n({numberFormats});- $n(number, key, locale) 입력
<p>{{ $n(3000, "currency", selectedLangData.localeCode) }}</p>3) Plural (복수형) 표기
3-1) 국가별 복수형 표기
러시아어
러시아어의 복수형은 끝자리의 숫자가 무엇인지에 따라 달라진다
- 끝 자리가 1인 경우

- 끝 자리가 2~4인 경우

- 끝 자리가 5~0인 경우와 10~19

아랍어
아랍어는 복수형에 대한 규칙이 꽤나 복잡하다. 알고 있어야하는 부분은 아래와 같다
- 단수
- 쌍수
- 아랍에서는 2개를 명사의 어미 변화로 나타냄
- 복수
- 규칙복수 (단수명사의 접미사 추가)
- 성별에 따른 복수(남성/여성 규칙복수)
- 사물규칙은 여성 단수로 취급
- 불규칙복수
- 30가지의 불규칙 패턴이 있다고 함
바나나는 불규칙복수에 해당되며 표현 방법은 아래와 같다.
단수 표현(1, 11~)

쌍수 표현(2)

복수 표현(0,3,5,7,8,9 ⇒mawz)

4,6,10 ⇒ muzat

3-2) Intl 객체이용
Intl.PluralRules()

- plural check (new Intl.PluralRules(Locale).select(number))
- zero, one, few, many로 plural을 체크해줌.
- 다만, 아랍어 같이 불규칙한 형태가 많아 커스텀이 필요할 경우 사용이 까다롭다
- suffixe maping
- map으로 각 plural의 경우의 수에 따른 복수형 표기를 매칭해준다.
3-3) vuei18n pluralization 메서드
vuei18n pluralization
- messages 인수에 추가
- 위의 작업을 vuei18n에서는 좀 더 간편하게 사용할 수 있다.
- 기존에 만들었던 message 객체의 표현에 추가를 하는데 여러가지의 표현식을 | 파이프 구분 기호를 사용하고. 사용은 맨 처음부터 index 번호를 통해 호출함

- I18n 생성자 옵션에 pluralizationRules 객체 전달
- 복수형 규칙 생산
- 끝자리가 다른 러시아어에 대한 rules 적용 예제

- 컴포넌트에 적용
- $tc(key, num)를 전달하면 해당 로케일에 맞는 값을 찾아 전달할 수 있음.




