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));

但它会在控制台中打印“Loading... Please wait...”。它应该打印“Loading... in German”。

是不是哪里出错了??我可以在应用程序运行时更改应用程序的语言吗?

4

0 回答 0