NSLocalizedString with format
Given sentences can be constructed with the variable parts in a different order in some languages then I think you should use positional arguments with [NSString stringWithFormat:]
:
NSString *format = NSLocalizedString(@"number_of_items", @"Number of items");
Which would load the following string for English:
@"Is \"%1$@\" still correct for \"%2$@\" tap \"OK\" otherwise tap \"Change\" to choose new contact details"
And perhaps something else for French (I don't know French so I won't attempt a translation, but it could well have the first and second argument in a different order):
"French \"%2$@\" french \"%1$@\" french"
And you can safely format the string as normal:
NSString *translated = [NSString stringWithFormat:format individual.contactInfo, individual.name];
I just want to add one very helpful definition which I use in many of my projects.
I've added this function to my header prefix
file:
#define NSLocalizedFormatString(fmt, ...) [NSString stringWithFormat:NSLocalizedString(fmt, nil), __VA_ARGS__]
This allows you to define a localized string like the following:
"ExampleScreenAuthorizationDescriptionLbl"= "I authorize the payment of %@ to %@.";
and it can be used via:
self.labelAuthorizationText.text = NSLocalizedFormatString(@"ExampleScreenAuthorizationDescriptionLbl", self.formattedAmount, self.companyQualifier);
[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];