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

以下记录一下整个过程。

国际化是什么 ?

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

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



为了方便我们以下的演示,仅仅加入一个中文简体即可了。

跳出以下界面

点击finish即可了。至于我们上面选对号的两个文件我们以下说。

我们能够选也能够不选,可是假设全不选刚才加入语言会没有加入上。

好了 ,以下一类一类的说明怎样来国际化。

1、APP名称国际化

我们新建的project让其在中文环境下的名称叫做”中文”。在英文环境下显示”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.图片的的国际化。

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

好以下我们拖一张图片到project,然后点击

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



完毕后会是这样。

假设想中文图片不用这张。换一张,那么我们点击图片的中文版右键。选择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

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

好了 。不easy啊。

实用点个咱。

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

  1. iOS -读书笔记-网络请求

    知道"3次握手"吗?突然想起这个词 什么是3次握手? TCP三次握手/四次挥手详解 这里是3次握手的详解 3次握手就是为了可靠的传送数据,TCP(什么是TCP呢?TCP就是一种可靠 ...

  2. iOS 读书笔记 第一章

    1.确定某个实例或类方法是否可用. 1)使用NSObject的类方法instancesRespondToSelector:来确定是否在该类的一个实例中存在一个特定的选择器. NSArray *arra ...

  3. 远程办公《Remote》读书笔记:中国程序员在家上班月入过六万不是梦

    这不是一本新书,这是一本很值得中国程序员看的老书,所以我不是来做卖新书广告的:) 但它的确是一本好书,这本书在Amazon上3个business categories排第一.作者Jason Fried ...

  4. HTML5&CSS3读书笔记

    Hi All, 分享一下我学HTML5 摘抄的读书笔记(我用的还是英文,因为一些新的东西还是来自于欧美国家,希望大家习惯于看一些英文材料): 1. Difference between Section ...

  5. Key Technologies Primer 读书笔记,翻译 --- Struct 学习 1

    原文链接:https://struts.apache.org/primer.html 本来想写成读书笔记的,结果还是变成翻译,谨作记录,学习.   1.HTML -- 见我前面文章 2.Interne ...

  6. 《玩转Django2.0》读书笔记-Django建站基础

    <玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...

  7. 《[MySQL技术内幕:SQL编程》读书笔记

    <[MySQL技术内幕:SQL编程>读书笔记 2019年3月31日23:12:11 严禁转载!!! <MySQL技术内幕:SQL编程>这本书是我比较喜欢的一位国内作者姜承尧, ...

  8. Implicit Animations 默认动画 读书笔记

    Implicit Animations  默认动画 读书笔记 Do what I mean, not what I say. Edna Krabappel, The Simpsons   Part I ...

  9. Understanding Scroll Views 深入理解 scroll view 读书笔记

    Understanding Scroll Views 深入理解 scroll view  读书笔记   It may be hard to believe, but a UIScrollView is ...

随机推荐

  1. JavaUtil_04_验证码生成器

    一.原理 验证码其实就是随机串.原理上可分为两种: 1.简单的验证码 直接通过字母和数字的ASCII码生成.本文采用的验证码就是这种. 2.复杂的验证码 通过一个随机串,一个指定串(如accesske ...

  2. CDN 机制

    CDN的全称Content Delivery Network,(缩写:CDN)即内容分发网络. CDN是一个经策略性部署的整体系统,从技术上全面解决由于网络带宽小.用户访问量大.网点分布不均而产生的用 ...

  3. 单元测试 Qunit

    http://api.qunitjs.com/category/assert/    测试方法   选中 "Check for Globals" 会暴露全局对象,看你的代码会不会无 ...

  4. 原生addClass 方法 添加类函数

    function addClass(id,new_class){       var i,n=0;       new_class=new_class.split(",");   ...

  5. 记录我发现的第一个关于 Google 的 Bug

    先贴上 Bug 链接: https://issuetracker.google.com/issues/68969655 Bug 本身是很简单的,就是 Google 的 Android 在线参考文档中, ...

  6. 详解tomcat的连接数与线程池

    前言 在使用tomcat时,经常会遇到连接数.线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector). 在前面的文章 详解Tomcat配置文件server.xm ...

  7. ACID 数据库正确执行四要素

    ACID:数据库事务正确执行所必须满足的四个基本要素的缩写: 原子性(atomicity,或叫不可分割性),一致性(consistency),隔离性(isolation,又称独立性),持久性(dura ...

  8. [html5] 初识绘图canvas

    这个星期被调到别的项目组专门做了一会儿前端,没办法,人太少,我也只能硬着头皮上... 说起来,html5的canvas真的好用,可以画色块,可以嵌入图片,可以通过定位在图片上写字等等 举例如下 在ht ...

  9. 《剑指offer》面试题的Python实现

    <剑指Offer>是很多程序员面试前要看的书,但里面的算法都是基于C++实现的,最近用了三周左右时间,用Python完成了里面几乎所有的算法题,由于时间以及个人水平均有限,或许会有部分问题 ...

  10. JDK8 指南(译)

    翻译自 java8-tutorial 新特性 Default Methods for Interfaces(接口的默认方法) Java 8 使我们能够通过使用 default 关键字将非抽象方法实现添 ...