목차
글로벌 서비스를 개발하며 고민해야할 점은 여러가지 호환성입니다.
언어, 문자 포맷, 다국어 키보드 등 국가별로 다른 요소들을 하나의 앱 서비스 안에서 커버하려면 많은 고민이 필요합니다.
특히, 숫자와 관련된 것들(수치, 금액, 날짜 등)에 있어서는 경험 없이 처음부터 고려하기엔 어려운 일들이 있었습니다.
세상에는 다양한 숫자와 숫자 표기 단위가 존재합니다.
input | output | groupingSeparator | decimalSeparator |
---|---|---|---|
Double(123456789.123) | 123,456,789.123 | , | . |
123 456 789,123 | , | ||
१२३,४५६,७८९.१२३ | , | . | |
১২,৩৪,৫৬,৭৮৯.১২৩ | , | . | |
١٢٣٬٤٥٦٬٧٨٩٫١٢٣ | ٬ | ٫ | |
۱۲۳٬۴۵۶٬۷۸۹٫۱۲۳ | ٬ | ٫ | |
१२,३४,५६,७८९.१२३ | , | . | |
12,34,56,789.123 | , | . | |
123 456 789.123 | . | ||
123.456.789,123 | . | , | |
၁၂၃,၄၅၆,၇၈၉.၁၂၃ | , | . | |
123’456’789.123 | ’ | . | |
123456789.123 | , | . |
위의 표는 국가별로 다른 숫자 표기를 정리해놓은 것입니다.
이를 보았을 때, 알 수 있는 점은 다음과 같습니다.
1. 아라비아 숫자 외의 다른 특수 숫자 존재
- 한국에서 보통 쓰는123,456,789.123
와 같은 형태 이외에도१२३,४५६,७८९.१२३
,১২,৩৪,৫৬,৭৮৯.১২৩
등 여러가지 숫자 형태가 쓰이는 것을 알 수 있다.2. groupingSeparator, decimalSeparator의 구분 문자가 국가별로 다름
- groupingSeparator, decimalSeparator도 국가별로 다양하다.
- 예를 들어,1.234
이라는 텍스트가 있을 때, 어떤 나라에서는1 + 0.234 (일 점 이삼사)
이지만, 어떤 나라에서는1234 (천 이백 삼십 사)
가 될 수 있다는 것이다.3. groupingSeparator가 모두 천단위 구분으로 사용되는 것이 아님
-12,34,56,789.123
,১২,৩৪,৫৬,৭৮৯.১২৩
등을 보면 알 수 있다.
- 문서를 보니, thousandSeparator는 MacOS개발에서 사용 가능하다. (참고)
이렇게 숫자는 국가와 언어에 따라 다른 포맷으로 표기됩니다.
이를 고려하지 않고 개발을 했을 때, 생길 수 있는 이슈는 정말 많습니다. (흑흑..)
마음 같아서는 하나로 우겨넣고 싶지만
하나의 국가, 언어로만 제공되는 서비스가 아닌 이상 하나로 고정할 수 없는 것이 현실이며,
서비스 국가가 추가되어도 업데이트나 장애 없이 유연하게 대응될 수 있어야 합니다.
때문에 올바른 포맷의 숫자 텍스트를 input 했을 때,
원하는 국가/언어의 숫자 포맷으로 output 해주는 기능이 필요하다고 생각했습니다.
또한 올바르지 않은 포맷의 숫자 텍스트일 경우,
잘못된 변환 값이 아닌 에러를 리턴할 수 있어야 합니다.
이를 위해서는 올바른 숫자/올바르지 않은 숫자 포맷이란 무엇인지,
NumberFormatter가 숫자 텍스트를 올바르게 변화시켜주는 조건의 범위는 어디까지인지
체크해볼 필요가 있습니다.