iOS app国际化语言设置以及默认语言

1.新建项目,创建
iOS app国际化语言设置以及默认语言_第1张图片
B7F7E32A-B90F-4D92-8B79-7D2E8CB3E700.png

2.文件名字我是使用的系统的Localizable


iOS app国际化语言设置以及默认语言_第2张图片
C7E871E5-3CAF-4F87-9F8A-2D191FCEC32D.png

3.设置支持的语言版本
iOS app国际化语言设置以及默认语言_第3张图片
A678E8ED-04BF-4EAE-896C-A138F61C68ED.png

[图片上传中...(02181497-6E15-419F-A674-5D3A1A883934.png-986780-1513850483670-0)]

4.目前为止,就实现了跟随系统语言来切换app里边的内容
设置语言资源:分别在两个语言文件里边设置key:valuekey必须相同,然后value分别对应版本语言

iOS app国际化语言设置以及默认语言_第4张图片
屏幕快照 2017-12-21 下午6.03.07.png

iOS app国际化语言设置以及默认语言_第5张图片
屏幕快照 2017-12-21 下午6.03.00.png

使用方法: self.label.text = NSLocalizedString(@"xxx", nil);

5.进阶需求,童鞋们想实现进app之后,设置默认语言,如果是当前本地语言之外的语言,就设置语言为英文的话,请看下边思路!
首先didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中判断当前系统语言

 
        NSArray  *languages = [NSLocale preferredLanguages];
        //判断当前系统语言
        NSString *language = [languages objectAtIndex:0];
        if ([language hasPrefix:@"zh-Hans"]) {
            //我这里的需求是,如果不是中文,则APP语言都显示成英文,
            //先把它存在NSUserDefaults中
            [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"];
        } else{
            //en.lproj 是英文资源包的文件名字
            [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"];
        }

可以看下资源包名字,就明白了


iOS app国际化语言设置以及默认语言_第6张图片
屏幕快照 2017-12-21 下午6.19.26.png

在pch中,写上这个

#define WWNSLocalizedString(Context)  [NSString stringWithFormat:@"%@", [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(Context) value:nil table:nil]]

这行代码意思获取首页userdefault中设置的语言类型,然后根据类型去获取语言资源包,然后使用相应的资源
调用的时候就这么用就OK啦

self.label.text = WWNSLocalizedString(@"xxx");

效果图:中文简体语言下


iOS app国际化语言设置以及默认语言_第7张图片
屏幕快照 2017-12-21 下午6.28.00.png

非中文简体下


iOS app国际化语言设置以及默认语言_第8张图片
屏幕快照 2017-12-21 下午6.27.20.png

你可能感兴趣的:(iOS app国际化语言设置以及默认语言)