2

Hi friends I am new to iphone. In my project am using localizations to change the language of an app. I done it but the problem. When app gets stopped and run again the language set through localization is not getting retained. So I read we need to save the languge set by localization in NSUserDefaults. Please help me. How to save it in NSUserDefaults and callback when app gets launched? Here is the code. In this way I set language

- (IBAction)EngLang:(id)sender {
    [[Localization sharedInstance] setPreferred:@"en" fallback:@"es"];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:@"en" forKey:@"Applanguage"];   
}

- (IBAction)espLang:(id)sender {
    [[Localization sharedInstance] setPreferred:@"es" fallback:@"en"];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:@"es" forKey:@"Applanguage"];
}

How to save the language in NSUserDefaults and How to call it when app gets launched? Now I saved the language in NSUserDefaults. How to read it? This is the code I used to read. I done this in appDelegate.

[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"en",@"es", nil] forKey:@"Applanguage"];
[[NSUserDefaults standardUserDefaults] synchronize];
Bannings
  • 10,376
  • 7
  • 44
  • 54
Naresh
  • 143
  • 3
  • 12

2 Answers2

2

Try this.

// Set languge en
- (IBAction)EngLang:(id)sender {
    [[Localization sharedInstance] setPreferred:@"en" fallback:@"es"];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:@"en" forKey:@"Applanguage"];
    [defaults synchronize];
}

// Set languge es
- (IBAction)espLang:(id)sender {
    [[Localization sharedInstance] setPreferred:@"es" fallback:@"en"];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:@"es" forKey:@"Applanguage"];
    [defaults synchronize];
}

// Call this method on launching.
- (void) retainTheLastSettedLanguage
{
    NSString * currentLanguage ;

    if ([[NSUserDefaults standardUserDefaults] valueForKey:@"Applanguage"] != nil)
     {
        currentLanguage = [[NSUserDefaults standardUserDefaults] valueForKey:@"Applanguage"];
        if ([currentLanguage isEqualToString:@"en"]) 
        {
           [[Localization sharedInstance] setPreferred:@"en" fallback:@"es"];   
        }
        else
        {
           [[Localization sharedInstance] setPreferred:@"es" fallback:@"en"];    
        }
     }    
}
sideshowbarker
  • 81,827
  • 26
  • 193
  • 197
QCG
  • 2,569
  • 3
  • 20
  • 25
0

try this for save the value

- (IBAction)EngLang:(id)sender {
    [[Localization sharedInstance] setPreferred:@"en" fallback:@"es"];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:@"en" forKey:@"Applanguage"];
     [defaults synchronize];

}

- (IBAction)espLang:(id)sender {
    [[Localization sharedInstance] setPreferred:@"es" fallback:@"en"];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:@"es" forKey:@"Applanguage"];
   [defaults synchronize];

}
Sport
  • 8,570
  • 6
  • 46
  • 65
  • then how to call it back when app gets launched – Naresh Jan 31 '14 at 04:13
  • pls help hoe to do it friend – Naresh Jan 31 '14 at 04:19
  • [[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"en",@"es", nil] forKey:@"Applanguage"]; [[NSUserDefaults standardUserDefaults] synchronize]; i done to this to read in my appdelegate. – Naresh Jan 31 '14 at 04:20
  • i gone through the link but where they save the language in NSuserdefaults – Naresh Jan 31 '14 at 04:25
  • look at this http://stackoverflow.com/questions/5912018/language-change-only-after-restart-on-iphone – Sport Jan 31 '14 at 05:07