web-dev-qa-db-fra.com

NSLocalizedString avec format

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)];
36
Peter Warbo
[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];
69
Hot Licks

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];
31
trojanfoe

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);
12
Alexander

rapide

//Localizable.strings

"my-localized-string" = "foo% @ baz";

Exemple:

myLabel.text = String(format: NSLocalizedString("my-localized-string", 
                                       comment: "foo %@ baz"), "bar") //foo bar baz
0
Peter Kreinz