您的位置:首页 > 移动开发 > IOS开发

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

2012-09-24 13:48 351 查看
转载原文地址:/article/1358361.html

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

[cpp] view
plaincopy

//

//

// ResManager.h

//

// Created by 周海锋 on 12-4-16.

// Copyright (c) 2012年 CJLU. All rights reserved.

//

#import <foundation foundation="" h="">

#import <uikit uikit="" h="">

typedef enum {

Chinese,

English,

Tradition,

}Language;

@interface ResManager : NSObject

{

Language language;

}

@property (nonatomic,assign) Language language;

+(ResManager *)ShareManager;

-(UIImage *) LoadImage:(NSString *) img;

@end

</uikit></foundation>

[cpp] view
plaincopy

//

// 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: