기개발된 API 중 일부에 앱 버전 코드를 새로운 파라메터로 추가하였습니다. (안드로이드 앱에서 버전 코드는 정수(integer)이지만, iOS 앱에서 버전 코드는 실수(real)입니다. 이런 이유로 이 파라메터의 데이터 타입(data type)은 double로 정했습니다. 앱으로 테스트하여 변경된 API가 잘 작동됨을 확인했습니다. 문제는요... 다른 언어로 변경 후 앱에서 카드 리스트를 불러오지 못한다는 버그 리포트를 받았습니다.
원인
버그의 원인은 일부언어에서는 실수에서 소수점을 . 대신 ,를 쓰기 때문이었습니다. 안드로이드 앱 코드를 보면요.
double versionCode = (double)context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode;
String params = String.format(
"os=%s&version_code=%s",
"android",
versionCode
);
versionCode의 값이 1.0이고 현재 언어가 베트남어이면, params 변수의 값은 다음과 같습니다.
os=android&version_code=1,0000
위 파라메터를 서버에 보내면, 서버에서는 version_code의 데이터 타입이 double이 아니므로 API를 실행하지 않습니다. 이로 인해 앱은 서버로부터 응답을 받지 못하고 멈춰있는 것입니다.
해결
String.format 메소드의 첫번째 파라메터를 대한민국을 의미하는 Locale 상수로 설정하였습니다. 위 코드는 다음과 같이 변경합니다.
double versionCode = (double)context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode;
String params = String.format(
Locale.KOREA,
"os=%s&version_code=%s",
"android",
versionCode
);
그 결과, 버전코드의 소수점이 .으로 나옵니다.
마치며...
저번에 폰트 문제에서도 그랬듯이 다국어 앱을 만들려면, 신경써야 할 점들이 늘어납니다. 다국어 관련 이슈는 의외로 찾기가 쉽지 않은 내용이죠. 이런 주제를 대상으로 정리를 해나가는 것도 좋을 거 같습니다. 새로운 경험을 하는대로 포스트를 써갈 예정입니다.
sbi3님이 dorian-dev님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
sbi3님의 Weekly Upvote Report
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
아낌없이주는 나무에 대한 후원으로 왔어요. 미약하나마 보팅 하고 가요.
Posted using Partiko Android
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
아낌없는 나무 후원이요!
Posted using Partiko Android
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit