最近公司做的项目需要向国外推广,因此app需要添加相应的语言设置,为此整理记录下多语言设置的过程。如有不对的地方,欢迎各位大神指正。下面就详细介绍下设置的过程:
1、基本设置
第一步:首先在 项目工程-PTROJECT-Info中添加需要支持的语言
如上点击“+”号会弹出提供的语言列表,我们选择项目需要支持的语言就可以了
第二步:创建Localizable.strings(⚠️:该文件名不要随意更改)作为多语言资源对应的词典,存储多语言
创建好后,接下来需要继续做如下操作:
(1)选中Localizable.strings文件,点击右侧栏对应的Localize...
(2)在Localization里添加所要支持的语言,并勾选
第三步,经过以上几步,前期的基本设置完成了,可以在Localizable.strings里设置所需要的语言了。如下所示
第四步,设置好对应的语言后,就可以去使用了。那么可以按以下方式去使用
NSString * tempStr = NSLocalizedString(@"test_label", nil);
⚠️:
以上是对应的创建以Localizable为名字的文件调用方式。如果设置的是自定义的名字,如test.strings,调用的方式为:
NSLocalizedStringFromTable("name", "test", nil);
2、StoryBoard和Xib设置
storyBoard和xib设置同Localizable.strings类似。点那个我们创建Localizable.strings对应的语言文件时,系统自动的生成了app中现有storyBoard对应的系统文件。对于后加的文件,我们可以选中文件,点击右侧的Localize...并勾选对应的语言即可。
比如在storyBoard和xib中有一个Label,它对以会有一个Object ID了。我们可以通过这个ID来设置对应的语言文本
不过这个建议是所有的UI界面都设置完成后,再去设置多语言。当然可以通过对控件拖线,在代码实现中设置多语言
3、应用名等相关权限多语言设置
应用名等设置与上面的几个多语言设置的步骤是基本一致的,只是在创建strings文件的时候文件名要为InfoPlist。
这里以中文为例,设置app名称:"CFBundleDisplayName" = "测试";
4、判断系统的语言
NSArray *languages = [NSLocale preferredLanguages]; NSString *currentLanguage = [languages objectAtIndex:0]; NSLog(@"%@", currentLanguage);
⚠️:通过[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]]设置app语言后,一定要记得重新设置window的rootViewController
好了,以上就是iOS多语言的相关内容