Подтвердить что ты не робот

NSLocalizedString с форматом

Как использовать NSLocalizedString для этой строки:

[NSString stringWithFormat:@"Is "%@" still correct for "%@" tap "OK" otherwise tap "Change" to choose new contact details", individual.contactInfo, individual.name];

При использовании stringWithFormat, прежде чем использовать его следующим образом:

[NSString stringWithFormat:@"%d %@", itemCount, NSLocalizedString(@"number of items", nil)];
4b9b3361

Ответ 1

[NSString stringWithFormat:NSLocalizedString(@"Is "%@" still correct for "%@" tap "OK" otherwise tap "Change" to choose new contact details", @"Query if parm 1 is still correct for parm 2"), individual.contactInfo, individual.name];

Ответ 2

Указанные предложения могут быть построены с переменными частями в другом порядке на некоторых языках, тогда я думаю, что вы должны использовать позиционные аргументы с [NSString stringWithFormat:]:

NSString *format = NSLocalizedString(@"number_of_items", @"Number of items");

Что бы загрузить следующую строку для английского языка:

@"Is \"%[email protected]\" still correct for \"%[email protected]\" tap \"OK\" otherwise tap \"Change\" to choose new contact details"

И, возможно, что-то другое для французского (я не знаю французского, поэтому я не буду пытаться выполнить перевод, но он может иметь первый и второй аргументы в другом порядке):

"French \"%[email protected]\" french \"%[email protected]\" french"

И вы можете безопасно форматировать строку как обычно:

NSString *translated = [NSString stringWithFormat:format individual.contactInfo, individual.name];

Ответ 3

Я просто хочу добавить одно очень полезное определение, которое я использую во многих своих проектах.

Я добавил эту функцию в мой файл header prefix:

#define NSLocalizedFormatString(fmt, ...) [NSString stringWithFormat:NSLocalizedString(fmt, nil), __VA_ARGS__]

Это позволяет определить локализованную строку следующим образом:

 "ExampleScreenAuthorizationDescriptionLbl"= "I authorize the payment of %@ to %@.";

и его можно использовать с помощью:

self.labelAuthorizationText.text = NSLocalizedFormatString(@"ExampleScreenAuthorizationDescriptionLbl", self.formattedAmount, self.companyQualifier);