美文网首页
iOS 应用内可随时切换语言时,MJRefresh下拉文字的处理

iOS 应用内可随时切换语言时,MJRefresh下拉文字的处理

作者: 豪冷 | 来源:发表于2019-08-13 09:53 被阅读0次

    MJRefresh文件夹内,NSBundle+MJRefresh.m 里面有一段注释:

    //(iOS获取的语言字符串比较不稳定)目前框架只处理enzh-Hanszh-Hant三种情况,其他按照系统默认处理

    这个不是重点,重点是它在这个方法里面:

    + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value
    {
    //把if条件注释掉,因为 应用内部可以随时切换语言。
    }
    

    具体操作:

    + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value
    
    {
        staticNSBundle *bundle = nil;
    
        //注释掉判断 因为应用内部可以随时切换语言
        //if (bundle == nil) {
    #if 1
           //获取切换所选择的语言
           NSString *language = [[NSUserDefaultsstandardUserDefaults] objectForKey:@"jhAppLanguage"];
    #else
            //(iOS获取的语言字符串比较不稳定)目前框架只处理en、zh-Hans、zh-Hant三种情况,其他按照系统默认处理
            NSString *language = [NSLocale preferredLanguages].firstObject;
    #endif
            if ([languagehasPrefix:@"en"]) {
                language =@"en";
            } elseif ([language hasPrefix:@"zh"]) {
                if ([languagerangeOfString:@"Hans"].location !=NSNotFound) {
                    language =@"zh-Hans"; //简体中文
                } else { // zh-Hant\zh-HK\zh-TW
                    language =@"zh-Hant"; //繁體中文
                }
            } else {
                language =@"en";
            }
            //从MJRefresh.bundle中查找资源
            bundle = [NSBundlebundleWithPath:[[NSBundlemj_refreshBundle] pathForResource:languageofType:@"lproj"]];
    
        //}
    
        value = [bundle localizedStringForKey:key value:valuetable:nil];
        return [[NSBundlemainBundle] localizedStringForKey:keyvalue:value table:nil];
    
    }
    

    0行代码搞定空白占位图:

    https://github.com/xjh093/JHNoDataEmptyViewForT-C


    相关文章

      网友评论

          本文标题:iOS 应用内可随时切换语言时,MJRefresh下拉文字的处理

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