根据当前设备语言自动切换显示。
几个涉及到多语言本地化设置的:
1.应用名称
2.文字
3.图片、素材
4.StoryBoard(Xib)
iOS国际化原理分析
核心思想就是为每种语言单独定义一份资源。iOS 就是通过xxx.lproj目录来定义每个语言的资源,这里的资源可以是图片,文本,Storyboard,Xib等。
一.配置多语言环境
选中项目 --> PROJECT(默认是选中TARGETS,切换下选择项目) --> Info --> Localizations --> 设置多语言环境
1.点击 + 添加语言
2.选择 Use Base Internationalzation
二.应用名称国际化
1.在 info 里手动添加一行Bundle display name字段,bundle display name “XXXX”
2.编辑Info.plist
打开Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为YES
3.创建InfoPlist.string,并进行Localization配置
command + N,添加InfoPlist.string,注意名称一定要是InfoPlist,string,添加后放入Supporting Files 下
Localization配置:
工作目录结构文件下单击InfoPlist.strings,查看右边的属性,在Localization栏添加语言
选择语言
Base与前面提过到的开启Use Base Internationalization是有关联的,只有开启了全局Use Base Internationalization这里才会显示。那为什么这里没有勾选Base,是因为Base做为一个基础模板,作用于Strings文件是没有太大意义的,去掉Base意味着在Base.lproj中少了一个strings文件,APP大小也所有下降,这点对于图片的Base也是这样.
4.添加完成后打开对应语言文件
三.文字国际化
1.创建Localizable.strings文件及配置,通创建配置Infoplist.string相同
2.在对应语言的Localizable.strings中添加key=value;字串(各个语言文件中key要相同)
3.在代码中使用NSLocalizedString(key, comment)来读取本地化字符串,第一个参数是key的名字,第二个参数是对这个“键值对”的注释,通常为nil
NSLocalizedString(x, nil);
注意:
如果你的strings文件名字不是Localizable而是自定义的话,如other.strings,那么你就得使用NSLocalizedStringFromTable(key, @"other", nil)来读取本地化字符串,中间那个是@"other"文件名
四.国际化图片
有两种方式:
1.在不同语言的Localizable.strings中指定不同的图片名称,通过NSLocalizedString()获取不同的图片名称后进行显示不同的图片(文字国际化类似)
2.点中你要本地化的图片,如“商标.png”
然后XCode-> View-> Utilities -> File Inspector,在Localization中点“+”添加chinese ;在图片左边就会出现一个倒三角,点开就会出现(english)和(chinese)的2张图,并且在项目文件夹中会出现en.lproj文件和zh-Hans.lproj文件;en.lproj文件存放的是英文版图片,zh-Hans.lproj存放的是中文版图片,中英文图片名字一样,我们在文件夹中直接替换图片就可以了,最后使用时直接使用正常名字就行了,如:“main.png”
设置语言环境
选择语言
多语言下的图片