問題があります。ユーザーがアプリケーションの言語を英語、オランダ語、スペイン語から選択できるビューを作成しました。次に、次のビューの 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));
ただし、コンソールに「読み込み中...お待ちください...」と表示されます。代わりに「読み込み中...ドイツ語」と表示されるはずです。
どこか間違っているのでしょうか?? アプリケーションの実行中にアプリケーションの言語を変更できますか??