2016-12-20 7 views
0

OS Xでシステム言語の変更イベントを検出する方法はありますか?システム言語の変更を検出するOS X

私はdeveloper.apple.comで検索しようとしましたが、結果はありません。

私はC++/Obj-Cのソリューションを探しています。

+0

変更によってどういう意味がありますか?システム言語を検出できれば、ほとんどのアプリケーションが行うように、あなたが作っているものであれば、起動時にそれを照会できるだけです。 –

+0

変更すると、ユーザーが変更したときの瞬間を意味します。このイベントが発生した後、私のアプリでロケールを「オンザフライ」で変更したいと思います。 – ars

答えて

1

あなたはObjective-Cの/スウィフトで作業している場合、あなたは言語の変更通知を監視するNSDistributedNotificationCenterを使用することができます。

// You are not required to register self -- this can be any object, and the selector name can be anything taking one argument. 
[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(languageChanged:) name:@"AppleLanguagePreferencesChangedNotification" object:nil]; 

あなたがいる限りの方法がかかるとして、あなたが好きなものは何でもlanguageChanged:に名前を付けることができますNSNotificationオブジェクト:

- (void)languageChanged:(NSNotification *)notification { 
    // New preferred language. 
    NSString *language = [[NSLocale preferredLanguages] firstObject]; 
} 

詳細はNSDistributedNotificationCenter docsを見てみましょう。

+1

参照のために、特定の通知名を発見するのは比較的簡単でした。 'nil'通知名と' nil'オブジェクトのためにオブザーバーを登録すると、 'NSDistributedNotificationCenter'に_all_通知が投稿されます。取得したすべての通知をログに記録する場合は、必要な操作(システム環境設定で優先言語を変更するなど)を行ってから、ログ内でその名前を確認してください。 –

関連する問題