본문 바로가기

iOS

아랍어 Localization 추가 시 발생하는 아주 의외의 문제

현재 만들고 있는 앱이 한국에 사는 무슬림들을 위한 앱이기 때문에 아랍어 Localizable file을 추가했다.

 

Localization은 전에 적용해 본 적이 있는 터라 문제없이 잘 했지만.....

아랍어로 변경시 특정 뷰에서 앱이 죽어버리는 아주 큰일이 발생해버린 것이다...!!!

 

영어버전의 정상작동 시

무슬림들의 기도시간을 api로 받아와 나타내는 페이지이다.

앱의 언어 설정이 영어일 경우엔 위와 같이 문제가 없이 나타나는데, 아랍어로 할 경우엔 저 페이지에서 앱이 죽어버리고 만다...'

 

Localizable 파일을 완벽하게 작성한게 아니라서 그런가 했다(근데 형식만 맞추면 앱이 죽을 일은 사실 없다는 것을 알고 있었다)

확인해보니 역시 아니였고...

 

이후 예측이 되는 문제점은 두가지였다.

1. 아랍어를 고려해서 왼쪽에서 오른쪽으로 UI가 뒤집어져도 무리가 없는 reversable한 UI를 계획했지만, 실수가 있었다?
2. API 호출문제?

1번과 같은 경우는 혹시 모를 경우에 대비해 전부 padding(.horizontal) 혹은 Spacer()과 같이 유기적으로 UI를 그릴 수 있는 요소들로 Cell의 코드를 짜놓았기 때문에 전혀 문제가 없었고, UI디자인 없이 텍스트만 나열했을 때에도 같은 문제가 발생하는 것을 확인할 수 있었다.

 

그리고 2번 문제를 확인하기 위해 Cell을 불러내지 않고 onAppear에 fetch함수만 call을 해놨다.

그리고... 문제 발견! 

정답은 API가 정상적으로 호출이 되지 않는 것이었다. 근데 왜...? 그리고 난 불현듯 불길한 예감이 들기 시작했다....

수능 아랍어 만점 득점자로서 그것은 아주 아주 불길하지만 아주 아주 정확한 예감이었다... 바로....

동아라비아 숫자ㅋㅋ;;

 

아랍어은 왼쪽에서 오른쪽으로 읽는 것 뿐만 아니라 숫자를 쓰는 방식도 우리와 다른데, 이미지의 윗 숫자들이 바로 아랍어 문화권에서 사용되는 동아라비아 숫자이다!!!! 수능 아랍어의 단골문제ㅋㅋㅋㅋ

 

그리고 난 바로 콘솔에 프린트 해보았다...

찾았다 요자식

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ충격

해결책을 찾던 중 DateFormatter 의 요소들을 영어로 locale을 해주면 될거같다는 아이디어가 떠올랐고, 적용해보았다.

       let englishLocale = Locale(identifier: "en_US_POSIX")
        formatter.locale = englishLocale

다음과 같이 년도, 월, 일 등을 모두 포맷 후 locale해주었다.

 

결과는...

성공!

성공했다~ 그리고 현대 아랍문화권에선 전자시계, 핸드폰 등에는 다 서아라비아숫자를 사용하기 때문에 숫자는 그대로 냅두는 걸로 했다...후....

처음 출시한 앱을 개발할 때도 느낀 것이지만.... Locale할때는 꺼진 불도 다시보자...!!!!