2017-05-28 14 views
3

Objective-Cプロジェクトのローカリゼーションをテストするために、起動引数(NSDoubleLocalizedStringsおよびNSShowNonLocalizedStringsなど)を使用しようとしています。何らかの理由で私はどちらも働かせることができませんでした。私は打ち上げ時に両方の引数を設定しようとしていました。enter image description here enter image description here また、私はNSUserDefaultsキーをチェックしていて、どちらもYESです。しかし、議論はまだ機能しません。起動引数(NSDoubleLocalizedStrings、NSShowNonLocalizedStrings)が機能しません

これはXcodeのバグではないことを確認するために、私はObjective-C上で全く新しい単一ビュープロジェクトを作成し、ビュー上に1つのラベルを持つSwiftを作成しました。どちらのプロジェクトは、空Localizable.stringsファイルを持っていたし、これらのプロジェクトのコードは以下の通りであった:だからここ

enter image description here

のとおりです。

@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: "") 
    } 
} 

を結果はこのように見えました質問:

1)Wh私の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で動作しないのかという2番目の質問に対する答えは、おそらくXCodeのバグでしょう。 Swiftでサポートされていないマクロと接続されている可能性があります。NSLocalizedStringは実際にはマクロです。したがって、私はradarにバグを作成しました。

関連する問題