2

Я пытаюсь использовать NSLocalizedStringFromTable, но без результатов. Я создал файл Profile.strings, нажал локализованный, в настройках проекта. Я добавляю польские и английские языки, поэтому у моего файла есть 2 «файла» внутри, и я набрал те же строки с другими значениями, но когда я переключаю языки и перезапускаю приложение, используется одна локализация (польский).NSLocalizedStringFromTable не работает

Profile.strings в Xcode:

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

польский:

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

Чтобы получить значение я называю:

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

Каждый раз, когда я это называю, у меня есть значение от Profile.strings (Polish)

Что я делаю неправильно?

+1

попробовать еще раз, удалив приложение из устройства/тренажере и перезапустить Xcode – freelancer

+0

просто для большего понимания прочитайте это http://www.cocoawithlove.com/2011/04/user-interface-strings-in-cocoa.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+CocoaWithLove+%28Cocoa+with+Love % 29 – Suny

+1

Я знаю, как работает NSLocalizedString() ', но я не знаю, почему' NSLocalizedStringFromTable() 'не работает. –

ответ

6

пытаются Reset Content и настройки тренажера он будет работать (:.

4

Может быть, вы не меняете язык правильно Попробуйте сделать это в коде, как это:.

- (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"]; 
} 

И то вы можете сделать

[self setLanguage:@"en"];

 Смежные вопросы

  • Нет связанных вопросов^_^