如何在C ++中获取iPhone上的语言环境?

在Objective-C中,我所看到的关于iPhone本地化的一切都不出所料。我正在研究的项目已经使用几乎完全C ++编写并在iPhone上工作,我们已经有一些完整的翻译。我们现在需要的是找出语言环境/语言代码的方法。在计算机上,这是使用
getenv
,检查“LANG”,或者如果没有设置“LC_ALL”。这似乎不适用于iPhone(既没有设置为任何东西),所以我需要一些其他方法。 据我所知,使用Objective-C的最佳方法是:
NSString* languageCode = [[NSLocale preferredLanguages] objectAtIndex:0];
但是后来我必须从
NSString*
转换为
char*
/
std::string
(这可以做到,但它通常很烦人/凌乱)。所以我想知道,是否有更简单的方法直接从C ++获取语言环境? 这是我最终做的事情:
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
        #include <CoreFoundation/CoreFoundation.h>
#endif
/* ... */
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
        CFArrayRef localeIDs = CFLocaleCopyPreferredLanguages();
        if (localeIDs)
        {
            CFStringRef localeID = (CFStringRef)CFArrayGetValueAtIndex(localeIDs, 0);
            char tmp[16];
            if (CFStringGetCString(localeID, tmp, 16, kCFStringEncodingUTF8))
                locale = std::string(tmp); //this is the std::string
            CFRelease(localeIDs);
        }
#endif
    
已邀请:
可能你想使用CFLocaleGetValue()     

要回复问题请先登录注册