iOS开发--项目的本地化处理(多语言开发)

来源:互联网 发布:sql,字符串截断错误 编辑:程序博客网 时间:2024/06/04 12:06

最近项目本地化,需要支持11国语言,下面将本地化的步骤记录下来,方便查找使用,步骤很简单,有些地方也有坑,希望大家看后少走弯路~~

什么是本地化

本地化说直白点就是多语言开发,通过系统语言来判断应用使用的哪种语言,实现应用的本地化开发

本地化处理需要处理的文件

  • 本地化应用程序的info.plist
  • 本地化字符串处理(项目中所涉及的字符串)
  • 本地化图片
  • XIB和storyboard的本地化处理
  • 其他文件,比如csv等等

让我们的项目支持本地化

首先我们只有设置成支持多语言了,我们才能在展示项目名称和项目中的字符串等将语言进行切换,具体操作如下图所示:

这里写图片描述

在如上图所示的地方添加你需要支持的语言就行了,我这里是添加了简体汉语和英语

如何判断当前系统使用的语言

我们使用Locale这个类来判断当前的系统语言,方法:

//获取当前的localelet locale = Locale.current//返回本地语言环境的语言代码,或者如果没有零//例如,对于地区“zh-Hant-HK”,返回“zh”let languageCode = locale.languageCode//返回该地区代码的语言环境,或者如果没有零//例如,对于地区“zh-Hant-HK”,返回“HK”let regionCode = locale.regionCode
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

同过以上的代码基本上能清楚的知道当前系统的使用的语言

获取系统支持的所有语言

同样我们也是通过Locale来获取系统支持的所有语言

//返回可用“语言环境”标识符的列表let availableList = Locale.availableIdentifiers//返回一个可用“语言环境”语言代码的列表let languageCodeList = Locale.isoLanguageCodes//返回一个可用“语言环境”地区代码的列表let languageCodeList = Locale.isoRegionCodes
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如何本地化info.plist

1.首先我们建一个名称叫InfoPlist.strings的本地化文件,记住名称必须叫InfoPlist.strings

这里写图片描述

2.选择让InfoPlist.strings支持的语言,如下图所示:

这里写图片描述

3.在InfoPlist.strings分别写入你想本地化的值,如下图所示 (格式如下所示,以分号结尾):

这里写图片描述 
这里写图片描述

如何获得info.plist中对应的Key

我们可以通过打开info.plist的源码来获取到对于的Key值,如下图所示 :

这里写图片描述

这里写图片描述

本地化字符串处理

本地化字符串处理原理上跟infoPlist的处理差不多,只是我们需用配合一个方法来使用它:

let str = NSLocalizedString("需要本地化的字符串", comment: "")
  • 1
  • 1

默认使用NSLocalizedString这个方法时我们是获取mainBundle中一个名字叫Localizable.strings的本地化文件,所以我们一般只需要建一个名字叫Localizable.strings的文件即可,方法步骤跟建立infoPlist.strings类似(传送门)

使用自定义的本地化文件

使用自定义的本地化文件也很容易,也是之前的方法,我们只需要多填一些参数就可以了:

//返回一个本地化的字符串,默认使用main bundle,如果没有指定一个public func NSLocalizedString(_ key: String, tableName: String? = default, bundle: Bundle = default, value: String = default, comment: String) -> String
  • 1
  • 2
  • 1
  • 2

以上就是NSLocalizedString这个方法的所有参数,其中的tableName就是本地化文件的名称,默认就是Localizable.strings,自定义的话只需要建立一个新的,然后名称填你自己建立的本地化文件即可.

XIB和storyboard的本地化处理

XIBstoryboard的方法也很简单,跟本地放字符串类似,不过是本地化的XIB文件,如下图所示:

这里写图片描述

XIBstoryboard的本地化又两种方式,如上图所示,一种是以本地化文件的方式实现,就是以.strings的本地化文件;另外一种是以XIBstoryboard的方式展示,具体如下图所示 :

这里写图片描述

本地化图片和其他文件

对于本地化图片和其他文件就比较费劲一点了,因为Xcode中图片并没有支持本地化,我们只有通过代码判断来决定使用相对于的本地化图片和文件了,判断方法的传送门

本地化中所遇到的问题

在本地化中必须谨记一个问题,就是必须按本地化文件的格式来写入文件,因为本地化文件并不能检查出你分号后面是否多多余的字符串,造成的后果就是本地化文件失效!!



原文地址:http://blog.csdn.net/wang631106979/article/details/53258658?ref=myread

0 0
原创粉丝点击