关于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];

时间: 2024-10-04 01:33:12

关于NSLocalizedString(@"Foo %@",nil)的相关文章

NSLocalizedString用法

NSLocalizedString(@"Foo %@",nil):这句话实际上是在多语言文件中寻找一个key为“Foo %@”的文字,千万不要把这个和[NSString stringWithFormat:@"%@",@“hehe”];弄混了. 特别的有一种很特殊的情况,发生在Appirater这个开源工具里面. #define APPIRATER_APP_NAME @ "App" #define APPIRATER_LOCALIZED_MESSA

【转】使用genstring和NSLocalizedString实现App文本的本地化

原地址:http://www.cnblogs.com/U-tansuo/p/IOS_NSLocalizedString.html iOS提供了简便的方法来实现本地化,其中用的最多的就是NSLocalizedString. 首先查看下NSLocalizedString是什么: #define NSLocalizedString(key,comment) [[NSBundle mainBundle]localizedStringForKey:(key) value:@"" table:ni

iOS6和iOS7代码的适配(6) —— NSLocalizedString

我们的应用都是需要国际化的,字符串也是重要的一环.一般来说,我们是通过一个string资源文件来实现这个目的的,我们需要支持几种语言,就把这个文件本地化多少次.代码中需要用NSLocalizedString这个宏,比如,我希望设置一个tableView的title: self.navigationItem.title = NSLocalizedString(@"test", nil); 我们这里加了英文和简体中文两种语言. 如果客户选择了我们没有本地化的语言呢?比如,我们选择了繁体中文

iOS6和iOS7适应代码(6) —— NSLocalizedString

我们的应用程序都需要国际化,字符串的重要组成部分.一般来说.我们是通过一个string资源文件来达到这个目的,我们需要支持多国语言,有多少次把这个文档本地化.需要使用的代码NSLocalizedString这个宏.比方.我希望设置一个tableView的title: self.navigationItem.title = NSLocalizedString(@"test", nil); 我们这里加了英文和中文简体两种语言. 假设客户选择了我们没有本地化的语言呢?比方.我们选择了繁体中文

iOS 国际化 NSLocalizedString

iOS 国际化.根据系统不同的语言自动切换. 首先.选择项目 Add new file -->iOS -->Resource -->Strings File  . 命名为Localizable.strings 打开Localizable.strings.它的格式是这样的 "KEY" = "CONTENT"; 请按这种格式来输写,比如我这里是这样定义的 "testKey" = "qingjoin_english"

Exceptions and Errors on iOS

https://blog.jayway.com/2010/10/13/exceptions-and-errors-on-ios/ October 13, 2010 by Fredrik Olsson in Architecture, Cocoa, Embedded, Testing, Tips & Tricks | 6 Comments Cocoa, and by inheritance Cocoa Touch on iOS makes a clear distinction between w

iOS开发常见BUG和一些小技巧(ps:耐心看完,很实用)

[385][scrollView不接受点击事件,是因为事件传递失败] // // MyScrollView.m // Created by beyond on 15/6/6. // Copyright (c) 2015年 beyond.com All rights reserved. // 不一定要用继承,可以使用分类 #import MyScrollView.h #import CoView.h @implementation MyScrollView - (void)touchesBegan

iOS开发中遇到的一些问题及解决方案【转载】

iOS开发中遇到的一些问题及解决方案[转载] 2015-12-29 [385][scrollView不接受点击事件,是因为事件传递失败] // //  MyScrollView.m //  Created by beyond on 15/6/6. //  Copyright (c) 2015年 beyond.com All rights reserved. //  不一定要用继承,可以使用分类 #import "MyScrollView.h" #import "CoView.

iOS开发中遇到的一些问题及解决方案

原文出处:http://sg31.com [385][scrollView不接受点击事件,是因为事件传递失败] // //  MyScrollView.m //  Created by beyond on 15/6/6. //  Copyright (c) 2015年 beyond.com All rights reserved. //  不一定要用继承,可以使用分类 #import "MyScrollView.h" #import "CoView.h" @impl