크로스 플랫폼 C++ 응용 프로그램에서 작업 중입니다. 그것은 다국어이며 모든 메시지를 사용자 언어로 표시해야합니다. 로케일을 감지하기 위해서 나는 setlocale (LC_ALL, "") 호출을 사용하고있다. 현재의 언어와 국가를 반환합니다 (예 : "ru_RU.UTF-8").Mac OS X에서 setlocale이 작동하지 않습니다.
터미널에서 응용 프로그램을 시작할 때 모든 것이 MacOS 10.9.1에서 문제없이 작동합니다. Finder에서 응용 프로그램을 실행할 때 setlocale은 항상 기본 로케일 ("C")을 리턴합니다. 필자는 LANG 환경 변수가 Finder에 의해 설정되지 않았기 때문에 그런 것 같습니다.
C++ 응용 프로그램의 MacOS X에서 사용자 로케일을 감지하는 올바른 방법은 무엇입니까?
CoreFoundation에 해당하는 CFLocale을 사용할 수 있습니다. – rdb