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

来源:互联网 发布:centos ftp开启文件夹 编辑:程序博客网 时间:2024/05/22 06:31

实现的功能是第一次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


0 0
原创粉丝点击