2017-05-28 77 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。