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. 为什么Xcode 6.1在IOS 8模拟器中死亡[NSLocale preferredLanguages]
- 3. 在iOS 9
- 4. iOS中8和iOS 9
- 5. iOS 9 - “domainIdentifier”for CSSearchableItem
- 6. iOS 9/10 NavigationController Difference
- 7. iOS 9 Swift 2.0 UITextFieldDidChange
- 8. UITabBarItem - 在iOS版9
- 9. 转换MPMediaItemArtwork从iOS的10到iOS 9
- 10. iOS应用轰然的iOS 9
- 11. 的iOS 9 supportedInterfaceOrientations不工作
- 12. iOS之前的Xamarin UIStackView 9
- 13. iOS 9的黑色屏幕
- 14. 的iOS 9 - NSAllowsArbitraryLoads范围
- 15. ios 9中的Spotlight扩展
- 16. 设置碰撞的iOS 9
- 17. iOS 9在iOS 9中旋转后,UINavigation栏内容不居中?
- 18. iOS 9和iOS 10 CoreData同时
- 19. addSubview - iOS设备8 VS iOS版9
- 20. didRegisterForRemoteNotificationsWithDeviceToken没有在IOS 9
- 21. 登录Facebook之前iOS 9
- 22. iOS 9 - NSUserDefault未设置
- 23. NSCurl ATS工作,IOS 9不
- 24. iOS 9 ATS白名单
- 25. iOS 9 ATS和Firebase REST
- 26. IOS编码ISO-8859-9
- 27. iOS 9 Webview只加载HTML
- 28. iOS 9 Safari视口错误
- 29. EXC_BAD_ACCESS随机位置iOS 9
- 30. iOS 10/9推送通知
它的作品!非常感谢 – Mansour
请小心使用此解决方案,因为它可能无法正常工作。 zh-Hans-US将导致zh,而语言是zh-Hans。最后一次出现“ - ”时切断。 – endowzoner