iOS 读书笔记-国际化

吐槽一下:国际化-我想说学习的这个工程好痛苦。
或许是百度的原因,总是不能找到自己想要东西。找到的内容不是不详细就是时间有点久了。让我这种小白很头痛。

下面记录一下整个过程。

国际化是什么 ?

说白了就是在不同的语言上APP上显示不同的文字,也就是说如果你是美国人系统语言是英语,那么APP就显示英语,如果你是中国人,那么APP就显示汉语。

我们首先来做国际化准备。

为了方便我们下面的演示,只添加一个简体中文就行了。

跳出下面界面

点击finish就行了,至于我们上面选对号的两个文件我们下面说。

我们可以选也可以不选,但是如果全不选刚才添加语言会没有添加上。

好了 ,下面一类一类的说明如何来国际化。

1、APP名称国际化

我们新建的工程让其在中文环境下的名称叫做”中文”,在英文环境下显示”English”

在Supporting Files 文件中新建(其他地方也行,无所谓)

这个文件的命名一定要用InfoPlist。

点击新建的InfoPlish.strings

选择要需要兼容的语言

选择好后

在InfoPlist.strings(Chinese(Simplified))文件中添加

CFBundleDisplayName = “中文”;

在InfoPlist.strings(English)文件中添加

CFBundleDisplayName = “English”;

好了,完成了。

运行一下试试

2.文本信息国际化

按照上面的方法再来添加一个Strings File文件,这次我们叫做Localizable(必须叫这个名)。

按照上面的方法添加上语言。最后为这样

我们我看看应该怎么操作。

我们想在页面上添加一个UILabel 在中文环境下text为“中文”,英文环境下为“英文”。

我们再ViewController.m 的viewDidLoad方法中添加下面代码

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    label.text = NSLocalizedString(@"Title", @"1");
    [self.view addSubview:label];

代码中出现了一个新的方法NSLocalizedString,这个方法就是关键,第一个方法是key,第二个方法是默认值。我们需要这个key。这个方法会去Localizable.strings 文件中查找对应的值。

现在这个key 是“Title”所以我们要向Localizable.strings 中添加值。

在Localizable.strings 下的中文文件中添加:

"Title" = "中文";

在英文文件中添加:

"Title" = "英文";

这里的两个key一定要对应,不然找不到。

跑一下试试。

3.xib和故事板文件国际化

我们在国际化过程中会遇到这样的情况,就是我们拖到xib 和故事板中的很多控件,上面的文字都写好了,我们怎么办。

还记得上面我们刚添加语言的时候选择的两个文件吗?我说下面再说。就是这

我们现在来说它。

如果你当初都选上了,现在会是这样的。

我们拖一个UILabel控件到页面上,设置text。我们想再不同的语言环境下显示不同的文字。

点击控件

看到Object ID了吗?我们现在就用它。

在对应的xib或故事版的.strings(语言)文件下添加相应的内容。

在中文文件下添加

"aLA-Na-IKQ.text"="中文";

这样控件在中文下就会显示“中文”。

在英文下添加

"aLA-Na-IKQ.text"="English";

英文环境下会显示“English”

好了跑一下试试。

4.图片的的国际化。

在不同的环境下,可能会显示不同的图片。

好下面我们拖一张图片到工程,然后点击

还是如上面一样,选择好语言。

完成后会是这样。

如果想中文图片不用这张,换一张,那么我们点击图片的中文版右键,选择Show in Finder 将文件夹中对用的图片删除然后将要变的图片添加进去,注意名称要和原来的一样。

好了 运行一下试试。

5声音的国际化

和图片的国际化一样处理,我们来看下是如何取值的就行了。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    NSBundle *thisBundle = [NSBundle mainBundle];
    NSString *path = [thisBundle pathForResource:@"蓝莲花" ofType:@".mp3"];
    NSLog(@"path=%@",path);
    return YES;
}

会取出对应语言文件中的文件。

path=/Users/darknesswz/Library/Developer/CoreSimulator/Devices/20C6C60B-35BC-4C3E-B7E9-6D931EBA2C0F/data/Containers/Bundle/Application/9E28AFA6-5B32-4C65-AA39-883DD3DFFD08/YY.app/zh-Hans.lproj/蓝莲花.mp3

虽然名字还是“蓝莲花”但是我在文件内容已经替换成许巍的“故乡”了。

好了 ,不容易啊。有用点个咱。

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

时间: 2024-10-15 06:24:04

iOS 读书笔记-国际化的相关文章

iOS 读书笔记 第一章

