💻 Frontend

L10n 리서치 및 국가별 화폐 및 복수형 구현

date
Dec 5, 2022
slug
L10n-currency
author
status
Public
tags
Vue.js
Web
I18n
summary
Locallization 스터디, currency 화폐 표기하기, 국가별 Plural 복수형 표기하기
type
Post
thumbnail
스크린샷 2023-04-12 오후 6.21.51.png
category
💻 Frontend
updatedAt
Apr 12, 2023 09:34 AM
[목차]
 

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) 국가별 복수형 표기

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

3-2) Intl 객체이용

Intl.PluralRules()
notion image
  • plural check (new Intl.PluralRules(Locale).select(number))
    • zero, one, few, many로 plural을 체크해줌.
    • 다만, 아랍어 같이 불규칙한 형태가 많아 커스텀이 필요할 경우 사용이 까다롭다
  • suffixe maping
    • map으로 각 plural의 경우의 수에 따른 복수형 표기를 매칭해준다.

3-3) vuei18n pluralization 메서드

vuei18n pluralization
  • messages 인수에 추가
    • notion image
    • 위의 작업을 vuei18n에서는 좀 더 간편하게 사용할 수 있다.
    • 기존에 만들었던 message 객체의 표현에 추가를 하는데 여러가지의 표현식을 | 파이프 구분 기호를 사용하고. 사용은 맨 처음부터 index 번호를 통해 호출함
  • I18n 생성자 옵션에 pluralizationRules 객체 전달
    • 복수형 규칙 생산
    • 끝자리가 다른 러시아어에 대한 rules 적용 예제
      • notion image
  • 컴포넌트에 적용
    • $tc(key, num)를 전달하면 해당 로케일에 맞는 값을 찾아 전달할 수 있음.
      • notion image