Apple开发_字符串、应用名称、权限请求、图片本地化
0、前言
- 语言本地化,又叫做语言国际化。
- 是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言。
- 往往一些应用程序需要提供给多个国家的人群使用,或者一个国家有多种语言,这就要求应用程序所展示的文字、图片等信息,能够让讲不同语言的用户读懂、看懂。
- 进而提出为同一个应用程序适配多种语言,也即是国际化。
- 语言国际化之所以又叫做语言本地化,这是站在每个用户的角度而言的,是指能够让用户本地、本土人群能够看懂的语言信息,顾名思义,语言本地化。其实语言本地化 == 语言国际化!
2、公共配置
-
2.1 说明
- 配置需要国际化的语言,这也是国际化之前的准备工作,无论我们是国际化App名称、代码中的字符串、图片、还是storyboard和xib,都需要进行这一步的准备工作(一个项目中需要且仅需要配置一次)。
-
2.2 步骤
- ① 选中project->Info->Localizations,然后点击"+",添加需要国际化/本地化的语言,如下图(默认需要勾选Use Base Internationalization):
- ② 添加需要支持的语言,后续如果要新增支持的语言重复这个操作。
- ③ 弹框说明:这里是说您要关联的本地化文件,保持默认就好
- 同理,添加其他需要支持的语言,最终结果如下图:
- 备注: “zh-Hans”和“zh-Hant”是简体中文和繁体中文的缩写。这是标准的缩写。H可大写也可小写。"en"是英语的缩写。ko是韩语的缩写,fr是法语的缩写。其他语言请百度各国语言缩写即可查询。
- 同理,添加其他需要支持的语言,最终结果如下图:
- ① 选中project->Info->Localizations,然后点击"+",添加需要国际化/本地化的语言,如下图(默认需要勾选Use Base Internationalization):
3、各种本地化
-
3.1 代码中字符串的本地化- 简体、繁体相互转换
- 所谓字符串本地化,就是指App内的字符串在不同的语言环境下显示不同的内容。
- 比如,"主页"这个字符串在中文语言环境下显示“主页”,在英语环境下显示“home”。下面就开始进行字符串本地化。
- ① 首先需要command + N,创建选择iOS -> Resource -> Strings File
- ② 命名要求:文件名必须命名为Localizable
- 备注:部分人电脑可能做了隐藏文件后缀名,就不再需要补上.strings后缀名。
- 文件创建成功,查看Xcode左侧导航列表,发现多了一个名为Localizable.strings的文件,如下图:
- 备注:部分人电脑可能做了隐藏文件后缀名,就不再需要补上.strings后缀名。
- ③ 选择需要本地化的语言,选中Localizable.strings文件,在Xcode的File inspection中点击Localize,目的是选择我们需要本地化的语言,如图:
- 选择我们需要本地化的语言
- 点击Localize后,会弹出一个对话框,展开对话框列表,发现下拉列表所展示的语言正是我们在上面配置的需要国际化的语言,选择我们需要本地化的语言,然后点击对话框的Localize按钮,如下图:
- 一次性选择我们需要本地化的语言
- 配置结果,Xcode左侧的Localizable.stirings左侧多了一个箭头,展开后,如下图所示:
- ④ 然后我们只需要在Localizable.strings下对应的文件中,分别以Key-Value的形式,为代码中每一个需要本地化的字符串赋值,如下图:
- 中文
- 英文
- 调用
- 其中,MyLocal为NSLocalizedString的宏定义
#define MyLocal(simplifiedChinese) NSLocalizedString(simplifiedChinese, nil)
- 最终就是在不同语言环境运行显示的内容不一样。
- 中文
- ① 首先需要command + N,创建选择iOS -> Resource -> Strings File
-
3.2 应用名称、权限请求本地化
- 操作步骤与以上基本一致,不同的地方在于:
- ① 新建文件名必须命名为InfoPlist
- ② 在InfoPlist.strings下对应的文件中,键值对取系统提供的
- 英文
- 中文
- 英文
- ③ 其中键值对的key值,如 NSPhotoLibraryUsageDescription 可以在app的Info.plist文件里查看。
- 查看方法
- 查看方法
- 操作步骤与以上基本一致,不同的地方在于:
-
3.3 应用图片资源本地化
- 公共配置 做好后,操作以下步骤就可以了:
- ① 选中自己想要本地化的图片,
- ② 勾选Xcode右边本地化栏目的本地化项目,
- ③ 将图片放置对应的本地化区域就可以了
- 公共配置 做好后,操作以下步骤就可以了:
4、其他场景
-
4.1 多target管理本地化
- ① 多target时,建议共用.string本地化文件
- ② 给不同的应用以不同的数字编号,文件名也使用数字编号,这样可以做到避免文件名共用冲突了
- ① 多target时,建议共用.string本地化文件
-
4.2 多人开发情况下的字符串本地化
- 场景说明:
- 多人开发中,如果多人同时操作本地化文件,极有可能会存在冲突。
- 不希望自己的本地化文件受到对方的污染,也就是说,我们不希望对方操作我们的本地化文件。
- 操作步骤:
- ① 创建个人本地化文件,即不要求本地化名称强制是Localizable,可以随便键,如GC_Local
- ② 使用 NSLocalizedStringFromTable(<#key#>, <#tbl#>, <#comment#>) 进行本地化
- 这样,你个人的本地化就从 GC_Local.strings 里读取了
- 另外,NSLocalizedStringFromTable你还可以使用宏定义,简化供个人使用
- 宏定义
#define GC_Local(local_num) NSLocalizedStringFromTable(local_num, @"GC_Local", nil)
- 使用
- ① 创建个人本地化文件,即不要求本地化名称强制是Localizable,可以随便键,如GC_Local
- 场景说明:
-
4.3 保持内部本地化与跟随系统变化的选择