Я попытался использовать переменную в качестве входного параметра к NSLocalizedString, но все, что я возвращаю, является входным параметром. Что я делаю неправильно? Действительно ли возможно использовать значение переменной строки в качестве индекса для строки NSLocalized?
Например, у меня есть некоторые строки, что я хочу, чтобы локализованные версии были отображены. Однако я хотел бы использовать переменную в качестве параметра для NSLocalizedString вместо постоянной строки. Аналогично, я хотел бы включать элементы форматирования в параметр для NSLocalizedString, таким образом, я смогу к полученному локализованная версия строки с теми же параметрами форматирования. Могу я делать следующее:
Случай 1: переменный NSLocalizedstring:
NSString *varStr = @"Index1";
NSString *string1 = NSLocalizedString(varStr,@"");
Случай 2: отформатированный NSLocalizedString:
NSString *string1 = [NSString stringWithFormat:NSLocalizedString(@"This is an %@",@""),@"Apple"];
(Обратите внимание на то, что переменная может содержать что-либо, не только фиксированный набор строк.)
Спасибо!
Если вы хотите вернуть локализованную версию «Это Apple / Orange / что угодно», вам нужно:
NSString *localizedVersion = NSLocalizedString(([NSString stringWithFormat:@"This is an %@", @"Apple"]), nil);
(т.е. вложенность NSLocalizedString ()
и [NSString stringWithFormat:]
меняются местами.)
Если вы хотите локализовать формат , но не подставляемое значение, выполните это:
NSString *finalString = [NSString stringWithFormat:NSLocalizedString(@"SomeFormat", nil), @"Apple"];
И в вашем Localizable.strings
:
SomeFormat = "This is an %@";
Ваши идеи должны работать. Но если вы возвращаете входной параметр, это означает, что входной параметр не был найден в качестве ключа в вашем файле Localizable.strings. Проверьте синтаксис и расположение этого файла.