37 votes

Comment puis-je localiser une chaîne de mise en forme des espaces réservés?

Comment puis-je localiser une chaîne qui a des espaces réservés dans avec NSLocalizedString?

Par exemple:

[NSString stringWithFormat:@"You can afford %i at %@%li.",[kCash integerValue]/self.price, kYen,  self.price]

Comment puis-je localiser? Dois-je faire briser les chaînes en plusieurs chaînes localisées? Alors, comment dois-je traiter avec des variations de la structure de la phrase et la grammaire?

49voto

Alan Rowarth Points 451

NSLocalizedString de ne pas modifier les espaces réservés, donc stringWithFormat pouvez les utiliser comme normal. Dans votre exemple, à l'aide de numérotée espaces réservés est probablement une bonne idée

    [NSString stringWithFormat:@"You can afford %1$i at %2$@%3$li.",
                              [kCash integerValue]/self.price, kYen,  self.price]

Plus d'infos ici: Est-il un moyen de spécifier l'argument de position/d'index dans NSString stringWithFormat?

19voto

Matti Virkkunen Points 31633

Avoir les chaînes localisées inclure les espaces réservés. C'est à peu près la seule façon appropriée de le faire, car sinon, comme vous l'avez mentionné, vous ne pouviez pas prendre en variant l'ordre des mots en compte.

Quelque chose le long de ces lignes:

[NSString stringWithFormat:NSLocalizedString(@"Foo %i", @"Foo %i"), 123]

(Attention: je n'ai jamais utilisé Objective-C et la haine de la syntaxe avec une vengeance, mais je suis catégorique sur la bonne localisation)

6voto

Chris Points 1498

Une autre approche de ce qui est dans votre fichier localisé, vous pouvez:

key = "String with %@ placeholder";

et de la mise en œuvre:

[NSString stringWithFormat: NSLocalizedString(@"key", ""), @"string replacing placeholder"];

Vous pouvez le faire avec n'importe quel nombre d'arguments, ils ont juste besoin d'être cohérents dans vos fichiers de localisation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X