美文网首页
NSLocale 和 NSLocalizedString

NSLocale 和 NSLocalizedString

作者: Steven_Wu | 来源:发表于2017-01-14 21:58 被阅读221次
    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

          本文链接:https://www.haomeiwen.com/subject/kbuebttx.html