iOS开发——Localizable.strings
这篇写的不多,但是绝对诚意满满。不会像别人一样,要不不详细,要不罗里吧嗦一堆。
1、创建Localizable.strings文件
Command+N—>iOS—>Resource—>Strings File,命名为Localizable,这样就生成了Localizable.strings文件。
2、添加语言
点击最上面的项目名准备进行设置,在最左边的窗格中选择PROJECT(默认的是TARGETS),然后在Info标签下你会看到一个Localizations分区。点击点击“+”,然后选择你想要的语言。
添加的时候,你会发现Localizable.strings,Main.storyboard和你建的XIB都是默认勾选的,这些你勾不勾都行,你可以在这里直接勾选,也可以觉得用不着在故事板或xib上设置,直接去掉勾选也行。这是你会发现Localizable.strings这个文件和你勾选过的文件,不再是单个文件了,你选的每一个语言,都有一个相应的文件。
万一你在添加语言的时候,没有勾选某个xib,现在你想要直接对这个xib进行国际化设置,怎么办?不急,你选中那个xib,在Xcode的右边的框里,选择第一个文件图标的标签,你会看到Locallzation这个分区,剩下的懒得说了,自己玩吧!
3、对每种语言进行设置
在Localizable.strings中,对每种语言分别设置,比如在Localizable.strings(Chinese(Simplified))这个文件中,写一行代码:"Start" = "开始";
在Localizable.strings(English)这个文件中写上:"Start" = "Start";在Localizable.strings(French)这个文件中写上:"Start" = "Commencer";
在需要用到的地方,label.text = NSLocalizedString(@"start", nil);那么你的应用就国际化了,当你手机系统设置的语言是简体中文时,这个label显示开始;当你手机系统设置的语言是英文时,这个label显示Start,当你手机系统设置的语言是法语时,这个label就会变成Commencer。
4、对Storyboard或者XIB中的控件直接进行国际化设置
基本上有上面三步就够用了,但是你想在xib上直接国际化,不想用Localizable.strings这个文件,怎么办?
小意思!
第一步,先保证你的xib可以点开,这个上面介绍了,不多说。
第二步,先在xib上一个label,内容“开始”,然后你点开xib里面的几个文件,空的!!!如果是你先label,然后再添加语言,勾选xib,那么它里面是有东西的,但是如果是你后来添加的话,它不会在里面语言的文件里自动添加,这里需要折腾一下,这点苹果比较坑。网上别的帖子怎么做的?要不不说这一点,要不就是在终端捣鼓一下。
我不喜欢这种方法,直接在Xcode小葱的中折腾,在Xcode右边上面提过的Locallzation分区中,每个语言这都有,每个语言后面都有上下箭头,点开,当前选择的是Localizable Strings,改成另一项Interface Builder Cocoa Touch XIB,然后再改回来Localizable Strings,这时候你再点开xib不同语言的文件都会出现相同的两行代码:
/* Class = "UILabel"; text = "开始"; ObjectID = "8OX-N2-Acl"; */
"8OX-N2-Acl.text" = "开始";
第二行等号后面的那个开始,你就可以用对应的语言来替换了。
注意:当我们在国际化的时候,写key,写着写着就忘了加 ";" ,如果忘了,这时会报错,“read failed: the data couldn't be read because it isn't in the correct format.”,这时候认真查看一下自己的Localization文件就可以了。
iOS开发——Localizable.strings的更多相关文章
- iOS开发——国际化支持Localizable.strings
这篇写的不多,但是绝对诚意满满.不会像别人一样,要不不详细,要不罗里吧嗦一堆. 1.创建Localizable.strings文件 Command+N—>iOS—>Resource—> ...
- iOS中使用Localizable.strings适配App在不同语言下文本的显示
iOS开发中,若是使用xib或storyboard搭建界面视图,视图中固定显示的文本内容可以用localized添加不同语言适配.但是在实际中会有动态加载的文本,这些文字的适配就需要NSLocaliz ...
- iOS开发之功能模块--Apns推送中的的json格式介绍
在开发向苹果Apns推送消息服务功能,我们需要根据Apns接受的数据格式进行推送.下面接受我在进行apns推送时候总结的一点apns服务接受的Json数据格式 示例 1: 以下负载包含哦一个简单的 a ...
- iOS开发常见BUG和一些小技巧(ps:耐心看完,很实用)
[385][scrollView不接受点击事件,是因为事件传递失败] // // MyScrollView.m // Created by beyond on 15/6/6. // Copyright ...
- iOS开发时,在Xcode中添加多个Targets进行版本控制
在iOS开发中,很可能有以下场景:需要开发多个版本,或因需区分收费版,免费版,或因为网络环境需要区分测试版,发布版,或因渠道不同需要区分企业版,AppStore版等等.解决办法无非就是CheckOut ...
- iOS开发大神必备的Xcode插件
写在前面 工欲善其事,必先利其器,iOS开发中不仅要学会Xcode的基本操作,而且还得学会一些Xcode的使用技巧,如掌握常用的快捷键等,还有就是今天要说到的Xcode插件,下面我就为大家介绍几款开发 ...
- iOS开发中遇到的一些问题及解决方案【转载】
iOS开发中遇到的一些问题及解决方案[转载] 2015-12-29 [385][scrollView不接受点击事件,是因为事件传递失败] // // MyScrollView.m // Creat ...
- 李洪强iOS开发之大神必备的Xcode插件
iOS开发大神必备的Xcode插件 写在前面 工欲善其事,必先利其器,iOS开发中不仅要学会Xcode的基本操作,而且还得学会一些Xcode的使用技巧,如掌握常用的快捷键等,还有就是今天要说到的Xco ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...
随机推荐
- 破解MyEclipse2013注册码
1.下载破解工具 http://down8.3987.com:801/2010/Myeclipse_zcj.3987.com.rar 2.打开 找到meclipse安装路径找到plugins文件夹打开 ...
- Jenkins设置Poll SCM
*/5 * * * * (每5分钟执行一次) 0 20 * * * 每天 20点执行定时build # every fifteen minutes (perhaps at :07, :22, : ...
- cocos2d-x 3.x 触摸事件
HelloWorldScene.h bool touchBegan(cocos2d::Touch*touch, cocos2d::Event*event);//触摸开始,返回bool类型 void t ...
- android 去掉listview之间的黑线
方法1:listView.setDividerHeight(0);方法2:this.getListView().setDivider(null);方法3:android:divider="@ ...
- P3414 SAC#1 - 组合数
题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数 ...
- 删除MySQL二进制日志
服务器上的120G SSD硬盘空间用了92%,检查后发现,原来是 MySQL的二进制日志没有及时清除,占用了大量的空间, 于是直接用命令:reset master 一把删干净了. 1 reset ma ...
- java开发第一天
今天是项目开始的时间,整体来说还是算顺利的.提前分好组,然后是听课时可以有人帮忙占座位的,感觉上是挺好的. 项目开发的难度看了看,由于有了第一次MFC开发的经验,所以这次听课感觉非常的有目标性,而且总 ...
- jquery选中checkbox多选项并添加到文本框中
<script> function check(){ var dd = ""; if($("input[type='checkbox'][name='moke ...
- 使用JQuery结合HIghcharts实现从后台获取JSON实时刷新图表
项目做了一个报表,可以实时的观察呼叫中心的电话访问量,之前的版本是使用JFreechart做的,使用一段时间后出现内存溢出,服务器的内存使用量会变得很大,所以改用Ajax前台加载数据的方式实现实时报表 ...
- android复习-AnsyTask
AnsyTask是一种类似Thread+Hander机制的处理耗时操作的类, 通过在UI线程中excute()启动操作, 在AnsyTask中 doInBackground()中处理耗时操作(运行在自 ...