我正在开发跨平台的C++应用程序。它是多语言的,必须以用户语言显示所有消息。为了检测区域设置,我使用setlocale(LC_ALL, "")调用。它返回当前的语言和国家/地区,例如在我的情况下是 "ru_RU.UTF-8"。
当我从终端启动我的应用程序时,在MacOS 10.9.1上一切都正常工作。但是当我从Finder运行我的应用程序时,setlocale总是返回默认的区域设置("C")。我怀疑这是因为Finder没有设置LANG环境变量。
在C++应用程序中,检测MacOS X下的用户区域设置的正确方法是什么?