I'm trying to use NSLocalizedStringFromTable but with no results. I've got created Profile.strings file, clicked localized, in project settings I add Polish and English languages, so my file has 2 "files" inside and I typed the same strings with other values but when I switch languages and restart app there is still one localization used (Polish).

Profile.strings in Xcode:

Profile.strings
    Profile.strings (Polish)
    Profile.strings (English)

Polish:

"fullName.placeholder" = "Imie i nazwisko";

"emailAddress.placeholder" = "Adres email";

"phoneNumber.placeholder" = "Numer telefonu";

English:

"fullName.placeholder" = "Full name";

"emailAddress.placeholder" = "Email address";

"phoneNumber.placeholder" = "Phone number";

To get value I call:

NSLocalizedStringFromTable(@"fullName.placeholder", @"Profile", @"");

Any time I call this I've got value from Profile.strings (Polish)

What I'm doing wrong?

有帮助吗?

解决方案

try to Reset Content and Settings of simulator it will work (:

其他提示

Maybe you're not changing the language correctly. Try doing it in code. Like this:

- (void) setLanguage:(NSString*) l{
    for (NSString *language1 in [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]) {
        NSBundle *bundle1 = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language1 ofType:@"lproj"]];
        NSLog(@"%@: %@", language1, NSLocalizedStringFromTableInBundle(@"left", @"Localizable", bundle1, nil));
    }
    NSBundle *bundle1 = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:l ofType:@"lproj"]];
    /*
   if ([l isEqualToString:@"en"]) {
       bundle1 = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"English" ofType:@"lproj"]];
   }
    */


    if (bundle1 == nil)
        //in case the language does not exists
        [self resetLocalization];
    else
        bundle = bundle1;
    NSMutableArray *langs = [NSMutableArray arrayWithArray: [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]];
    [langs removeObject:l];
    NSMutableArray *newLangs = [NSMutableArray arrayWithObject:l];
    [newLangs addObjectsFromArray:langs];

    [[NSUserDefaults standardUserDefaults] setObject: newLangs forKey:@"AppleLanguages"];
}

And then you can do

[self setLanguage:@"en"];

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top