【问题标题】:iOS - genStrings -s not able to use replacement functioniOS - genStrings -s 无法使用替换功能
【发布时间】:2015-03-31 00:13:26
【问题描述】:

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 的输出文件,它看起来像这样:

 ?%%

【问题讨论】:

    标签: ios genstrings


    【解决方案1】:

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

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

    我改成

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

    这解决了问题。您可能必须像我在 LocalizedString 部分之前所做的那样命名该函数,但请仔细检查我是否在该部分上写入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-12
      • 2016-10-29
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      相关资源
      最近更新 更多