1.设置要适应的语言
重点:文件的名字必须是Localizable.strings,设置app的名字需要创建一个名为InfoPlist.strings的文件
然后如下图添加要支持的语言
添加完所支持的语言之后,
在我们工程的左侧。也就是刚刚创建的文件下面会长生相对应的子文件夹,如:
二右边文件中左侧Language为对应的key值,右侧的为相对应语言的写法。
在代码中可以这样设置
UILabel* lab = [[UILabelalloc]init];
[self.viewaddSubview:lab];
lab.frame=CGRectMake(80,100,80,30);
lab.textColor = [UIColor redColor];
lab.text = NSLocalizedString(@"Language", nil);
即可。
应用内实现多语言
在添加了应用所需的语言之后,在应用的文件夹内会出现以下目录
这就是各种语言所对应的文件。
NSString *path = [[NSBundle mainBundle] pathForResource:@"zh-Hans" ofType:@"lproj"];//获取语言路径
NSString *showValue = [[NSBundle bundleWithPath:path] localizedStringForKey:@"Language" value:nil table:nil];//获得相对应语言,相对应key的值
NSLog(@"result: %@", showValue);
我们可以动态的切换各种语言所对应的后缀为lproj的文件,来进行切换语言。
总结:
虽然到此为止,已经实现了应用多语言的大致流程,但是觉得还是有一些弊端。在当今的应用市场中,很多应用展示给用户的数据,基本都是动态获取的,一开始就在应用内写死的数据很少了,所以这种切换多语言的方式就显的捉襟见肘了。这应该是苹果的一个弊端吧。通过这种方式不能实现将服务端返回的数据就行多语言设置。我们的国民应用支付宝也是支持多语言设置在应用内和应用外。他就是将一本分数据进行了多语言的切换,而另外一些就没有。想必也是因为这个原因造成的吧。
网友评论