个性化阅读
专注于IT技术分析

iOS国际化/本地化完全操作笔记 – Objective-C开发教程

上一章Objective-C开发教程请查看:Objective-C NSObject详细解释

国际化和本地化是一个意思,目的就是让iOS App支持多语言,我们开发iOS应用需要处理的国际化包括:

  • APP名称
  • xib/storyboard
  • 启动页LunchScreen
  • 代码中
  • 图片

在进行国际化操作之前,首先要确保,在项目的PROJECT > Info > Localizations中添加你需要支持的语言。

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获取图片名称。

赞(0)
未经允许不得转载:srcmini » iOS国际化/本地化完全操作笔记 – Objective-C开发教程

评论 抢沙发

评论前必须登录!