国际化

来源:互联网 发布:中金交易软件 编辑:程序博客网 时间:2024/06/09 15:53

#import <Foundation/Foundation.h>

#import <UIKit/UIKit.h>


@interface LanguageControl : NSObject




+ (NSBundle *)bundle;//获取当前资源文件


+ (void)initLanguage;//初始化

+ (NSString *)currentLanguage;//获得当前语言


+ (void)setupLanguage:(NSString *)language;//设置语言


+ (NSString *)getStringFromLocalizableTableWithKey:(NSString *)string;//获取当前语言下,对应key所对应的值


@end





#import "InternationalControl.h"


@implementation InternationalControl


static NSBundle *bundle = nil;



+ (NSBundle *)bundle{

    return bundle;

}


+ (void)initUserLanguage{

    

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    NSString * languageString = [def valueForKey:USER_LANGUAGE];

    if (languageString.length == 0) {

        NSArray *languages = [def objectForKey:@"AppleLanguages"];

    

        NSString *current = [languages objectAtIndex:0];


        if ([current containsString:@"en"]){

            languageString = @"en";

        }else if([current containsString:@"zh-Hant"]){

      

            languageString = @"zh-Hant";

        }else{

            languageString = @"zh-Hans";

        }

        

        [def setValue:languageString forKey:USER_LANGUAGE];

        [def synchronize];

    }

    NSString *path = [[NSBundle mainBundle] pathForResource:languageString ofType:@"lproj"];

    bundle = [NSBundle bundleWithPath:path];

}


+ (NSString *)currentLanguage{

    

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    NSString *language = [def objectForKey:USER_LANGUAGE];

    if ([language isEqualToString:@"en"]) {

        return @"en";

    }else if ([language isEqualToString:@"zh-Hans"]){

        return @"zh_CN";

    }else{

        return @"zh_HK";

    }

}


+ (void)setupLanguage:(NSString *)language{

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@"lproj"];

    bundle = [NSBundle bundleWithPath:path];

    [def setObject:language forKey:USER_LANGUAGE];

    [def synchronize];

}


+ (NSString *)getStringFromLocalizableTableWithKey:(NSString *)string{

    return [[InternationalControl bundle] localizedStringForKey:string value:nil table:@"Localizable"];

}


@end