2020-06-05

2020-06-06  本文已影响0人  zxb有缘

1.新建项目,创建

image

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

image

3.设置支持的语言版本

image

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

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

image image

使用方法: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"];
        }

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

image

在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");

效果图:中文简体语言下

image

非中文简体下

image
上一篇 下一篇

猜你喜欢

热点阅读