HardBirch

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

时间:12-04-17 栏目:iOS游戏开发技术 作者:张飞不张,文采横飞 评论:4 点击: 2,827 次

 

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

 

声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: 【IOS】多语言资源文件加载的一种解决方案

【IOS】多语言资源文件加载的一种解决方案:目前有4 条留言

  1. 4楼
    ComeOnTom:

    支持楼主

    2012-04-17 10:19 [回复]
  2. 地板
    dongge_111:

    mark

    2012-04-17 10:30 [回复]
  3. 板凳
    yjh4866:

    呀,单例啊,这单例须手动释放哦

    2012-08-24 11:25 [回复]
  4. 沙发
    yjh4866:

    貌似NSLocalizedString就可以做图片、声音的多语言哦。这样:
    //zh-Hant.strings
    "background"="bg_zh-Hant.png";

    //en.string
    "background"="bg_en.png";

    UIImage *image = [UIImage imageNamed:NSLocalizedString(@"background",nil)];

    2012-08-24 11:44 [回复]

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