iOS国际化

本文详细介绍了iOS应用的国际化过程,包括环境设置、国际化原理、文本和图片的国际化、Storyboards和XIB的处理、应用内语言切换,以及解决各种国际化问题的方法。通过实例DEMO,展示了如何实现不同语言环境下资源的自动加载,帮助开发者实现无死角的语言切换功能。
摘要由CSDN通过智能技术生成

Demo同步更新到Swift2.3
本文地址: http://mokai.me/2015/10/iOS-i18n/

在真正将国际化实践前,只知道通过NSLocalizedString方法将相应语言的字符串加载进来即可。但项目的新需求增加英文版本,并支持应用内无死角切换~,这才跳过各种坑实现了应用内切换语言,并记录至此。

环境

系统环境: iOS7 or later
开发环境: Swift2.3 & Xcode7.3.1
DEMO: LocalDemo

这个Demo的功能主要是切换语言后相应的界面文字&图片以及搜索引擎都会随语言变化。我们会围绕这个DEMO进行讲解,读者可以先下载这个Demo运行看下效果再往下

iOS国际化原理分析

国际化其实都大同小异,其核心思想就是为每种语言单独定义一份资源
iOS就是通过xxx.lproj目录来定义每个语言的资源,这里的资源可以是图片,文本,Storyboard,Xib等。我们可以看看LocalDemo源代码的物理目录结构

Base,暂时无需理会

English

中文

每种语言都有自己的 语言代码.lproj文件夹,加载资源时只需要加载相应语言文件夹下的资源就OK,这步可以系统为我们完成,也可以手动去做。

项目源代码中如果有多个不同目录的国际化资源,则会有产生多个xxx.lproj,但在编译打包后,会集中放在app的根目录中的xxx.lproj中,不信你看~

开始国际化

首先点击项目->PROJECT->Info->Localizations中添加要支持的语言

此处Use Base Internationalization开启状态下,每个国际化资源文件会有个Base选项,主要针对String,Storyboard,Xib作为一个基础的模板,像后述storyboard国际化中方案二就是基于Base StoryBoard进行改动。

在点击+ 添加相应语言时会弹出以下对话框,意思是为现有的资源添加语言文件,我们点击Finish就行了

文本的国际化

主要针对代码中的字符串进行国际化,比如说一些消息,UI标题等。

我们通过一个Localizable.strings文件来存储每个语言的文本,它是iOS默认加载的文件,如果想用自定义名称命名,在使用NSLocalizedString方法时指定tableName为自定义名称就好了,但你的应用规模不是很大就不要分模块搞特殊了。

每个资源文件如果想为一种语言添加支持,通过其属性面板中的Localization添加相应语言就行了,此时Localizable.strings处于可展开状态,

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值