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)
IOS软件国际化(本地化Localizable) iPhone是支持语言最多的手机,它支持各国语言及中国少数名族如蒙古等语言,这也是好多少数名族都用苹果的原因.在这一点上我们自主品牌还是要多学习学习. ...
- iOS开发之国际化
iOS 国际化.根据系统不同的语言自动切换. 首先.选择项目 Add new file -->iOS -->Resource -->Strings File . 命名为Locali ...
- iOS开发——高级技术&本地化与国际化详解
本地化与国际化详解 效果如下: 英语: 中文: 具体实现如下: ...
- IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)
上篇 IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源 介绍了纯代码刷新 实现程序内切换语言. 但效率底下,也存在一些问题.暂放弃. ...
- iOS国际化支持
写给自己看: 1.先创建一个国际化文件,用于描述在不同的区域环境,显示不同的value.文件名必须是Localizable.strings,文件的内容稍后再写.
- iOS中使用Localizable.strings适配App在不同语言下文本的显示
iOS开发中,若是使用xib或storyboard搭建界面视图,视图中固定显示的文本内容可以用localized添加不同语言适配.但是在实际中会有动态加载的文本,这些文字的适配就需要NSLocaliz ...
- [iOS]怎样在iOS开发中切换显示语言实现国际化
1.在Project设置,加入中英两种语言: 2.新建Localizable.strings文件,作为多语言相应的词典,存储多种语言,点击右側Localization,勾选中英: watermark/ ...
- iOS开发-- 创建podspec文件,为自己的项目添加pod支持
开篇扯淡 作为一个iOS开发者,一定用过CocoaPods吧,没用过?点这儿去面壁吧 Cocoapods作为iOS开发的包管理器,给我们的开发带来了极大的便利,而且越来越多的第三方类库支持Pod,可以 ...
随机推荐
- react-route4 按需加载配置心得
本篇文章主要记录笔者项目中使用 react-route + webpack 做路由按需加载的心得,可能只有笔者一个人看,权当日记了. 很久很久以前,react-route还是2.X和3.X版本的时 ...
- POJ 3044单调栈
题意: 思路: 单调栈 // by SiriusRen #include <stack> #include <cstdio> using namespace std; stac ...
- BigDecimal相除异常
使用两个BigDecimal类型的数字做除法运算时,出现了一个如下的异常信息: 1 java.lang.ArithmeticException: Non-terminating decimal exp ...
- 新型查询系统impala
这羊头很酷... Apache Impala是Apache Hadoop的开源本地分析数据库.Impala由Cloudera,MapR,Oracle和Amazon提供. 在Hadoop上进行BI风格的 ...
- Tomcat学习(一)——使用Eclipse绑定Tomcat并发布应用
1.下载Tomcat 官网地址:http://tomcat.apache.org/whichversion.html 2.目录结构 bin:脚本目录 启动脚本:startup.bat 停止脚本:shu ...
- hiho 1613 - 墨水滴 - bfs+优先队列 *
题目链接 小Ho有一张白纸,上面有NxN个格子.小Ho可以选择一个格子(X, Y),在上面滴一滴墨水.如果这滴墨水的颜色深度是G,那么这个格子也会被染成深度为G的格子.同时周围的格子也会被这滴墨水浸染 ...
- POJ 3660 Cow Contest【传递闭包】
解题思路:给出n头牛,和这n头牛之间的m场比赛结果,问最后能知道多少头牛的排名. 首先考虑排名怎么想,如果知道一头牛打败了a头牛,以及b头牛打赢了这头牛,那么当且仅当a+b+1=n时可以知道排名,即为 ...
- php 扩展 suhosin 配置不当引发的报错及其解决方法
1. /var/log/messages 频繁报错: Jul :: localhost suhosin[]: ALERT - script tried to increase memory_limit ...
- Dbf文件操作
package cn.com.szhtkj.util; import java.io.File; import java.io.IOException; import java.lang.reflec ...
- springMVC接受数组
var obj = {}; var params = new Array(); var selected1 = $('#datatable').DataTable().rows('.selected' ...