NSLocale 和 NSLocalizedString

1.获取手机当前的语言环境
NSArray *languagesArr = [NSLocale preferredLanguages];
NSString *currentLanguage = [languagesArr[0] componentsSeparatedByString:@"-"].firstObject;
 //[NSLocale ISOLanguageCodes]可获取世界上所有语言代号(小写字母)
self.title = [currentLanguage isEqualToString:@"zh"] ? @"商城" : @"Shop";
2.获取手机当前的位置(国家)
    NSLocale *currentLocale = [NSLocale currentLocale];
    NSString *countryCode = [currentLocale objectForKey:NSLocaleCountryCode]; 
//此处objectForKey是NSLocale的对象方法,并非字典

    if ([countryCode isEqualToString:@"CN"]) { //当前位置是否中国
        [TSUserDefaults setIsChina:YES];
    }else{
        [TSUserDefaults setIsChina:NO];
    }

    //注:[NSLocale ISOCountryCodes]可获取所有国家代号(大写字母)
3.ios项目常用的国际化方法

    /**  NSBundle.h中定义了如下几个宏:
     
     #define NSLocalizedString(key, comment) \
     [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil]
     #define NSLocalizedStringFromTable(key, tbl, comment) \
     [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:(tbl)]
     #define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \
     [bundle localizedStringForKey:(key) value:@"" table:(tbl)]
     #define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \
     [bundle localizedStringForKey:(key) value:(val) table:(tbl)]

     */
    
    //国际化是ios提供的一个宏,定义在NSBundle.h文件中,跟以上的NSLocale没有关系。用法如下
    NSLocalizedString(@"中国", nil);

4. NSLocale和NSLocalizedString配合使用举例

实现目标:App已经支持了中英法德俄语言,其他语言环境用英文显示

  NSArray *languagesArr = [NSLocale preferredLanguages];
  NSString *currentLanguage = [languagesArr[0] componentsSeparatedByString:@"-"].firstObject;
 
    if ([currentLanguage wz_IsEqualToString:@"zh"]||
        [currentLanguage wz_IsEqualToString:@"en"]||
        [currentLanguage wz_IsEqualToString:@"fr"]||
        [currentLanguage wz_IsEqualToString:@"de"]||
        [currentLanguage wz_IsEqualToString:@"ru"]||
    {
        NSString *string = NSLocalizedString(keyString, nil);
        return string;
    }
    else {
        
        if (fileName) {//从指定文件中获取对应的本地化字符
            return  NSLocalizedStringFromTable(keyString, fileName, nil);
        }
        else //如果fileName为nil,那么就默认在英文本地化table中查找
        {
            return  NSLocalizedStringFromTable(keyString, @"Localizable_EN", nil);
        }
    }

你可能感兴趣的:(NSLocale 和 NSLocalizedString)