iOS 10 获取当前系统语言的一些变化

项目需要根据用户的首选语言来选择切换繁体或者简体

那么如何获取首选语言?

  NSArray *languages = [NSLocale preferredLanguages]; 

  NSString *currentLanguage = [languages objectAtIndex:0];  

  NSLog( @"%@" , currentLanguage);  

或者

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

NSArray * allLanguages = [defaults objectForKey:@"AppleLanguages"];

NSString * preferredLang = [allLanguages objectAtIndex:0];

但是返回的值在不同的系统版本略有些不同,以下是详细的列表

iOS7

zh-Hans: 简体
zh-Hant: 繁体

iOS8

zh-Hans: 简体
zh-Hant: 繁体
zh-HK: 香港繁体(增加)

iOS9

zh-Hans-CN: 简体(改变)
zh-Hant-CN: 繁体(改变)
zh-HK: 香港繁体
zh-TW: 台湾繁体(增加)

iOS 10

zh-Hans-CN 简体
yue-Hans-CN 粤语 简体 (增加)
yue-Hant-CN 粤语 繁体 (增加)
zh-Hant-CN 繁体
zh-Hant-MO 澳门繁体 (改变)
zh-Hant-TW 台湾繁体 (改变)
zh-Hant-HK 香港繁体 (改变)

参考的判断代码

BOOL isZhHans()
{
      NSString *pfLanguageCode = [NSLocale preferredLanguages][0];
      if ([pfLanguageCode isEqualToString:@"zh-Hans"] ||
      [pfLanguageCode hasPrefix:@"yue-Hans"] ||
      [pfLanguageCode hasPrefix:@"zh-Hans"])
      {
          return YES;
      }
       else
      {
          return NO;
      }
}


  BOOL isZhHant()
  {
        NSString *pfLanguageCode = [NSLocale preferredLanguages][0];
        if ([pfLanguageCode isEqualToString:@"zh-Hant"] ||
          [pfLanguageCode hasPrefix:@"zh-Hant"] ||
          [pfLanguageCode hasPrefix:@"yue-Hant"] ||
          [pfLanguageCode isEqualToString:@"zh-HK"] ||
          [pfLanguageCode isEqualToString:@"zh-TW"]
          )
          {
               return YES;
          }
          else
          {
              return NO;
          }

}

你可能感兴趣的:(iOS 10 获取当前系统语言的一些变化)