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

原创 2016年11月21日 13:33:15

移动端访问不佳,请访问我的个人博客

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

什么是本地化

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

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

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

让我们的项目支持本地化

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

这里写图片描述

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

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

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

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

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

获取系统支持的所有语言

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

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

如何本地化info.plist

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

这里写图片描述

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

这里写图片描述

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

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

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

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

这里写图片描述

这里写图片描述

本地化字符串处理

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

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

默认使用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

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

XIB和storyboard的本地化处理

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

这里写图片描述

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

这里写图片描述

本地化图片和其他文件

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

本地化中所遇到的问题

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

借鉴了许多大神的博客,总结了一篇比较全的,希望大家能学到东西,又什么疑问可以留言,谢谢大家的阅读~

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wang631106979/article/details/53258658

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

最近项目本地化,需要支持11国语言,下面将本地化的步骤记录下来,方便查找使用,步骤很简单,有些地方也有坑,希望大家看后少走弯路~~ 什么是本地化本地化说直白点就是多语言开发,通过系统语言来判断应用使用...
  • wang631106979
  • wang631106979
  • 2016-11-21 13:33:15
  • 1566

IOS本地化操作

大家在开发APP时,往往需要有多种语言的支持,比如最普通的中文和英文,本篇内容就是来给大家讲解一下,如何在XCode中为自己的应用添加本地化文件,使自己的应用可以支持中英文互换。 1.字符串以及ap...
  • shenjie12345678
  • shenjie12345678
  • 2015-05-12 16:32:35
  • 1146

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

最近项目本地化,需要支持11国语言,下面将本地化的步骤记录下来,方便查找使用,步骤很简单,有些地方也有坑,希望大家看后少走弯路~~ 什么是本地化 本地化说直白点就是多语言开发,通过系统...
  • zzzzzdddddxxxxx
  • zzzzzdddddxxxxx
  • 2016-11-22 14:49:53
  • 404

iOS开发————数据本地化方式之NSUserDefaults

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefa...
  • Lerryteng
  • Lerryteng
  • 2016-05-15 17:55:36
  • 695

iOS开发那些事-iOS应用本地化-资源文件本地化

资源文件包括:图片文件、音频文件以及前文提到的Localizable.strings等文件,它们的特点是都是随着应用一起打包发布。但就本地化而言无论是图片文件还是音频文件都必须实现的步骤都是类似的,因...
  • tonny_guan
  • tonny_guan
  • 2013-06-25 09:34:28
  • 3243

ios8+swift app多语言——国际化和本土化

iOS初学者可以关注我的iOS开发相关的视频课程。 开发一款国际化的iOS App,则必须考虑支持多国家语言,如何实现呢? 第一、国际化——多国家语言;第二、本土化——数据、时间、货币格式等。 DEM...
  • cdblh
  • cdblh
  • 2015-03-17 20:06:58
  • 4845

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

iOS 项目的本地化处理(多语言开发) 什么是本地化处理? 本地化处理就是我们的应用程序有可能发布到世界的很多国家去,因为每个国家应用的语言是不一样的,所以我们要把我们的应用程...
  • matiji66
  • matiji66
  • 2016-01-03 22:30:57
  • 192

IOS开发入门(8)-本地化(1)

IOS开发本地化
  • qq_28508217
  • qq_28508217
  • 2017-01-01 18:28:29
  • 112

iOS国际化(本地化)详解

一、国际化(本地化) 国际化又称本地化,一句话解释也就是说:用户设置不同的手机系统语言,您的APP也分别适配不同的语言。 二、本地化类型 1、首先创建项目工程(大家都懂跳过) 2、你需要告诉...
  • xinzhaoyu
  • xinzhaoyu
  • 2017-04-24 14:45:59
  • 571
收藏助手
不良信息举报
您举报文章:iOS开发进阶 - 项目的本地化处理(多语言开发)
举报原因:
原因补充:

(最多只允许输入30个字)