2

I have an issue. I had created a view, where user can select Language of application among English, Dutch & Spanish. Then texts of UILabel in next view should be according to selected language.

I have used following code to set current language :

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

** And in Localizable.strings (Spanish) : ** "Loading... Please wait...” = “Loading... in Spanish”;

** And in Localizable.strings (German) : ** "Loading... Please wait...” = “Loading... in German”;

I have used following code to get current language in next view :

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


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

But it prints "Loading... Please wait...” in Console. It should print "Loading... in German” instead.

Is am going wrong somewhere ?? Can I change language of application while application is running ??

Surjit Joshi
  • 3,287
  • 2
  • 18
  • 20

0 Answers0