NSBundle+MJRefresh.m 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. + (NSString *)mj_localizedStringForKey:(NSString *)key
  30. {
  31. return [self mj_localizedStringForKey:key value:nil];
  32. }
  33. + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value
  34. {
  35. static NSBundle *bundle = nil;
  36. if (bundle == nil) {
  37. NSString *language = MJRefreshConfig.defaultConfig.languageCode;
  38. // 如果配置中没有配置语言
  39. if (!language) {
  40. // (iOS获取的语言字符串比较不稳定)目前框架只处理en、zh-Hans、zh-Hant三种情况,其他按照系统默认处理
  41. language = [NSLocale preferredLanguages].firstObject;
  42. }
  43. if ([language hasPrefix:@"en"]) {
  44. language = @"en";
  45. } else if ([language hasPrefix:@"zh"]) {
  46. if ([language rangeOfString:@"Hans"].location != NSNotFound) {
  47. language = @"zh-Hans"; // 简体中文
  48. } else { // zh-Hant\zh-HK\zh-TW
  49. language = @"zh-Hant"; // 繁體中文
  50. }
  51. } else if ([language hasPrefix:@"ko"]) {
  52. language = @"ko";
  53. } else if ([language hasPrefix:@"ru"]) {
  54. language = @"ru";
  55. } else if ([language hasPrefix:@"uk"]) {
  56. language = @"uk";
  57. } else {
  58. language = @"en";
  59. }
  60. // 从MJRefresh.bundle中查找资源
  61. bundle = [NSBundle bundleWithPath:[[NSBundle mj_refreshBundle] pathForResource:language ofType:@"lproj"]];
  62. }
  63. value = [bundle localizedStringForKey:key value:value table:nil];
  64. return [[NSBundle mainBundle] localizedStringForKey:key value:value table:nil];
  65. }
  66. @end