Unity3D/Trouble Shooting

[iOS] 아이폰 언어 태국어로 사용 시, 실행 오류 이슈

blueasa 2020. 9. 14. 14:06

[문제원인]

  • 유니티에서 사용하는 C#에서 DateTime을 사용하여 달력정보를 가져올 경우 태국어에서 문제 발생.
    • 역법의 차이에서 문제가 발생.
    • 대부분의 국가는 그레고리력을 사용중이지만, 태국은 태국역법을 사용하여, 543년의 차이 발생.

         * 표준 불력은 석가모니 입적인 기원전 544년을 기준으로 사용. 태국은 이 표준불력에서 1년의 차이 발생.

  • 서버에서 내려주는 달력정보 스트링을 파싱하는 과정에서 태국어일 경우 문제 발생.
    • 스트링 포맷의 차이를 제대로 인지하지 못하고 파싱 실패. (표기 방법 상이)

 

[해결방안]

  • 클라이언트가 시스템 시간정보를 읽어 올 때, 태국어 예외 처리.

            DateTime lTime = DateTime.Now;
            if (System.Threading.Thread.CurrentThread.CurrentCulture.Name == "th-TH" 

            && Application.platform == RuntimePlatform.IPhonePlayer)
            {
                lTime = lTime.AddYears(-543);
            }

           서버에서 사용하는 그레고리력으로 통일

  • 서버에서 내려주는 달력정보의 스트링을 파싱하는 함수 변경. (포맷을 명확히 지정)

           String lCalendar = "";

           DateTime.Parse(lCalendar)  -> DateTime.ParseExact( lCalendar, "yyyy-MM-ddTHH:mm:ss.fffZ", null);

           서버에서 내려주는 포맷을 일치 시킬수 있도록 주의

 

 

반응형