上一章Objective-C开发教程请查看:Objective-C NSObject详细解释?
国际化和本地化是一个意思,目的就是让iOS App支持多语言,我们开发iOS应用需要处理的国际化包括:
- APP名称
- xib/storyboard
- 启动页LunchScreen
- 代码中
- 图片
iOS对于每一种语言有对应的*.lproj文件夹,例如en.lproj表示英文环境的资源,项目启动根据当前语言环境会使用其中的文件。
另外Xcode10之前对文件进行国际化的时候,会有一个Base.lproj的本地化,这个文件夹我也不好解释,因为看到别人解释在不支持的语言环境中,并不一定会使用这个文件夹的资源,所以还是建议更新mac更新Xcode。
国际化或本地化的处理方式可以分为两种:文件级别的国际化和针对字符串的本地化,前者表示让一个文件支持多语言但不方便编辑文件内容(如图片),否则表示使用多语言字符串进行本地化。
APP名称国际化这是使用多语言字符串的方式,新建一个InfoPlist.strings文件(必须是这个名字),然后点击右边的localize,添加你需要支持的语言。接着在文件中添加CFBundleDisplayName,格式为” CFBundleDisplayName” = “ Your APP Name” 。
对于*.strings文件中的内容,一般的格式都是key-value键值对。
另外InfoPlist.strings可用的key一般可以从Info.plist中找到(右键Show Raw Keys/Values)。
xib/storyboard本地化使用多语言字符串的方式,可以先布局在进行国际化,或者一边布局一般国际化处理。
首先在布局文件identity查看器中找到ObjectID,本地化文件字符串格式为:” ObjectID.text” = “ value” 。
启动页国际化第一种是使用多语言字符串的形式,创建多个Lunch storyboard,不同语言使用不同的命名如A、B、C,在Info.plist中找到UILaunchStoryboardName,采用类似APP名称本地化的方式,在InfoPlist.strings中分别设置A、B、C。
第二种方式是自定义一个控制器作为启动页。
代码中的本地化第一种是使用系统默认加载的文件(需要手动创建):Localizable.strings,使用NSLocalizedString默认加载文件获取指定的value。
第二种是自定义创建name.strings,使用NSLocalizedStringFromTable指定name加载,并获取到目标value。
图片本地化第一种方式是字符串本地化的方式:不同的语言环境使用不同的图片名称,本地化统一使用一个key,在Localizable.strings中指定不同语言的图片名称,统一使用一个key。
第二种方式是文件本地化的方式:将图片拉到和项目中,和源文件同一个级别,作为一个普通文件,将其本地化处理(右边点击localize,选择所需语言),然后在对应的.lproj文件夹中替换同名图片,使用NSLocalizedString获取图片名称。
推荐阅读
- Objective-C多态性和继承 – Objective-C开发教程
- Objective-C NSObject详细解释 – Objective-C开发教程
- Objective-C使用继承 – Objective-C开发教程
- Objective-C实现双向链表、栈和队列 – Objective-C开发教程
- Objective-C类和对象 – Objective-C开发教程
- Objective-C命令行参数 – Objective-C开发教程
- Objective-C错误处理 – Objective-C开发教程
- Objective-C日志处理 – Objective-C开发教程
- Objective-C类型转换 – Objective-C开发教程