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中图片并没有支持本地化,我们只有通过代码判断来决定使用相对于的本地化图片和文件了,判断方法的传送门

本地化中所遇到的问题

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

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

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

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

本地化处理就是我们的应用程序有可能发布到世界的很多国家去,因为每个国家应用的语言是不一样的,所以我们要把我们的应用程序的语言要进行本地化处理一下。 本地化处理需要处理那些文件? (...
  • doitsjz
  • doitsjz
  • 2017年04月04日 17:27
  • 299

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

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

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

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

iOS 多语言本地化 完美解决方案【自动+手动】

多语言本地化,是我们在做IOS项目的时候经常用的,下面根据自己的经验和使用场景,来全面的说说多语言本地化的解决方案。 首先我们要明白本地化的原理和过程,才能更好的理解本地化的方案,本...
  • shaobo8910
  • shaobo8910
  • 2015年09月12日 21:12
  • 1025

iOS开发-多语言本地化和手动切换

App要国际推广,需要支持多语言。可以通过本地化语言和切换来实现。本工程可以不切换系统语言,不重启应用直接切换自定义语言。现在只写中英文,其他语言也是同样处理方法。如果支持语言多,切换时间也不会花长时...
  • JackJia2015
  • JackJia2015
  • 2016年06月01日 10:58
  • 7478

wordpress的本地化技术(多语言)支持

wordpress的本地化技术(多语言)支持: WordPress的开发者选择使用GNU gettext本地化框架来提供WordPress本地化的基本结构。Gettext是一个成熟的,广泛使用的,软...
  • sxhong
  • sxhong
  • 2014年01月05日 22:26
  • 3023

iOS开发之如何进阶

iOS论坛里有朋友要求回答帖子,帖子的标题是: 想学IOS开发高阶一点的东西,从何开始,然后我吧啦吧啦回答写了很多。既然敲了那么多字,我就把我写的回复也贴到博客里来分享,希望能对大家有帮助。欢迎大家也...
  • super_man_ww
  • super_man_ww
  • 2016年10月19日 09:12
  • 299

UE4制作多语言游戏(本地化功能详解)

UE4对于开发多语言版本的游戏有很好的支持,通过简单的几个步骤,就可以制作出具有多种语言版本的游戏,希望本文对大家有所帮助。...
  • l346242498
  • l346242498
  • 2017年06月08日 11:20
  • 931

iOS app 名字的多国语言本地化

好多人知道iOS app 程序里面的语言怎么本地化,但是对app名字的本地化好像还不是很清楚, 其实app 名字的多国语言本地化也很简单 每次我们新建一个project的时候都有一个文件是Info...
  • jinglijun
  • jinglijun
  • 2013年04月17日 14:19
  • 3866
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发进阶 - 项目的本地化处理(多语言开发)
举报原因:
原因补充:

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