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

 【原创作品, 欢迎转载,转载请在明显处注明! 谢谢。    

  原文地址:http://blog.youkuaiyun.com/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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值