NSBundle+MJRefresh.m 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. //
  2. // NSBundle+MJRefresh.m
  3. // MJRefreshExample
  4. //
  5. // Created by MJ Lee on 16/6/13.
  6. // Copyright © 2016年 小码哥. All rights reserved.
  7. //
  8. #import "NSBundle+MJRefresh.h"
  9. #import "MJRefreshComponent.h"
  10. #import "MJRefreshConfig.h"
  11. @implementation NSBundle (MJRefresh)
  12. + (instancetype)mj_refreshBundle
  13. {
  14. static NSBundle *refreshBundle = nil;
  15. if (refreshBundle == nil) {
  16. // 这里不使用mainBundle是为了适配pod 1.x和0.x
  17. refreshBundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[MJRefreshComponent class]] pathForResource:@"MJRefresh" ofType:@"bundle"]];
  18. }
  19. return refreshBundle;
  20. }
  21. + (UIImage *)mj_arrowImage
  22. {
  23. static UIImage *arrowImage = nil;
  24. if (arrowImage == nil) {
  25. arrowImage = [[UIImage imageWithContentsOfFile:[[self mj_refreshBundle] pathForResource:@"arrow@2x" ofType:@"png"]] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
  26. }
  27. return arrowImage;
  28. }
  29. + (UIImage *)mj_trailArrowImage {
  30. static UIImage *arrowImage = nil;
  31. if (arrowImage == nil) {
  32. arrowImage = [[UIImage imageWithContentsOfFile:[[self mj_refreshBundle] pathForResource:@"trail_arrow@2x" ofType:@"png"]] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
  33. }
  34. return arrowImage;
  35. }
  36. + (NSString *)mj_localizedStringForKey:(NSString *)key
  37. {
  38. return [self mj_localizedStringForKey:key value:nil];
  39. }
  40. + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value
  41. {
  42. static NSBundle *bundle = nil;
  43. if (bundle == nil) {
  44. NSString *language = MJRefreshConfig.defaultConfig.languageCode;
  45. // 如果配置中没有配置语言
  46. if (!language) {
  47. // (iOS获取的语言字符串比较不稳定)目前框架只处理en、zh-Hans、zh-Hant三种情况,其他按照系统默认处理
  48. language = [NSLocale preferredLanguages].firstObject;
  49. }
  50. if ([language hasPrefix:@"en"]) {
  51. language = @"en";
  52. } else if ([language hasPrefix:@"zh"]) {
  53. if ([language rangeOfString:@"Hans"].location != NSNotFound) {
  54. language = @"zh-Hans"; // 简体中文
  55. } else { // zh-Hant\zh-HK\zh-TW
  56. language = @"zh-Hant"; // 繁體中文
  57. }
  58. } else if ([language hasPrefix:@"ko"]) {
  59. language = @"ko";
  60. } else if ([language hasPrefix:@"ru"]) {
  61. language = @"ru";
  62. } else if ([language hasPrefix:@"uk"]) {
  63. language = @"uk";
  64. } else {
  65. language = @"en";
  66. }
  67. // 从MJRefresh.bundle中查找资源
  68. bundle = [NSBundle bundleWithPath:[[NSBundle mj_refreshBundle] pathForResource:language ofType:@"lproj"]];
  69. }
  70. value = [bundle localizedStringForKey:key value:value table:nil];
  71. return [[NSBundle mainBundle] localizedStringForKey:key value:value table:nil];
  72. }
  73. @end