Ответ 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];
Как использовать 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)];
[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];
Указанные предложения могут быть построены с переменными частями в другом порядке на некоторых языках, тогда я думаю, что вы должны использовать позиционные аргументы с [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];
Я просто хочу добавить одно очень полезное определение, которое я использую во многих своих проектах.
Я добавил эту функцию в мой файл 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);