iOS 读书笔记-国际化
吐槽一下:国际化-我想说学习的这个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 读书笔记-国际化的更多相关文章
- iOS -读书笔记-网络请求
知道"3次握手"吗?突然想起这个词 什么是3次握手? TCP三次握手/四次挥手详解 这里是3次握手的详解 3次握手就是为了可靠的传送数据,TCP(什么是TCP呢?TCP就是一种可靠 ...
- iOS 读书笔记 第一章
1.确定某个实例或类方法是否可用. 1)使用NSObject的类方法instancesRespondToSelector:来确定是否在该类的一个实例中存在一个特定的选择器. NSArray *arra ...
- 远程办公《Remote》读书笔记:中国程序员在家上班月入过六万不是梦
这不是一本新书,这是一本很值得中国程序员看的老书,所以我不是来做卖新书广告的:) 但它的确是一本好书,这本书在Amazon上3个business categories排第一.作者Jason Fried ...
- HTML5&CSS3读书笔记
Hi All, 分享一下我学HTML5 摘抄的读书笔记(我用的还是英文,因为一些新的东西还是来自于欧美国家,希望大家习惯于看一些英文材料): 1. Difference between Section ...
- Key Technologies Primer 读书笔记,翻译 --- Struct 学习 1
原文链接:https://struts.apache.org/primer.html 本来想写成读书笔记的,结果还是变成翻译,谨作记录,学习. 1.HTML -- 见我前面文章 2.Interne ...
- 《玩转Django2.0》读书笔记-Django建站基础
<玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...
- 《[MySQL技术内幕:SQL编程》读书笔记
<[MySQL技术内幕:SQL编程>读书笔记 2019年3月31日23:12:11 严禁转载!!! <MySQL技术内幕:SQL编程>这本书是我比较喜欢的一位国内作者姜承尧, ...
- Implicit Animations 默认动画 读书笔记
Implicit Animations 默认动画 读书笔记 Do what I mean, not what I say. Edna Krabappel, The Simpsons Part I ...
- Understanding Scroll Views 深入理解 scroll view 读书笔记
Understanding Scroll Views 深入理解 scroll view 读书笔记 It may be hard to believe, but a UIScrollView is ...
随机推荐
- ruby 安装 mysql2 命令
sudo apt-get install libmysql-ruby libmyclient-dev
- jquery的img的动态title换行
因业务需要,需要在图片悬浮的时候显示动态加载的title,如果图片的title为固定的可以使用以下方式换行: <img src="1.jpg" title="第一行 ...
- 如何兼容所有Android版本选择照片或拍照然后裁剪图片--基于FileProvider和动态权限的实现
我们知道, Android操作系统一直在进化. 虽然说系统是越来越安全, 可靠, 但是对于开发者而言, 开发难度是越来越大的, 需要注意的兼容性问题, 也越来越多. 就比如在Android平台上拍照或 ...
- DIY 温控烙铁
由于工艺原因,某处要使用200W大功率烙铁(恒温烙铁虽然有那么大功率,但没有那么大的烙铁头),只能选用普通电热丝烙铁(无温控),存在温度过高现象(造成工艺不良,同时因助焊剂+高温造成烙铁头腐蚀),逐渐 ...
- 掌握numpy(三)
统计功能 前面都是介绍numpy的一些特性,被称为数学运算神器怎么能少了统计功能呢 ndarray的方法 a = np.array([[-2.5, 3.1, 7], [10, 11, 12]]) &g ...
- SSM 配合 Mysql 数据库和代码数据源主从分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...
- [O]ORACLE物化视图的使用
用于数据复制的物化视图 物化视图的一个主要功能就是用于数据的复制,Oracle推出的高级复制功能分为两个部分,多主复制和物化视图复制.而物化视图复制就是利用了物化视图的功能. 物化视图复制包含只读物化 ...
- Winform界面中主从表编辑界面的快速处理
在Winform开发中,我们往往除了常规的单表信息录入外,有时候设计到多个主从表的数据显示.编辑等界面,单表的信息一般就是控件和对象实体一一对应,然后调用API保存即可,主从表就需要另外特殊处理,本随 ...
- 激光相机数据融合(5)--Gazebo仿真数据融合
这一节将用ROS+Gazebo 环境获取激光获取点云,并用PCL和OPENCV处理,源代码在:https://github.com/ZouCheng321/5_laser_camera_sim 由于激 ...
- springboot使用i18n时properties文件中文乱码
在springboot使用i18n进行国际化文件配置时,文件名为messages_zh_CN.properties的文件中填写中文信息,当使用浏览器进行访问时,出现中文乱码,此时在idea中进行修改s ...