关于NSLocalizedString(@"Foo %@",nil)
NSLocalizedString(@"Foo %@",nil) 这句话实际上是在多语言文件中寻找一个key为“Foo %@”的文字,千万不要把这个和[NSString stringWithFormat:@"%@",@“hehe”];弄混了。
特别的有一种很特殊的情况,发生在Appirater这个开源工具里面。
对于以下的代码
#define APPIRATER_APP_NAME @ "App"
#define APPIRATER_LOCALIZED_MESSAGE_TITLE NSLocalizedString(@"Rate %@", nil)
#define APPIRATER_MESSAGE_TITLE [NSString stringWithFormat:APPIRATER_LOCALIZED_MESSAGE_TITLE, APPIRATER_APP_NAME]
乍看上去,以为最终的结果是在多语言文件中找key为“Rate App”的代码,实际上并不是!
最终APPIRATER_MESSAGE_TITLE的结果是:先在多语言文件中寻找key为“Rate %@”的文字,如果找到,则返回这个文字,忽略stringWithFormat里面那个APPIRATER_APP_NAME,如果找不到,再返回“Rate App”!
是不是很诡异啊。。。这个用法实在是太强悍太神奇了:)
再具体一点:
比如我做
NSString *string = APPIRATER_MESSAGE_TITLE;
如果能在多语言文字里面找到key为“Rate %@”的文字,string就直接返回这个文字,即返回NSLocalizedString(@"Rate %@", nil)
如果找不到,则返回 [NSString stringWithFormat:@"Rate %@",APPIRATER_APP_NAME];
关于NSLocalizedString(@"Foo %@",nil)的更多相关文章
- 【转】使用genstring和NSLocalizedString实现App文本的本地化
原地址:http://www.cnblogs.com/U-tansuo/p/IOS_NSLocalizedString.html iOS提供了简便的方法来实现本地化,其中用的最多的就是NSLocali ...
- iOS 本地化应用程序(NSLocalizedString)
App本地化的需要不用讲大家也都明白,本文将介绍一种简单的方法来实现字符串的本地化. 在不考虑本地化的情况下,我们如果在代码中给一个Button定义title,一般会这样写: btn.titleLab ...
- IOS中的id与nil
1 id id和void *并非完全一样.在上面的代码中,id是指向struct objc_object的一个指针,这个意思基本上是说,id是一个指向任何一个继承了Object(或者NSObject) ...
- iOS6和iOS7适应代码(6) —— NSLocalizedString
我们的应用程序都需要国际化,字符串的重要组成部分.一般来说.我们是通过一个string资源文件来达到这个目的,我们需要支持多国语言,有多少次把这个文档本地化.需要使用的代码NSLocalizedStr ...
- 使用genstring和NSLocalizedString实现App文本的本地化
OS提供了简便的方法来实现本地化,其中用的最多的就是NSLocalizedString. 首先查看下NSLocalizedString是什么: #define NSLocalizedString(ke ...
- iOS 国际化 NSLocalizedString
iOS 国际化.根据系统不同的语言自动切换. 首先.选择项目 Add new file -->iOS -->Resource -->Strings File . 命名为Locali ...
- iOS6和iOS7代码的适配(6) —— NSLocalizedString
我们的应用都是需要国际化的,字符串也是重要的一环.一般来说,我们是通过一个string资源文件来实现这个目的的,我们需要支持几种语言,就把这个文件本地化多少次.代码中需要用NSLocalizedStr ...
- redis的lua脚本拓展,返回nil及其判断
redis自带的lua脚本 127.0.0.1:6379> hget team wyc "{\"name\":\"wyycc\",\" ...
- XCODE 4.5 IOS多语言设置 及NSLocalizedString和NSLocalizedStringFromTable的用法。
前 些天升级到Xcode4.5,现在正在用Xcode4.5+IOS6开发项目,当使用国际化时,遇到了一点问题,之前版本Xcode上新建 Localizable.strings后,添加语言的“+”号不见 ...
随机推荐
- Django操作数据库
引入models的定义 from app.models import myclass class myclass(): aa = models. CharField (max_leng ...
- 教育O2O在学校落地,学堂在线瞄准混合式教学
(大讲台—国内首个it在线教育混合式自适应学习平台.) 进入2015年,互联网教育圈最火的词非“教育O2O”莫属.不断刷新的融资金额和速度,不断曝光的正面和负面新闻,都让教育O2O公司赚足了眼球.然并 ...
- log4j配置文件写法
### direct log messages to stdout ###log4j.rootLogger=DEBUG,stdoutlog4j.appender.stdout=org.apache.l ...
- 开发设计模式(八)抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式主要有以下角色: 抽象工厂角色:担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关的.通常使用接口或抽象类实现. 具体工厂角色:这个角色直接在客户端的调用下创建产品的实 ...
- VS Extension: WPF : 使用全局方式 设置 窗体 foreground background
VS Extension 中 创建 WPF窗体后,总希望窗体的前后背景色和VS当前配色方案一致. 对每个control使用下列定义可以达到效果 Background="{DynamicRes ...
- codeforces 391C3 - The Tournament
在第8组数据上WA了一天,后来才发现问题: #include<iostream> #include<cstdio> #include<cstring> #inclu ...
- Java 编程:如何提高性能?(简单总结篇)
开发者在编程中除了要有编程规范,还要注意性能,在 Java 编程中有什么提高性能的好办法呢? 本文转自国内 ITOM 行业领军企业 OneAPM Cloud Insight(一款能够优雅监控多种操作系 ...
- 增加Android可用内存
In the development of TV applications, especially when dealing with images were more likely to feel ...
- 实时时钟、系统时钟和CPU时钟的区别
http://blog.sina.com.cn/s/blog_68f909c30100pli7.html 实时时钟:RTC时钟,用于提供年.月.日.时.分.秒和星期等的实时时间信息,由后备电池供电,当 ...
- Android USB Host 与 Hid 设备通信bulkTransfer()返回-1问题的原因
近期一直在做Android USB Host 与USB Hid设备(STM32FXXX)的通信,遇到了很多问题.项目源码以及所遇到的其他问题可以见本博客其他相关文章,这里重点讲一下bulkTransf ...