Comment localiser une chaîne contenant des espaces réservés avec NSLocalizedString?
Par exemple:
[NSString stringWithFormat:@"You can afford %i at %@%li.",[kCash integerValue]/self.price, kYen, self.price]
Comment est-ce que je localise ceci? Est-ce que je divise les chaînes en plusieurs chaînes localisées? Comment puis-je gérer la structure de phrase et la grammaire?
Avoir les chaînes localisées inclure les espaces réservés. C’est à peu près la seule façon de procéder. Sinon, comme vous l’avez mentionné, vous ne pouvez pas tenir compte de l’ordre varié de Word.
Quelque chose dans ce sens:
[NSString stringWithFormat:NSLocalizedString(@"Foo %i", @"Foo %i"), 123]
NSLocalizedString ne modifiera pas vos espaces réservés, donc stringWithFormat peut les utiliser normalement. Dans votre exemple, utiliser des espaces réservés numéroté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 possible de spécifier l'argument position/index dans NSString stringWithFormat?
Une autre approche à cela est dans votre fichier localisé, vous pouvez avoir:
key = "String with %@ placeholder";
et dans votre implémentation:
[NSString stringWithFormat: NSLocalizedString(@"key", ""), @"string replacing placeholder"];
Vous pouvez le faire avec n'importe quel nombre d'arguments. Ils doivent simplement être cohérents dans tous vos fichiers de localisation.
Cette voie semble plus efficace:
[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Key", @"Comment for localised string"), value];