导航

【IOS】多语言资源文件加载的一种解决方案

Posted on 2012-09-24 13:48  xwren362922604  阅读(279)  评论(0编辑  收藏  举报

转载原文地址:http://blog.csdn.net/toss156/article/details/7468288

 

IOS上对于字符串,提供能国际化支持,可以用NSLocalizedString来实现国际化,但是对于图片,声音等文件,就需要我们自己来控制了。下面IOS上多种语言资源文件加载的一种解决方案,如果大家有什么更好的想法,欢迎留言告知。

  1. //  
  2. //  
  3. //  ResManager.h  
  4. //  
  5. //  Created by 周海锋 on 12-4-16.  
  6. //  Copyright (c) 2012年 CJLU. All rights reserved.  
  7. //  
  8.   
  9. #import <foundation foundation="" h="">  
  10. #import <uikit uikit="" h="">  
  11.   
  12. typedef enum  {  
  13.     Chinese,  
  14.     English,  
  15.     Tradition,  
  16.     }Language;  
  17.   
  18. @interface ResManager : NSObject  
  19. {  
  20.     Language language;  
  21. }  
  22.   
  23. @property (nonatomic,assign) Language language;  
  24.   
  25. +(ResManager *)ShareManager;  
  26. -(UIImage *) LoadImage:(NSString *) img;   
  27. @end  
  28. </uikit></foundation>  

  1. //  
  2. //  ResManager.m  
  3. //  
  4. //  Created by 周海锋 on 12-4-16.  
  5. //  Copyright (c) 2012年 CJLU. All rights reserved.  
  6. //  
  7.   
  8. #import "ResManager.h"  
  9.   
  10. @implementation ResManager  
  11. @synthesize language;  
  12. static ResManager * resManger = nil;  
  13.   
  14. +(ResManager *)ShareManager  
  15. {  
  16.     @synchronized(self) {  
  17.         if (resManger == nil) {  
  18.            resManger = [[self alloc] init];  
  19.         }  
  20.     }  
  21.     return resManger;  
  22. }  
  23.   
  24. //唯一一次alloc单例,之后均返回nil  
  25. + (id)allocWithZone:(NSZone *)zone  
  26. {  
  27.     @synchronized(self) {  
  28.         if (resManger == nil) {  
  29.             resManger = [super allocWithZone:zone];  
  30.             return resManger;  
  31.         }  
  32.     }  
  33.     return nil;  
  34. }  
  35.   
  36. //copy返回单例本身  
  37. - (id)copyWithZone:(NSZone *)zone  
  38. {  
  39.     return self;  
  40. }  
  41.   
  42. -(id) init  
  43. {  
  44.     if (self = [super init]) {  
  45.         language = Chinese;  
  46.     }  
  47.     return self;  
  48. }  
  49.   
  50. -(UIImage *) LoadImage:(NSString *) name  
  51. {  
  52.       
  53.     switch (language) {  
  54.         case Chinese:  
  55.             name = [name stringByAppendingString:@"_c.png"];  
  56.             break;  
  57.         case English:  
  58.             name = [name stringByAppendingString:@"_e.png"];  
  59.             break;  
  60.         case Tradition:  
  61.             name = [name stringByAppendingString:@"_t.png"];  
  62.             break;  
  63.         default:  
  64.             break;  
  65.     }  
  66.     UIImage *image = [UIImage imageNamed:name];  
  67.     return image;  
  68. }  
  69.   
  70. @end