2

多言語のナビゲーションコントローラーベースのアプリケーションを開発しました。アプリケーションのメインメニューには、以下の設定画面もあります。ユーザーは言語ボタンを押すとアプリケーション言語に変更できます。メインメニュー画面と設定画面の言語を更新したいユーザーが言語を変更したときしかし、私はしませんでした。

設定画面

4

4 に答える 4

4
NSString *path = [[NSBundle mainBundle] pathForResource:@"nl" ofType:@"lproj"];
NSBundle *bundle = [NSBundle bundleWithPath:path];
NSString *englishWord = @"translate";
NSString *translation = [bundle localizedStringForKey:englishWord value:englishWord table:nil];
NSLog(@"%@ = %@", englishWord, translation);

// nl.lproj/Localizable.strings:
"translate" = "vertaal"
于 2012-08-13T08:15:23.483 に答える
1

Appleはアプリでの言語選択を推奨していないことに注意してください。最善の解決策は、ビューをローカライズしてNSLocalizableStringを使用し、アプリの言語を電話の設定の言語に従わせることです。

于 2012-08-13T08:28:42.323 に答える
0

AppDelegateでメソッド(plistからロードされた言語文字列の辞書を返す)を作成します。ユーザーが言語を選択するたびに、それに応じてNSUserDefaultsを設定し、アプリデリゲートでそのメソッドを呼び出します。次に、すべてのコントローラーのviewWillAppearでこのメソッドを使用し、目的の言語辞書を取得してビューをロードします。

-(NSMutableDictionary*)getCurrentLanguageDictionaryFromResource
{
    NSString *defaultPath;
    defaultPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@.plist",[self getAppCurrentSettingsLanguage]] ofType:nil];
    if(languageDictionary !=nil)
    {
        [languageDictionary release];
        languageDictionary=nil;
    }
    languageDictionary  = [[NSMutableDictionary alloc] initWithContentsOfFile:defaultPath];


    return languageDictionary;
}
于 2012-08-13T09:02:18.680 に答える
-1

言語を変更したい場合は、アプリケーションを再起動する必要があります。

このために、ローカル通知を使用して、アプリケーションが今すぐ再起動されることをユーザーに示す適切なメッセージでアプリケーションを再起動できます。

この説明がお役に立てば幸いです......

于 2012-08-13T08:02:40.763 に答える