iOS有一个genStrings函数来帮助将从NSLocalizedString (和相关函数)到输出的键值对的调用本地化,以便进行转换。
看看我的.h文件:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
-(NSString*)CustomLocalizedString :(NSString*) key defaultString:(NSString*)comment;
@end这里,CustomLocalizedString将是我的替代函数,而不是NSLocalizedString。
让我们看看.m实现文件:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self CustomLocalizedString:@"my key" defaultString:@"my default"];
}
-(NSString*)CustomLocalizedString:(NSString *)key defaultString:(NSString *)comment{
NSString* mystring= NSLocalizedString(key ,comment);
return mystring;
}
@end当我转到命令行运行genStrings并告诉它使用我的自定义函数时:
genstrings -o . -s CustomLocalizedString ViewController.m但结果是奇怪的:
Bad entry in file ViewController.m (line = 19): Argument is not a literal string.
Bad entry in file ViewController.m (line = 24): Argument is not a literal string.
Bad entry in file ViewController.m (line = 26): Argument is not a literal string.如果我们检查名为Localizable.strings的输出文件,它如下所示:
?%%发布于 2015-03-31 00:16:47
我发现了问题。看来,自定义函数必须遵循与NSLocalizedString函数完全相同的方法签名。我在用
[self CustomLocalizedString:@"my key" defaultString:@"my default"];我把它换成了
CustomLocalizedString(@"my key",@"my default");这解决了这个问题。您可能必须将函数命名,就像我在LocalizedString部分前面所做的一样,但是要再次检查im是否在该部分上写。
https://stackoverflow.com/questions/29358486
复制相似问题