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

ios 实现app语言切换,不跟随系统

2014-10-16 09:57 567 查看
实现的功能是第一次app打开跟随系统语言, 其他则显示用户选择的语言,直接上代码:

.h文件
#import <Foundation/Foundation.h>

@interface MyLocalString : NSObject
+(MyLocalString *)sharedInstance;
-(NSString *)MyLocalStringForKey:(NSString *)key;
-(void)setMyLanguage:(NSString *)language;
@end

.m文件
#import "MyLocalString.h"
static MyLocalString* localString=nil;
NSBundle *languageBundle=nil;
@implementation MyLocalString
+(MyLocalString*)sharedInstance
{
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate,^{
localString = [[MyLocalStringalloc]init];
NSUserDefaults *def=[NSUserDefaults standardUserDefaults];
NSString *language=[def valueForKey:@"userLanguage"];
NSString *currentString=nil;
if (language.length==0)
{
NSArray *languageArr=[def valueForKey:@"AppleLanguages"];
currentString=[languageArr objectAtIndex:0];
[def setValue:currentString forKey:@"userLanguage"];
[def synchronize];
}else
{
currentString=language;
}
NSString *path = [[NSBundle mainBundle] pathForResource:currentString ofType:@"lproj"]; // "zh", "fr"等
languageBundle=[NSBundle bundleWithPath:path];
});
return localString;
}
-(NSString *)MyLocalStringForKey:(NSString *)key
{
return [languageBundle localizedStringForKey:key value:@"" table:nil];
}
-(void)setMyLanguage:(NSString *)language
{
NSUserDefaults *def=[NSUserDefaults standardUserDefaults];
[def setValue:language forKey:@"userLanguage"];
[def synchronize];
NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@"lproj"];
languageBundle=[NSBundle bundleWithPath:path];
}
@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息