Possibilité d’utiliser des variables et / ou des parameters avec NSLocalizedSsortingng?

J’ai essayé d’utiliser une variable comme paramètre d’entrée pour NSLocalizedSsortingng, mais tout ce que je récupère est le paramètre d’entrée. Qu’est-ce que je fais mal? Est-il possible d’utiliser une valeur de chaîne de variable en tant qu’index pour la chaîne NSLocalized?

Par exemple, j’ai des chaînes que je veux afficher des versions localisées. Cependant, je voudrais utiliser une variable comme paramètre de NSLocalizedSsortingng, au lieu d’une chaîne constante. De même, je souhaiterais inclure des éléments de formatage dans le paramètre de NSLocalizedSsortingng, afin de pouvoir récupérer une version localisée de la chaîne avec les mêmes parameters de formatage. Puis-je faire ce qui suit:

Cas 1: Variable NSLocalizedssortingng:

NSSsortingng *varStr = @"Index1"; NSSsortingng *ssortingng1 = NSLocalizedSsortingng(varStr,@""); 

Cas 2: NSLocalizedSsortingng formaté:

 NSSsortingng *ssortingng1 = [NSSsortingng ssortingngWithFormat:NSLocalizedSsortingng(@"This is an %@",@""),@"Apple"]; 

(Veuillez noter que la variable peut contenir n’importe quoi, pas simplement un ensemble fixe de chaînes.)

Merci!

Si vous voulez retourner la version localisée de “Ceci est un Apple / Orange / peu importe”, vous voudriez:

 NSSsortingng *localizedVersion = NSLocalizedSsortingng(([NSSsortingng ssortingngWithFormat:@"This is an %@", @"Apple"]), nil); 

(C’est-à-dire que l’imbrication de NSLocalizedSsortingng() et de [NSSsortingng ssortingngWithFormat:] est inversée.)

Si ce que vous voulez est le format à localiser, mais pas la valeur de substitution, procédez comme suit:

 NSSsortingng *finalSsortingng = [NSSsortingng ssortingngWithFormat:NSLocalizedSsortingng(@"SomeFormat", nil), @"Apple"]; 

Et dans vos Localizable.ssortingngs :

 SomeFormat = "This is an %@"; 

Je veux juste append une définition très utile que j’utilise dans beaucoup de mes projets.

Inspiré par la possibilité des androïdes, j’ai ajouté cette fonction à mon fichier de header prefix :

 #define NSLocalizedFormatSsortingng(fmt, ...) [NSSsortingng ssortingngWithFormat:NSLocalizedSsortingng(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 = NSLocalizedFormatSsortingng(@"ExampleScreenAuthorizationDescriptionLbl", self.formattedAmount, self.companyQualifier); 

Pour rapide:

 let mySsortingng = Ssortingng(format: NSLocalizedSsortingng("I authorize the payment of %d ", comment: ""), amount) 

Il s’avère qu’une entrée de cible manquante est à blâmer. Le simple fait de vérifier que ma cible de construction actuelle inclut le fichier Localizable.ssortingng a résolu le problème!

Si vous avez plus d’une variable dans votre chaîne localisée, pouvez-vous utiliser cette solution:

Dans Localizable.ssortingngs

 "winpopup" = "#name# wins a #type# and get #points# points(s)"; 

Et utilisez ssortingngByReplacingOccurrencesOfSsortingng pour insérer les valeurs

 NSSsortingng *ssortingng = NSLocalizedSsortingng(@"winpopup", nil); //"#name# wins a #type# and get #points# points(s)" NSSsortingng *foo = [ssortingng ssortingngByReplacingOccurrencesOfSsortingng:@"#name#" withSsortingng:gameLayer.turn]; NSSsortingng *fooo = [foo ssortingngByReplacingOccurrencesOfSsortingng:@"#type#" withSsortingng:winMode]; NSSsortingng *msg = [fooo ssortingngByReplacingOccurrencesOfSsortingng:@"#points#" withSsortingng:[NSSsortingng ssortingngWithFormat:@"%i", pkt]]; NSLog(@"%@", msg); 

Vos idées devraient fonctionner. Mais si vous récupérez le paramètre d’entrée, cela signifie que le paramètre d’entrée n’a pas été trouvé en tant que clé dans votre fichier Localizable.ssortingngs. Vérifiez la syntaxe et l’emplacement de ce fichier.