4

アプリの言語を変更したい。現時点では以下の方法でやっています。NSUserDefaults の言語を変更する 2 つのボタンがあります。しかし、これが私のアプリに影響を与える前に、再起動する必要があります。

これが私のコードです。

- (IBAction)changeDutch:(id)sender {
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"nl", @"en", nil] forKey:@"AppleLanguages"];

}
- (IBAction)changeEnglish:(id)sender {
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", @"nl", nil] forKey:@"AppleLanguages"];
}

これはうまくいきます。しかし、毎回アプリを再起動する必要はありません。誰でもその方法を教えてもらえますか?

敬具!

4

4 に答える 4

6

HMLocalization をチェックしてください: https://github.com/HeshamMegid/HMLocalization

これは、デフォルトのローカリゼーション フレームワークを置き換えるものです。アプリを再起動せずに言語を変更する方法を示すデモがあります。

于 2012-12-11T08:57:50.893 に答える
1

データが入っている場合は、UITableViewを使用できます[tableView reloadData];。アプリの言語を で設定しappDelegate、定数で定義してキーを設定し、IBAction呼び出し時にそれらのキーを に保存することもできますNSUserDefaults

于 2012-12-11T08:52:31.943 に答える
1

再起動せずにアプリの言語を変更する方法がありますこのチュートリアルの投稿で言及しましたアプリで試してみましたが、ほとんどの場合動作しますがMore、タブバーのタブ、EditボタンオンMoreNavigationControllerCancelボタンオンなどのシステムアイテムを使用している場合はUISearchBar、テキストがありますアプリを再起動しないと、選択した言語に変更できません。アプリの代わりに iOS によって制御されるようなアイテムがない場合、これは完璧なソリューションです。

于 2012-12-11T09:13:37.433 に答える
0

ローカライゼーションにどちらの方法を使用しているかというと、フォルダー構造のみを維持するか、Db から取得するだけのネイティブです。

とにかく、ネイティブ部分を使用している場合は、言語オプションを置き換えることができると思うので、次のリンクを参照してください。

「http://stackoverflow.com/questions/3910244/getting-current-device-language-in-ios」(率直に言って、わかりません)

しかし、db 部分を使用している場合は、enum ベースのタクトを使用するだけで、それに従ってデータをフェッチするだけです。このアプローチは、私がすでに非常に多くのアプリで適用しているため、簡単です。

ご不明な点がございましたら、私に戻ってください。:)

于 2012-12-11T08:52:45.123 に答える