Comment pourrais-je utiliser NSLocalizedString
pour cette chaîne:
[NSString stringWithFormat:@"Is “%@“ still correct for “%@“ tap “OK“ otherwise tap “Change“ to choose new contact details", individual.contactInfo, individual.name];
Lors de l'utilisation de stringWithFormat avant de l'avoir utilisé de la manière suivante:
[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];
Les phrases données peuvent être construites avec les parties variables dans un ordre différent dans certaines langues, alors je pense que vous devriez utiliser des arguments positionnels avec [NSString stringWithFormat:]
:
NSString *format = NSLocalizedString(@"number_of_items", @"Number of items");
Ce qui chargerait la chaîne suivante pour l'anglais:
@"Is \"%1$@\" still correct for \"%2$@\" tap \"OK\" otherwise tap \"Change\" to choose new contact details"
Et peut-être quelque chose d'autre pour le français (je ne connais pas le français donc je n'essaierai pas une traduction, mais il pourrait bien avoir le premier et le deuxième argument dans un ordre différent):
"French \"%2$@\" french \"%1$@\" french"
Et vous pouvez formater la chaîne en toute sécurité comme d'habitude:
NSString *translated = [NSString stringWithFormat:format individual.contactInfo, individual.name];
Je veux juste ajouter une définition très utile que j'utilise dans bon nombre de mes projets.
J'ai ajouté cette fonction à mon header prefix
fichier:
#define NSLocalizedFormatString(fmt, ...) [NSString stringWithFormat:NSLocalizedString(fmt, nil), __VA_ARGS__]
Cela vous permet de définir une chaîne localisée comme suit:
"ExampleScreenAuthorizationDescriptionLbl"= "I authorize the payment of %@ to %@.";
et il peut être utilisé via:
self.labelAuthorizationText.text = NSLocalizedFormatString(@"ExampleScreenAuthorizationDescriptionLbl", self.formattedAmount, self.companyQualifier);
rapide
//Localizable.strings
"my-localized-string" = "foo% @ baz";
Exemple:
myLabel.text = String(format: NSLocalizedString("my-localized-string",
comment: "foo %@ baz"), "bar") //foo bar baz