天天看點

【IOS】多語言資源檔案加載的一種解決方案

 【原創作品, 歡迎轉載,轉載請在明顯處注明! 謝謝。    

  原文位址:http://blog.csdn.net/toss156/article/details/7468288】

IOS上對于字元串,提供能國際化支援,可以用NSLocalizedString來實作國際化,但是對于圖檔,聲音等檔案,就需要我們自己來控制了。下面IOS上多種語言資源檔案加載的一種解決方案,如果大家有什麼更好的想法,歡迎留言告知。

//
//
//  ResManager.h
//
//  Created by 周海鋒 on 12-4-16.
//  Copyright (c) 2012年 CJLU. All rights reserved.
//

#import 
  
   
#import 
   
    

typedef enum  {
    Chinese,
    English,
    Tradition,
    }Language;

@interface ResManager : NSObject
{
    Language language;
}

@property (nonatomic,assign) Language language;

+(ResManager *)ShareManager;
-(UIImage *) LoadImage:(NSString *) img; 
@end

   
  
           
//
//  ResManager.m
//
//  Created by 周海鋒 on 12-4-16.
//  Copyright (c) 2012年 CJLU. All rights reserved.
//

#import "ResManager.h"

@implementation ResManager
@synthesize language;
static ResManager * resManger = nil;

+(ResManager *)ShareManager
{
    @synchronized(self) {
        if (resManger == nil) {
           resManger = [[self alloc] init];
        }
    }
    return resManger;
}

//唯一一次alloc單例,之後均傳回nil
+ (id)allocWithZone:(NSZone *)zone
{
    @synchronized(self) {
        if (resManger == nil) {
            resManger = [super allocWithZone:zone];
            return resManger;
        }
    }
    return nil;
}

//copy傳回單例本身
- (id)copyWithZone:(NSZone *)zone
{
    return self;
}

-(id) init
{
    if (self = [super init]) {
        language = Chinese;
    }
    return self;
}

-(UIImage *) LoadImage:(NSString *) name
{
    
    switch (language) {
        case Chinese:
            name = [name stringByAppendingString:@"_c.png"];
            break;
        case English:
            name = [name stringByAppendingString:@"_e.png"];
            break;
        case Tradition:
            name = [name stringByAppendingString:@"_t.png"];
            break;
        default:
            break;
    }
    UIImage *image = [UIImage imageNamed:name];
    return image;
}

@end