NSBundle+MJRefresh.m 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. #ifdef MJ_USEING_SPM
  17. NSBundle *containnerBundle = SWIFTPM_MODULE_BUNDLE;
  18. #else
  19. NSBundle *containnerBundle = [NSBundle bundleForClass:[MJRefreshComponent class]];
  20. #endif
  21. // 这里不使用mainBundle是为了适配pod 1.x和0.x
  22. refreshBundle = [NSBundle bundleWithPath:[containnerBundle pathForResource:@"MJRefresh" ofType:@"bundle"]];
  23. }
  24. return refreshBundle;
  25. }
  26. + (UIImage *)mj_arrowImage
  27. {
  28. static UIImage *arrowImage = nil;
  29. if (arrowImage == nil) {
  30. arrowImage = [[UIImage imageWithContentsOfFile:[[self mj_refreshBundle] pathForResource:@"arrow@2x" ofType:@"png"]] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
  31. }
  32. return arrowImage;
  33. }
  34. + (UIImage *)mj_trailArrowImage {
  35. static UIImage *arrowImage = nil;
  36. if (arrowImage == nil) {
  37. arrowImage = [[UIImage imageWithContentsOfFile:[[self mj_refreshBundle] pathForResource:@"trail_arrow@2x" ofType:@"png"]] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
  38. }
  39. return arrowImage;
  40. }
  41. + (NSString *)mj_localizedStringForKey:(NSString *)key
  42. {
  43. return [self mj_localizedStringForKey:key value:nil];
  44. }
  45. + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value
  46. {
  47. static NSBundle *bundle = nil;
  48. if (bundle == nil) {
  49. NSString *language = MJRefreshConfig.defaultConfig.languageCode;
  50. // 如果配置中没有配置语言
  51. if (!language) {
  52. // (iOS获取的语言字符串比较不稳定)目前框架只处理en、zh-Hans、zh-Hant三种情况,其他按照系统默认处理
  53. language = [NSLocale preferredLanguages].firstObject;
  54. }
  55. if ([language hasPrefix:@"en"]) {
  56. language = @"en";
  57. } else if ([language hasPrefix:@"zh"]) {
  58. if ([language rangeOfString:@"Hans"].location != NSNotFound) {
  59. language = @"zh-Hans"; // 简体中文
  60. } else { // zh-Hant\zh-HK\zh-TW
  61. language = @"zh-Hant"; // 繁體中文
  62. }
  63. } else if ([language hasPrefix:@"ko"]) {
  64. language = @"ko";
  65. } else if ([language hasPrefix:@"ru"]) {
  66. language = @"ru";
  67. } else if ([language hasPrefix:@"uk"]) {
  68. language = @"uk";
  69. } else {
  70. language = @"en";
  71. }
  72. // 从MJRefresh.bundle中查找资源
  73. bundle = [NSBundle bundleWithPath:[[NSBundle mj_refreshBundle] pathForResource:language ofType:@"lproj"]];
  74. }
  75. value = [bundle localizedStringForKey:key value:value table:nil];
  76. return [[NSBundle mainBundle] localizedStringForKey:key value:value table:nil];
  77. }
  78. @end