gpt4 book ai didi

iOS - genStrings -s 无法使用替换功能

转载 作者:行者123 更新时间:2023-11-29 02:10:14 24 4
gpt4 key购买 nike

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.

如果我们检查名为 Localized.strings 的输出文件,它看起来像这样:

 ?%%

最佳答案

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

[self CustomLocalizedString:@"my key" defaultString:@"my default"];

我把它改成了

CustomLocalizedString(@"my key",@"my default");

这解决了问题。您可能必须像我一样为函数命名,并在 LocalizedString 部分添加前缀,但请仔细检查我是否在该部分上写入。

关于iOS - genStrings -s 无法使用替换功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29358486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com