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中切换场景 每一个场景都不是单独存在的.玩家可以从一个场景中切换到另外一个场景中.本小节,我们来讲解场景切换.在每一个游戏中都会使用到 ...
随机推荐
- 基于jquery网站左侧下拉菜单
网站左侧下拉菜单jQuery代码.这是一款蓝色风格的适合做后台下拉菜单代码.效果图如下: 在线预览 源码下载 实现的代码: <div class="container"& ...
- dubbox2.8.4例子教程二
简介 上篇博客写了个dubbox生产者,也用HttpClient代码测试了rest服务,下面记录dubbox消费者工程 一.工程结构 一.Simple.java package bhz.ent ...
- kernel 生成uImage
有些u-boot 指定要链接uImage 所以今天记录一下kernel 生成uImage 的条件 在kernel 配置完make menuconfig 后,进行编译,发现make uImage 生成不 ...
- /etc/fstab下的挂载类型defaults默认参数
[root@ob2 data]# cat /etc/fstab -98c0-59dbbcf8b040 / ext4 defaults UUID=e4ab7a0c-500f--bcd2-a77be0ce ...
- QFTPERROR lists
- Oracle的sql语句中关键字冲突用双引号
select distinc user from instrument where created>"TO_DATE"('2015-02-05 12:00:00', 'yyy ...
- 02 Architecture Overview
本章提要---------------------------------------------arthiecture, and some componentconnect to oracle这一章 ...
- js学习笔记16----父节点的操作
1.元素.parentNode : 只读属性,获取当前元素的父节点. 2.元素.offsetParent : 只读属性,获取离当前元素最近的一个有定位属性(position为relative或者abs ...
- Javascript函数声明与函数表达式的区别
在定义函数时,我们一般使用下面这两种方法: 使用函数声明定义: 1 2 3 function sum (a, b) { return a + b; } 使用函数表达式定义: 1 2 3 va ...
- C语言 static静态变量
静态变量类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间 ...