首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS - genStrings -s不能使用替换函数

iOS - genStrings -s不能使用替换函数
EN

Stack Overflow用户
提问于 2015-03-31 00:13:26
回答 1查看 671关注 0票数 0

iOS有一个genStrings函数来帮助将从NSLocalizedString (和相关函数)到输出的键值对的调用本地化,以便进行转换。

看看我的.h文件:

代码语言:javascript
复制
   #import <UIKit/UIKit.h>

@interface ViewController : UIViewController

-(NSString*)CustomLocalizedString :(NSString*) key defaultString:(NSString*)comment;

@end

这里,CustomLocalizedString将是我的替代函数,而不是NSLocalizedString。

让我们看看.m实现文件:

代码语言:javascript
复制
    #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并告诉它使用我的自定义函数时:

代码语言:javascript
复制
genstrings -o . -s CustomLocalizedString ViewController.m

但结果是奇怪的:

代码语言:javascript
复制
  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的输出文件,它如下所示:

代码语言:javascript
复制
 ?%%
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-31 00:16:47

我发现了问题。看来,自定义函数必须遵循与NSLocalizedString函数完全相同的方法签名。我在用

代码语言:javascript
复制
[self CustomLocalizedString:@"my key" defaultString:@"my default"];

我把它换成了

代码语言:javascript
复制
CustomLocalizedString(@"my key",@"my default");

这解决了这个问题。您可能必须将函数命名,就像我在LocalizedString部分前面所做的一样,但是要再次检查im是否在该部分上写。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29358486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档