如何在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
没有找到相关结果
已邀请:
1 个回复
荆怖赡