iOS 多语言 浅析

什么是本地化处理?

本地化处理就是我们的应用程序有可能发布到世界的很多国家去,因为每个国家应用的语言是不一样的,所以我们要把我们的应用程序的语言要进行本地化处理一下。

本地化处理需要处理那些文件?

(1):本地化应用程序名称(我的的项目名称)

(2):本地化字符串处理(项目中所涉及的字符串)

(3):本地化图片

(4):XIB文件本地化处理

(5):其他文件

下面进行本地化处理:

1 . 设置我们的工程支持多语言

为什么:因为只有设置成支持多语言了,我们才能在展示项目名称和项目中的字符串等将语言进行切换

(1): 首先创建一个项目,以“苹果”为项目名做测试

(2):为工程添加可支持的语言,只有项目具有我们想要用的语言,我们才能讲项目切换成这种语言

如图所示:

2:设置项目名称本地化处理

(1):InfoPlist.strings文件是对我们应用程序的名字进行管理的

(2):设置InfoPlist.strings其实很简单,就是借助我们上一步设置的语言环境,将我们想要支持的语言添加到InfoPlist.strings文件之下就可以了

(3):如图所示添加过程:

(4)接下来我们只需要将CFBundleDisplayName属性和它所对应的值分别写在我们在InfoPlist下创建的文件中

例如:

在InfoPlist.strings(English)中我们写入:CFBundleDisplayName = "apple";

在InfoPlist.strings(Chinese(Simplified))中我们写入:CFBundleDisplayName = "苹果";

在InfoPlist.strings(English)中我们写入:CFBundleDisplayName = "リンゴ";

注意:后面的“”前面不加@

(5):在Info.Plist文件中添加一个属性Application has localized display name然后设置成Boolean类型的Yes就可以了

(6):在模拟器中更改模拟器的语言就会看到以下三种效果:

3:本地化字符串处理(项目中所涉及的字符串)

提示:本地化字符串处理和2中讲的项目名本地化处理基本上是一样的,只不过我们需要在创建一个像Info.Plist文件一样的文件来管理我们的本地化字符串

就是创建一个Localizable.strings文件,然后同样是在这个文件夹下创建多种支持语言

(1):创建Localizable.strings文件的方式和上面创建Info.Plist的方式是一样的,只是文件名不一样

(2):在Localizable.strings文件下添加支持的语言

如图所示:

(3):然后我们在Localizable.strings下得各个文件添加类似于如下的内容:

例如:

Localizable.strings(English)中       “Login”=“Login”;

Localizable.strings(Chinese(Simplified)) 中   “Login” = “登陆”;

Localizable.strings(Japanese) 中  “Login” = “登録”;

然后有人可能问了我们每个等号前的"Login"是怎么确定的? :往下看

然后我们怎么用呢?

就是每次我们在用到我们设定的字符串的时候不用NSString了,我们需要用到一个函数代替它:NSLocalizedString(key, comment)

例如我们要再一个Button上设定主题:button.title = NSLocalizedString(@“Login”, nil);

这个里面的@“Login”就会自动检索于设备相同语言的Localizable.strings下得文件夹,然后在里面找到与@“Login”相同的Key值,然后就输出出来

其实我们在Localizable.strings下得文件夹中设置的内容就像一个字典一样,前面是Key值后面是对应的值,然后就是通过NSLocalizedString(@“Login”, nil);函数进行检索,将key对应的值返回过来。

有人会文NSLocalizedString(key, comment)中的comment是什么,很明显根据字义判断是注释的意思

如图所示:

总结:

其实很简单,就是我们把Localizable.strings下面设置好我们所需要的语言,然后我们在将我们在项目中用到的字符串都用"Three"="3";的形式整理到各个对应的文件里面,然后我们要是用到我们需要的字符串的时候我们就通过NSLocalizedString(key, comment)函数以key值的形式找里面的值,然后将我们自己设置的语言对应的值展现出来,这就是本地化处理

原文链接:http://www.jianshu.com/p/b053bbd8c339

时间: 2024-12-30 04:12:58

iOS 多语言 浅析的相关文章

IOS开发语言Swift入门连载---可选链

IOS开发语言Swift入门连载-可选链 可选链(Optional Chaining) 是一种可以请求和调用属性.方法及下标脚本的过程,它的可选性体现于请求或调用的目标当前可能为空(nil ).如果可选的目标有值,那么调用就会成功:相反,如果选择的目标为空(nil ),则这种调用将返回空(nil ).多次请求或调用可以被链接在一起形成一个链,如果任何一个节点为空(nil )将导致整个链失效. 注意: 的可选链和 Objective-C 中的消息为空有些相像,但是 Swift 可以使用在任意类型中

