2

問題があります。ユーザーがアプリケーションの言語を英語、オランダ語、スペイン語から選択できるビューを作成しました。次に、次のビューの UILabel のテキストは、選択した言語に従う必要があります。

次のコードを使用して現在の言語を設定しました。

 NSLog(@"%@", NSLocalizedString(@"Loading... Please wait...", nil));

 int index = 2;
 NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
 NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"];

 switch (index) 
 {
    case 0:
        languages = [NSArray arrayWithObjects:@"en",@"de",@"es", nil];
        break;

    case 1:
        languages = [NSArray arrayWithObjects:@"de",@"en",@"es", nil];
        break;

    case 2:
        languages = [NSArray arrayWithObjects:@"es", @"en", @"de", nil];
        break;

  }
   [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];
   [[NSUserDefaults standardUserDefaults] synchronize];     

   NSLog(@"%@", NSLocalizedString(@"Loading... Please wait...", nil));

** Localizable.strings (スペイン語) : ** "読み込み中... お待ちください..." = "読み込み中... スペイン語";

** Localizable.strings (ドイツ語) : ** "読み込み中... お待ちください..." = "読み込み中... ドイツ語";

次のコードを使用して、次のビューで現在の言語を取得しました。

 NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
 NSArray* languages = [defs objectForKey:@"AppleLanguages"];
 NSString* preferredLang = [languages objectAtIndex:0];
 NSLog(@"preferredLang: %@", preferredLang);


 NSLog(@"%@", NSLocalizedString(@"Loading... Please wait...", nil));

ただし、コンソールに「読み込み中...お待ちください...」と表示されます。代わりに「読み込み中...ドイツ語」と表示されるはずです。

どこか間違っているのでしょうか?? アプリケーションの実行中にアプリケーションの言語を変更できますか??

4

0 に答える 0