OS Xでシステム言語の変更イベントを検出する方法はありますか?システム言語の変更を検出するOS X
私はdeveloper.apple.comで検索しようとしましたが、結果はありません。
私はC++/Obj-Cのソリューションを探しています。
OS Xでシステム言語の変更イベントを検出する方法はありますか?システム言語の変更を検出するOS X
私はdeveloper.apple.comで検索しようとしましたが、結果はありません。
私はC++/Obj-Cのソリューションを探しています。
あなたは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を見てみましょう。
参照のために、特定の通知名を発見するのは比較的簡単でした。 'nil'通知名と' nil'オブジェクトのためにオブザーバーを登録すると、 'NSDistributedNotificationCenter'に_all_通知が投稿されます。取得したすべての通知をログに記録する場合は、必要な操作(システム環境設定で優先言語を変更するなど)を行ってから、ログ内でその名前を確認してください。 –
変更によってどういう意味がありますか?システム言語を検出できれば、ほとんどのアプリケーションが行うように、あなたが作っているものであれば、起動時にそれを照会できるだけです。 –
変更すると、ユーザーが変更したときの瞬間を意味します。このイベントが発生した後、私のアプリでロケールを「オンザフライ」で変更したいと思います。 – ars