[Localized Number] 1편: 글로벌 서비스 숫자 표기에 대한 고민

baecheese·2021년 2월 15일
0
post-thumbnail

목차


글로벌 서비스를 개발하며 고민해야할 점은 여러가지 호환성입니다.
언어, 문자 포맷, 다국어 키보드 등 국가별로 다른 요소들을 하나의 앱 서비스 안에서 커버하려면 많은 고민이 필요합니다.
특히, 숫자와 관련된 것들(수치, 금액, 날짜 등)에 있어서는 경험 없이 처음부터 고려하기엔 어려운 일들이 있었습니다.

📁 다양한 숫자와 소숫점, 천단위 표기

세상에는 다양한 숫자와 숫자 표기 단위가 존재합니다.

inputoutputgroupingSeparatordecimalSeparator
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,.

위의 표는 국가별로 다른 숫자 표기를 정리해놓은 것입니다.

  • iOS Locale Identifier 별 숫자 표기가 보고싶으시면 링크 를 참고하세요.

이를 보았을 때, 알 수 있는 점은 다음과 같습니다.

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가 숫자 텍스트를 올바르게 변화시켜주는 조건의 범위는 어디까지인지
체크해볼 필요가 있습니다.


🔜 .. 2편에서 계속 .. 🔜

profile
iOS Developer

0개의 댓글