1.确定某个实例或类方法是否可用. 1)使用NSObject的类方法instancesRespondToSelector:来确定是否在该类的一个实例中存在一个特定的选择器. NSArray *array = @[@"1",@"2"]; if ([NSArray instancesRespondToSelector:@selector(sortUsingComparator:)]) { //do something use sortUsingComparator: }

iOS 读书笔记-网络API

文章来自<ios网络高级编程> 在这里只是摘录,其中还有好多东西不知道是什么,等做完整本书的笔记回过头来看下. 框架的每一层都提供了一套关键api,为开发者提供了各种功能与控制. 1 nsurlconnection 是cocoa级别的api,它提供了简单的方法来加载url请求,可以与web service直接进行交互.获取图片.视频还能简单的得到一个格式化的html文档.它构建在NSStream之上,并且在http.https.文件和ftp进行了优化.NSURLConnection限制了你所使

iOS 读书笔记-单元测试XCTest

测试驱动下的iOS开发.这两天看了一下关于这方面的基础知识.扫一下盲. 测试驱动开发,英文Test-Driven Development 简称TDD.他是一种新型的软件开发方法.他要求在写代码之前先编写测试代码,然后之编写使测试通过的代码,通过测试来推动整个开发的进行.有助于编写简洁可用和高质量的代码.并加速开发过程. 传统开发:编写程序->设计测试用例->编写测试用例程序->单元测试->编写测试报告 测试驱动开发:设计单元测试用例->编写测试用例程序->程序编码-&g

iOS 读书笔记-cookie

cookie是什么东西? Cookie/Session机制详解这位博主写的很详细,可以看一下. iOS 应用中可以在http连接中方便的使用cookie.url加载框架帮我们做了大量的工作以利用协议的这个特征. 经常用到cookie的地方有3个:检索cookie的值.显示删除cookie.手工将cookie加到请求中. url加载系统会自动处理所有http/s请求的cookie,会将返回的cookie保存在响应中,然后按照cookie处理规则将其添加到随后的请求中. url加载系统提供了两个重要

iOS -读书笔记-网络请求

知道"3次握手"吗?突然想起这个词 什么是3次握手? TCP三次握手/四次挥手详解 这里是3次握手的详细解释 3次握手就是为了可靠的传送数据,TCP(什么是TCP呢?TCP就是一种可靠传输的协议)在发送数据之前,两台主机之间进行3次握手.3次握手完成后才发送数据. 预备知识: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(ur

iOS读书笔记——常见plist里的key的含义

1.UIAppFonts 内嵌字体 2.UIBackgroundModes 后台运行时的服务(voip,audio,location) 3.UIDeviceFamily array 类型 (1为iPhone和iPod touch设备 ,2为iPad) 4.UIFileSharingEnabled 开启iTunes共享document文件夹 5.UILaunchImageFile 相当于Default.png 6.UIPrerenderedIcon Icon上是否有高光/抛光 7.UIRequir

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记 这本书年初刷完,感觉不错,介绍了很多小点,都是平日不怎么关注的. 第1章 熟悉Objective-C 这章没什么好介绍 第1条:了解Objective-C语言的起源 第2条:在类的头文件中尽量少引入其他头文件 第3条:多用字面量语法,少用与之等价的方法 第4条:多用类型常量,少用#define预处理指令 要理解为啥要少用#define预处理指令. 然后具体用哪个, 自己定吧 第5条:用枚举表示状态.选项.状态

iOS开发中的那些的约定俗成(1)————《编写高质量iOS与OS X代码的52个有效方法》读书笔记(第一章)

iOS开发中的那些的约定俗成(1) ----<编写高质量iOS与OS X代码的52个有效方法>读书笔记(第一章) 前言 "我要成为一个高产的开发人员.""想要混的好,就得多努力." 写这些东西是因为毕竟看了书,但是看书看过去之后,也许印象不是很深刻,有些东西现在也理解不了,那我就把我理解的,现在就可以用到的东西,简单的写出来就好,让自己今后看到就能明白其中的意思. 还有就是锻炼一下表达,编辑能力,慢慢的提升自己,随时随地的都要有一个锻炼的心. 最后当然就

读书笔记——IOS之Web开发

Web开发 读书笔记:http://www.mincoder.com/article/2576.shtml 主要的请求方法 Get请求:数据以明文在URL中,数据量小 Post请求:数据大小没有限制 HEAD请求:请求头信息 程序的实现需要借助几个对象: NSURLRequest:建立了一个请求,可以指定缓存策略.超时时间.和NSURLRequest对应的还有一个NSMutableURLRequest,如果请求定义为NSMutableURLRequest则可以指定请求方法(GET或POST)等信