IOS开发语言Swift入门连载---类型转换

IOS开发语言Swift入门连载-类型转换 类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例. 类型转换在 Swift 中使用is 和 as 操作符实现.这两个操作符提供了一种简单达意的方式去检查值的类型或者转换它的类型. 你也可以用来检查一个类是否实现了某个协议,就像在 Checking for Protocol Conformance部分讲述的一样. 定义一个类层次作为例子 你可以将它用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的

IOS Http断点续传浅析

下载LOFTER客户端IOS Http断点续传浅析 http实现断点续传的关键地方就是在httprequest中加入“Range”头. //设置Range头,值:bytes=x-y;x:开始字节,y:结束字节,不指定则为文件末尾[request addValue:@"bytes=500-" forHTTPHeaderField:@"Range"]; 如果服务器正确响应的话,就可以顺利续传:如果服务器不支持,那就只能用其它方法了. 经过测试,服务器的不支持分为两种情况

IOS开发语言Swift入门连载---类和结构体

IOS开发语言Swift入门连载-类和结构体 类和结构体是人们构建代码所用的一种通用且灵活的构造体.为了在类和结构体中实现各种功能,我们必须要严格按照常量.变量以及函数所规定的语法规则来定义属性和添加方法. 与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意: 通常一个类 的实例被称为对象 .然而在Swift 中,类和结构体的关系要比在其他语言中更加的密切,本

IOS开发语言Swift入门连载---属性

IOS开发语言Swift入门连载-属性 属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性可以用于类.结构体和枚举里,存储属性只能用于类和结构体. 存储属性和计算属性通常用于特定类型的实例,但是,属性也可以直接用于类型本身,这种属性称为类型属性. 另外,还可以定义属性监视器来监控属性值的变化,以此来触发一个自定义的操作.属性监视器可以添加到自己写的存储属性上,也可以添加到从父类继承的属性上. 存储属性 简单来说,一个存储属性就是

IOS开发语言Swift入门连载---闭包

IOS开发语言Swift入门连载-闭包 闭包是自包含的函数代码块,可以在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 lambdas 函数比较相似. 闭包可以捕获和存储其所在上下文中任意常量和变量的引用. 这就是所谓的闭合并包裹着这些常量和变量,俗称闭包.Swift 会为您管理在捕获过程中涉及到的所有内存操作. 注意: 如果您不熟悉捕获(capturing)这个概念也不用担心,您可以在 值捕获 章节对其进行详细了

IOS开发语言Swift入门连载---枚举

IOS开发语言Swift入门连载-枚举 枚举定义了一个通用类型的一组相关的值,使你可以在你的代码中以一个安全的方式来使用这些值. 如果你熟悉 C 语言,你就会知道,在 C 语言中枚举指定相关名称为一组整型值.Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值.如果一个值(被认为是"原始"值)被提供给每个枚举成员,则该值可以是一个字符串,一个字符,或是一个整型值或浮点值. 此外,枚举成员可以指定任何类型的相关值存储到枚举成员值中,就像其他语言中的联合体(unions)和变体(v

IOS开发语言Swift入门连载---函数

IOS开发语言Swift入门连载-函数 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被"调用". Swift统一的函数语法足够灵活,可以用来表示任何函数,包括从最简单的没有参数名字的 C 风格函数,到复杂的带局部和外部参数名的 Objective-C 风格函数.参数可以提供默认值,以简化函数调用.参数也可以既当做传入参数,也当做传出参数,也就是说,一旦函数执行结束,传入的参数值可以被修改. 在 Swift

IOS开发语言Swift入门连载---嵌套类型

IOS开发语言Swift入门连载-嵌套类型 枚举类型常被用于实现特定类或结构体的功能.也能够在有多种变量类型的环境中,方便地定义通用类或结构体来使用,为了实现这种功能,Swift允许你定义嵌套类型,可以在枚举类型.类和结构体中定义支持嵌套的类型. 要在一个类型中嵌套另一个类型,将需要嵌套的类型的定义写在被嵌套类型的区域{}内,而且可以根据需要定义多级嵌套. 嵌套类型实例 下面这个例子定义了一个结构体BlackjackCard (二十一点),用来模拟BlackjackCard 中的扑克牌点数.Bl