首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mac OS X中的setlocale不起作用

Mac OS X中的setlocale不起作用
EN

Stack Overflow用户
提问于 2014-01-08 21:05:35
回答 1查看 1.3K关注 0票数 5

我正在开发跨平台的C++应用程序。它是多语言的,必须以usera语言显示所有消息。为了检测区域设置,我使用了setlocale(LC_ALL,"")调用。它返回当前语言和国家,例如在我的例子中是"ru_RU.UTF-8“。

当我从终端启动我的应用程序时,在MacOS 10.9.1中一切正常。当我从Finder运行我的应用程序时,setlocale总是返回默认语言环境("C")。我怀疑这是因为LANG环境变量不是由Finder设置的。

在C++应用程序中检测MacOS X下的用户区域设置的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-01-09 10:58:38

看起来MacOS中的setlocale函数被破坏了,而且没有可用的C语言替代方法。我通过将Objective-C++模块添加到使用NSLocale对象的应用程序中解决了这个问题:

代码语言:javascript
运行
复制
    std::string localeStr([[[NSLocale currentLocale] localeIdentifier] UTF8String]);

稍后,我将localeStr传递给C++代码,而不是setlocale结果。

它工作得很完美,但我对它并不是百分之百满意,因为我不喜欢只为一行代码使用Objective-C++。如果有人知道更好的解决方法,欢迎您。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20996518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档