现在的位置: 首页 > 综合 > 正文

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

2019年08月27日 ⁄ 综合 ⁄ 共 1400字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.