iOS多语言本地化(国际化)设置
2015-12-17 13:54
483 查看
讨论的iOS应用中的多语言设置,Ok 一般是两种情况:
1.根据当前设备语言自动切换显示
2.在应用中可进行语言设定
至今,我个人做过的项目中有6个是涉及到多语言的,其中全部都是需要在应用中可进行设置。 其实也没多大关系,我们这里会首先说说根据当前设备语言进行切换界面的显示(这些都是网上能搜到的,我整理下给自己清晰点的步骤以便后续查看罢了)。而关于在应用在进行语言设定,其实就是获取当前的语言环境并通过代码进行更改,其他的操作是一致的。
先来说说几个涉及到多语言本地化设置的:
1.本地化应用名称
2.本地化字符串(文字)
3.本地化图片、素材
4.本地化StoryBoard(Xib)
1.配置工程支持多语言
选中项目—>PROJECT(默认是选中TARGETS,切换下)—>Info—>Localizations—>设置多语言环境
2.国际化应用名称
(1)创建InfoPlist.string,并进行Localization配置:
在项目中点击New File-->Resource-->Strings File -->更名为InfoPlist-->点击创建。
选中InfoPlist.strings —>在Xcode右边栏找到Localization—>在Localization中点“+”进行配置。(如没有则点击 XCode—>View—>Utilities—>File Inspector)
(2)添加属性:
在对应InfoPlist.string文件中输入以下代码:
CFBundleDisplayName ="多语言测试";
注意:CFBundleDisplayName加不加双引号都行,"多语言测试"便是对应的应用名。
(3)编辑Info.plist:
打开Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为YES即可
3.国际化文字
(1)创建Localizable.strings文件(一定是这个名字,是否使用的方法不一样)并进行进行Localization配置。
(2)在对应语言的Localizable.strings中添加key=value;字串(各个语言文件中key要相同)
(3)在代码中使用NSLocalizedString(<#key#>, <#comment#>)来读取本地化字符串。
注意:如果你的strings文件名字不是Localizable而是自定义的话,如wang.strings,那么你就得使用NSLocalizedStringFromTable(key, @"wang", nil)来读取本地化字符串,中间那个是@"wang"文件名。
*多语言文本中也可包含可变内容:通过以下代码获取:
NSString *string = [NSString localizedStringWithFormat:NSLocalizedString(@"密码错误%ld次,还可以输入%ld次",nil), 2, 1];
4.国际化图片
有两种方式:
(1)在不同语言的Localizable.strings中指定不同的图片名称,通过NSLocalizedString()获取不同的图片名称后进行显示不同的图片(这个就是通过国际化文字那个)
(2)参照国际化应用名和文字的方式给图片标记两种不同的语言显示 (但将图片放Images.xcassets中时时似乎没有地方可以选择国际化语言的)
5.国际化StoryBoard:(不建议)
在第1步配置工程多语言的时候就会提示包含的更改的文件,其中就有StoryBoard,选中即可。这样便会出现一个Base文件和语言文件。
但有一个问题是更改了SB中的控件之后,语言包中的内容不会对应改变,所以我们的操作是暂时不支持国际化SB。
以上部分参考:http://blog.csdn.net/wangqiuyun/article/details/7875442
1.根据当前设备语言自动切换显示
2.在应用中可进行语言设定
至今,我个人做过的项目中有6个是涉及到多语言的,其中全部都是需要在应用中可进行设置。 其实也没多大关系,我们这里会首先说说根据当前设备语言进行切换界面的显示(这些都是网上能搜到的,我整理下给自己清晰点的步骤以便后续查看罢了)。而关于在应用在进行语言设定,其实就是获取当前的语言环境并通过代码进行更改,其他的操作是一致的。
先来说说几个涉及到多语言本地化设置的:
1.本地化应用名称
2.本地化字符串(文字)
3.本地化图片、素材
4.本地化StoryBoard(Xib)
!!重点重点,以上都是废话:
这里才是配置根据当前设备语言自动切换显示的步骤,不贴图,不说明原因:1.配置工程支持多语言
选中项目—>PROJECT(默认是选中TARGETS,切换下)—>Info—>Localizations—>设置多语言环境
2.国际化应用名称
(1)创建InfoPlist.string,并进行Localization配置:
在项目中点击New File-->Resource-->Strings File -->更名为InfoPlist-->点击创建。
选中InfoPlist.strings —>在Xcode右边栏找到Localization—>在Localization中点“+”进行配置。(如没有则点击 XCode—>View—>Utilities—>File Inspector)
(2)添加属性:
在对应InfoPlist.string文件中输入以下代码:
CFBundleDisplayName ="多语言测试";
注意:CFBundleDisplayName加不加双引号都行,"多语言测试"便是对应的应用名。
(3)编辑Info.plist:
打开Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为YES即可
3.国际化文字
(1)创建Localizable.strings文件(一定是这个名字,是否使用的方法不一样)并进行进行Localization配置。
(2)在对应语言的Localizable.strings中添加key=value;字串(各个语言文件中key要相同)
(3)在代码中使用NSLocalizedString(<#key#>, <#comment#>)来读取本地化字符串。
注意:如果你的strings文件名字不是Localizable而是自定义的话,如wang.strings,那么你就得使用NSLocalizedStringFromTable(key, @"wang", nil)来读取本地化字符串,中间那个是@"wang"文件名。
*多语言文本中也可包含可变内容:通过以下代码获取:
NSString *string = [NSString localizedStringWithFormat:NSLocalizedString(@"密码错误%ld次,还可以输入%ld次",nil), 2, 1];
4.国际化图片
有两种方式:
(1)在不同语言的Localizable.strings中指定不同的图片名称,通过NSLocalizedString()获取不同的图片名称后进行显示不同的图片(这个就是通过国际化文字那个)
(2)参照国际化应用名和文字的方式给图片标记两种不同的语言显示 (但将图片放Images.xcassets中时时似乎没有地方可以选择国际化语言的)
5.国际化StoryBoard:(不建议)
在第1步配置工程多语言的时候就会提示包含的更改的文件,其中就有StoryBoard,选中即可。这样便会出现一个Base文件和语言文件。
但有一个问题是更改了SB中的控件之后,语言包中的内容不会对应改变,所以我们的操作是暂时不支持国际化SB。
以上部分参考:http://blog.csdn.net/wangqiuyun/article/details/7875442
相关文章推荐
- iOS 对国际化语言的支持.
- ios ALAsset 通过CGImageWithOptions: 压缩照片技术
- ios获取本地音乐库音乐很详细 扫描IPHONE本地音乐文件,获得音乐名,歌手名代码示例
- IOS图标消息推送在不同ios版本中的推送相关
- iOS学习之NSString
- iOS开发系列--地图与定位
- ios 传入秒得到时分秒算法
- OC用Dispatch处理并发完成所有任务之后执行最终的结果
- iOS如何调起地图进行导航(高德,百度,系统自带)(URI)
- ios 调用系统照片库/拍照/录像
- 记一个iOS开发中cell的重用机制引发的错误
- iOS开发之关闭ARC环境
- iOS---通知传值的使用
- iOS RTMP 视频直播开发笔记(6)- 封包 FLV
- iOS开发之OC内存管理(二)
- ios 一行代码移除所有字视图
- iOS&nbsp;添加自定义字体方法详解
- IOS学习笔记之对象复制
- iOS Core Animation 简明系列教程
- ios9API基础知识总结(二)