吐槽一下:国际化-我想说学习的这个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. 《Linux命令行与shell脚本编程大全》 第四章

    4.1 监测程序 1. ps  默认只显示运行在当前控制台下的属于当前用户的进程.  可以接很多选项,比如 -A表示所有进程  -e等. 2. ps -l  查看进程更多信息 UID:启动这些进程的用 ...

  2. 阿里云ecs遭到频繁的ddos攻击始末

    苦逼熬夜近俩月的时间搞出来个小东东,还指望它能给自己捞点~  结果刚上线没多久就遭到竞争对手疯狂的ddos攻击. 可怜的阿里云默认只能抗住5G的攻击,超出的直接黑洞,也是很无奈,然而能免费抗5G这在国 ...

  3. JSON相关知识整理

    JSON   全称:JavaScript Object Notation ,一种轻量级的数据交换格式 示例:{"name":"eric","age&q ...

  4. 结合java.util.TreeMap源码理解红黑树

    前言 本篇将结合JDK1.6的TreeMap源码,来一起探索红-黑树的奥秘.红黑树是解决二叉搜索树的非平衡问题. 当插入(或者删除)一个新节点时,为了使树保持平衡,必须遵循一定的规则,这个规则就是红- ...

  5. Files and Directories

    Files and Directories Introduction     In the previous chapter we coveredthe basic functions that pe ...

  6. Java8 ArrayList源码分析

    java.util.ArrayList是最常用的工具类之一, 它是一个线程不安全的动态数组. 本文将对JDK 1.8.0中ArrayList实现源码进行简要分析. ArrayList底层采用Objec ...

  7. 【Java入门提高篇】Day1 抽象类

    基础部分内容差不多讲解完了,今天开始进入Java提高篇部分,这部分内容会比之前的内容复杂很多,希望大家做好心理准备,看不懂的部分可以多看两遍,仍不理解的部分那一定是我讲的不够生动,记得留言提醒我. 好 ...

  8. [C#]使用TcpListener及TcpClient开发一个简单的Chat工具

    本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 本文使用的开发环境是VS2017及dotNet4.0,写此随笔的目的是给自己及新开发人员作为参 ...

  9. Spring4 事务管理

    Spring4 事务管理 本章是Spring4 教程中的最后一章,也是非常重要的一章.如果说学习IOC是知识的入门,那学习事务管理就是知识的提升.本章篇幅可能有一丢丢长,也有一丢丢难,需要读者细细品味 ...

  10. cocos2d-x安卓应用启动调用过程简析

    调用org.cocos2dx.cpp.AppActivity AppActivity是位于proj.android/src下的开发者类(即开发者自定义的类),它继承自org.cocos2dx.lib. ...