¿Cómo localizo una cadena con formatear marcadores de position?

¿Cómo localizo una cadena que tiene marcadores de position en ella con NSLocalizedString?

Por ejemplo:

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

¿Cómo localizo esto? ¿Puedo dividir las cadenas en múltiples cadenas localizadas? ¿Cómo lidiar con la estructura y la gramática de la oración?

Las cadenas localizadas incluyen los marcadores de position. Es casi la única forma adecuada de hacerlo, ya que de lo contrario, como mencionaste, no puedes tener en count el order de las palabras que varían.

Algo en este sentido:

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

NSLocalizedString no alterará sus marcadores de position, por lo que stringWithFormat puede usarlos de forma normal. En su ejemplo, el uso de marcadores de position numerados es probablemente una buena idea,

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

Más información aquí: ¿Hay alguna forma de especificar position / índice de argumento en NSString stringWithFormat?

Otro enfoque de esto es en su file localizado, puede tener:

 key = "String with %@ placeholder"; 

y en su implementación:

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

Puede hacer esto con cualquier cantidad de arguments, solo deben ser consistentes en todos los files de localización.

De esta manera parece más eficiente:

 [NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Key", @"Comment for localised string"), value];