关于NSLocalizedString(@"Foo %@",nil)

Posted *新星月-倪新生*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于NSLocalizedString(@"Foo %@",nil)相关的知识,希望对你有一定的参考价值。

链接地址:http://www.cnblogs.com/flyFreeZn/archive/2013/11/16/3427244.html

关于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)的主要内容,如果未能解决你的问题,请参考以下文章

NSLocalizedString 问题

使用 NSLocalizedString 或 .xib 进行本地化

NSLocalizedString 有时会加载字符串,但并非总是如此

cell.textLabel.text NSLocalizedString 参数

NSLocalizedString - 强制国家特定的字符串文件

强制NSLocalizedString使用特定语言