2017-05-28 102 views
3

我试图使用启动参数(如NSDoubleLocalizedStringsNSShowNonLocalizedStrings)在我的Objective-C项目中测试本地化。出于某种原因,我无法让他们都没有工作。我尝试在方案设置中设置启动和选项两个参数:enter image description here enter image description here 另外我已检查了NSUserDefaults密钥,它们都是YES。但是这些论点仍然不起作用。启动参数(NSDoubleLocalizedStrings,NSShowNonLocalizedStrings)不起作用

为了确保它不是XCode错误,我在Objective-C和Swift上创建了绝对新的单视图项目,视图上有一个标签。这两个项目都空Localizable.strings文件,并在这些项目中的代码为以下几点:

@interface ViewController() 
@property (nonatomic, strong) IBOutlet UILabel *label; 
@end 

@implementation ViewController 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.label.text = NSLocalizedString(@"Some text", nil); 
} 
@end 

class ViewController: UIViewController { 
    @IBOutlet var label: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     label.text = NSLocalizedString("Some text", comment: "") 
    } 
} 

结果是这样的:

enter image description here

因此,这里是问题:

1)Wh at可能是启动参数在我的Objective-C项目中不起作用的原因?

2)为什么NSDoubleLocalizedStrings参数在Swift中不起作用?

回答

1

花了几天的时间调查并逐渐删除我的Objective-C项目中的所有文件和框架我发现原因在于AFNetworking库。该问题描述为here。如果你想在你的项目中使用AFNetworking和调试本地化问题,您可以添加这样的行application: didFinishLaunchingWithOptions:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setBool:YES forKey:@"NSDoubleLocalizedStrings"]; 
[defaults setBool:YES forKey:@"NSShowNonLocalizedStrings"]; 
[defaults synchronize]; 

推出的应用程序,你会看到那些推出论点工作。

关于为什么NSDoubleLocalizedStrings参数在Swift中无效的第二个问题的答案是它可能是XCode中的一个错误。它可能与Swift不支持的宏相关,并且NSLocalizedString实际上是一个宏。因此我在radar上创建了一个bug。