在运行应用程序时以编程方式更改iPhone的NSLocale /语言

时间:2012-05-02 13:07:29

标签: iphone nsuserdefaults nslocalizedstring nslocale

我有一个问题。我创建了一个视图,用户可以在其中选择英语,荷兰语和英语中的应用语言。西班牙。然后在下一个视图中的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));

但是它在控制台中打印“正在载入...请稍候...”。它应该打印“正在装载......用德语”。

某处出错了?在应用程序运行时我可以更改应用程序的语言吗?

0 个答案:

没有答案