iOS应用国际化教程(2014版)
本文转载至 http://www.cocoachina.com/industry/20140526/8554.html
这篇教程将通过一款名为iLikeIt的应用带你了解最基础的国际化概念,并为你的应用添加国际化的支持。该示例应用有一个标签和一个You Like?按钮,用户无论何时点击You Like?,一些乐观的销售数
“”

本文最初由Sean Berry撰写,由Ali Hafizji针对iOS 7进行了更新。
| 注意:国际化另一个重要的方面是使用Auto Layout改变文本的大小。不过为了让本教程尽可能地简单,我们不会主要关注Auto Layout。对于Auto Layout这个话题,我们另有其他教程。 | 


| 注意:Localizable.strings是iOS用来本地化文本默认的文件名称。请抑制以其他内容给它命名的冲动,否则以后你每次引用本地化字符串的时候要一次次输入.strings 文件名。 | 
- "KEY" = "CONTENT";
- "You like?" = "You like?";
- "Yesterday you sold %@ apps" = "Yesterday you sold %@ apps";
- _salesCountLabel.text = [NSString stringWithFormat:@"Yesterday you sold %@ apps", @(1000000)];
- [_likeButton setTitle:@"You like?" forState:UIControlStateNormal];
- _salesCountLabel.text = [NSString stringWithFormat:NSLocalizedString(@"Yesterday you sold %@ apps", nil), @(1000000)];
- [_likeButton setTitle:NSLocalizedString(@"You like?", nil) forState:UIControlStateNormal];
- #define NSLocalizedString(key, comment)
- [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
| 注意:这个宏把注释作为一个参数,但似乎没什么用。不像此前那样需要手动把每个key/value对键入Localizable.strings,你还可以使用iOS SDK带的一个叫做genstrings的工具来自动处理(非常适用于大型项目)。 | 






- "Yesterday you sold %@ apps" = "Ayer le vendió %@ aplicaciones";
- "You like?" = "~Es bueno?~";

- NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
- [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
- NSString *numberString = [numberFormatter stringFromNumber:@(1000000)];
- _salesCountLabel.text = [NSString stringWithFormat:NSLocalizedString(@"Yesterday you sold %@ apps", nil), numberString];



- /* Class = "IBUILabel"; text = "Hello"; ObjectID = "pUp-yc-27W"; */
- "pUp-yc-27W.text" = "Hello";
- /* Class = "IBUILabel"; text = "Hola"; ObjectID = "pUp-yc-27W"; */
- "pUp-yc-27W.text" = "Hola";
| 注意:绝对不要直接改变自动生成的ObjectID,也不要复制和粘贴上边的代码行,因为标签的ObjectID可能已经跟上边展示的不一样了。 | 

- "imageName" = "ilike";
- "imageName" = "megusta";
- [_imageView setImage:[UIImage imageNamed:NSLocalizedString(@"imageName", nil)]];

| 注意:这仅适用于每种语言有不同文件名的情况。一个更好的方法是本地化资源文件夹,如这篇文章所描述的那样。 | 
- "CFBundleDisplayName" = "Me Gusta";
iOS应用国际化教程(2014版)的更多相关文章
- AutoCAD ObjectARX(VC)开发基础与实例教程2014版光盘镜像
		AutoCAD ObjectARX(VC)开发基础与实例教程2014,最新版,光盘镜像 作者:张帆 朱文俊 编著 出版社:中国电力出版社 出版时间:2014年6月 点击一下 
- iOS应用国际化教程
		开发一款伟大的iOS应用程序是件了不起的事情,但是还有比优秀的代码.华丽的设计以及直观化交互更多的事要做.跻身在App Store排行榜前列还需要正合时宜的产品营销.扩大用户群的能力.实用的工具以及尽 ... 
- 零积分下载,2014年辛星mysql教程秋季版第一本已经完工,期待您的支持
		经过一段时间的不懈努力.终于,2014年辛星mysql教程秋季版的第一本,即夯实基础已经完工,在csdn的下载地址为:去下载地址 ,假设左边地址跪了,能够去http://download.csdn.n ... 
- W3Cschool菜鸟教程离线版下载链接
		请在电脑上打开以下链接进行下载w3cschool 离线版(chm):http://pan.baidu.com/s/1bniwRCV(最新,2014年10月21日更新)w3cschool 离线版(htm ... 
- iOS开发入门教程
		iOS开发入门教程 http://my.oschina.net/mailzwj/blog/133273 摘要 iOS开发入门教程,从创建项目到运行项目,包括OC基础,调试,模拟器设置等相关知识. iO ... 
- iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面
		iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面 在1.2.2小节中提到过编辑界面(Interface builder),编辑界面是用来设计用户界面的,单击打开Main. ... 
- iOS 11开发教程(三)运行第一个iOS 11程序
		iOS 11开发教程(三)运行第一个iOS 11程序 运行iOS11程序 创建好项目之后,就可以运行这个项目中的程序了.单击运行按钮,如果程序没有任何问题的话,会看到如图1.6和1.7的运行效果. 图 ... 
- iOS Sprite Kit教程之滚动场景
		iOS Sprite Kit教程之滚动场景 滚动场景 在很多的游戏中,场景都不是静止的,而是滚动的,如在植物大战僵尸的游戏中,它的场景如图2.26所示. 图2.26 植物大战僵尸 在图2.26中,用 ... 
- iOS Sprite Kit教程之场景的切换
		iOS Sprite Kit教程之场景的切换 Sprite Kit中切换场景 每一个场景都不是单独存在的.玩家可以从一个场景中切换到另外一个场景中.本小节,我们来讲解场景切换.在每一个游戏中都会使用到 ... 
随机推荐
- enter快捷键盘
			protected override bool ProcessDialogKey(Keys keyData) { #region PageDown if (keyData == Keys.Enter) ... 
- JavaScrip——练习(做悬浮框)
			通过HTML.CSS.JSP来实现 1.首先确定通过div嵌套来实现: 大的div里放默认显示的一层,限制其总层次高,设置超出部分隐藏 小的div里放鼠标移过去时显示的一层:3行1列的表格 1.1.什 ... 
- 4种用于构建嵌入式linux系统的工具_转
			转自:4种用于构建嵌入式linux系统的工具 Linux 被部署到比 Linus Torvalds 在他的宿舍里开发时所预期的更广泛的设备.令人震惊的支持了各种芯片,使得Linux 可以应用于大大小小 ... 
- vmware克隆Centos6.4虚拟机网卡无法启动问题
			vmware克隆Centos6.4虚拟机网卡无法启动问题 2014-02-26 16:44:54 标签:老男孩培训 vmware克隆问题 网卡无法启动 ... 
- PHP无限极分类 - 2 - 无限极评论
			参考上一节: 结合ZUI前端框架,制作的无限极评论列表: 项目目录: 代码: <!DOCTYPE html> <html lang="en"> <he ... 
- each,collect map collect! map!
			arr = [1,2,3] 1) arr2 = arr.each{|element| element = element * 2} #arr与arr2仍然都等于[1,2,3] each返回原数组 ... 
- Windows消息目录
			Windows消息目录1. WM_NULL=$0000:2. WM_CREATE=$0001: 应用程序创建一个窗口3. WM_DESTROY=$0002: 一个窗口被销毁4. WM_MOVE=$00 ... 
- AOP——引言
			转自:http://wayfarer.cnblogs.com/articles/241012.html 1.引言 2.AOP技术基础3.Java平台AOP技术研究 4..Net平台AOP技术研究 软件 ... 
- php 三级连动及 php+ajax的调试方法
			js获得select的value值 把这个值以ajax的方法传给外页php处理 php得到这个value值,把它作为查询条件进行处理 ajax很神奇,会把这个结果显现出来 总之,ajax负责传值和显示 ... 
- thinkphp 自动跟新时间
			看了很多文章和资料了,明白何为真传一句话了... 模板里: <input type="text" name="time" value="{:da ... 
