3
A
回答
3
如果language
将返回其他值这样的 “FR-FR” 和 “FR-CA”,那么你应该在-
字符分割language
。即使你只是得到“fr”,这也可以工作。
NSString *firstLanguage = [[NSLocale preferredLanguages] firstObject];
NSString *language = [[firstLanguage componentsSeparatedByString:@"-"] firstObject];
if ([language isEqualToString:@"fr"]) {
} else {
}
1
嘿,不要做这样的定位时设置为不同的区域像es-mx
和es-cl
语言不同它将创建问题。在这种情况下,上述解决方案会产生问题 使用下面的解决方案代码:
NSString *selectedLanguage = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];
如果您已经从设置,但您的应用程序只有zh-Hans-TW
和zh-Hans-CN
选择zh-Hans-US
。以上代码将返回您"zh-Hans-TW"
第一首选本地化。
试试这可能对你有用。
0
贴上我的代码在这里,也许帮助您
- (NSString *)localizedStringForKey:(NSString *)key withDefault:(NSString *)defaultString
{
static NSBundle *bundle = nil;
if (bundle == nil)
{
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"your_resources" ofType:@"bundle"];
bundle = [NSBundle bundleWithPath:bundlePath] ?: [NSBundle mainBundle];
//manually select the desired lproj folder
for (NSString *language in [NSLocale preferredLanguages])
{
for (NSString *loc in [bundle localizations]) {
if ([language hasPrefix:loc])
{
bundlePath = [bundle pathForResource:loc ofType:@"lproj"];
bundle = [NSBundle bundleWithPath:bundlePath];
goto getString;
}
}
}
}
getString:
defaultString = [bundle localizedStringForKey:key value:defaultString table:nil];
return [[NSBundle mainBundle] localizedStringForKey:key value:defaultString table:nil];
}
1
你不应该分裂NSLocale。 NSLocale有一些键,您可以用objectForKey:
检索在您的例子,你可以写:
[[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]
isEqualToString:@"fr"]
[NSLocale currentLocale]
其实是一样的[[NSLocale preferredLanguages] firstObject]
但其中小数点分隔一些额外的信息,你可以检索应该使用哪种货币符号。
其他相关Keys可以在苹果的class reference中找到。
0
我对我的代码修复很简单:
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSRange range = [language rangeOfString:@"-" options:NSBackwardsSearch];
NSString * languageMark = [language substringToIndex:range.location];
相关问题
- 1. `NSLocale preferredLanguages`包含 “美”,因为iOS的9
- 2. 的iOS 9:edgesForExtendedLayout
- 3. [NSLocale preferredLanguages]返回空吗?
- 4. [NSLocale preferredLanguages]如何工作?
- 5. 为什么Xcode 6.1在IOS 8模拟器中死亡[NSLocale preferredLanguages]
- 6. ios 9 + Xcode 7
- 7. 在iOS 9
- 8. iOS 9 UIInputViewController dismissKeyboard
- 9. iOS中8和iOS 9
- 10. 的iOS 9故障的UILabel
- 11. iOS 9 Compatiblity问题
- 12. iOS 9 Swift 2.0 UITextFieldDidChange
- 13. iOS 9/10 NavigationController Difference
- 14. UITabBarItem - 在iOS版9
- 15. KeychainTouchID iOS 8和9
- 16. iOS 9 - “domainIdentifier”for CSSearchableItem
- 17. ReloadSections崩溃:iOS 9
- 18. 如何在IOS 9
- 19. 转换MPMediaItemArtwork从iOS的10到iOS 9
- 20. iOS应用轰然的iOS 9
- 21. 的iOS 9 - NSAllowsArbitraryLoads范围
- 22. 的iOS 9 supportedInterfaceOrientations不工作
- 23. 设置碰撞的iOS 9
- 24. ios 9中的Spotlight扩展
- 25. iOS 9的黑色屏幕
- 26. IOS 9 - 调用的cellForRowAtIndexPath时
- 27. 的Facebook SDK 4.5 IOS 9
- 28. iOS之前的Xamarin UIStackView 9
- 29. iOS 9在iOS 9中旋转后,UINavigation栏内容不居中?
它的作品!非常感谢 – Mansour
请小心使用此解决方案,因为它可能无法正常工作。 zh-Hans-US将导致zh,而语言是zh-Hans。最后一次出现“ - ”时切断。 – endowzoner