iOS: как локализовать строки с несколькими интерполированными параметрами?


Как я могу использовать NSLocalizedString для построения строки с несколькими параметрами, предоставляя транслятору управление для изменения порядка, если они хотят?

Пример в моем Локализуемом.строка:

"score_out_of"="Your score is %i out of %i";

И будет вызываться как

[NSString stringWithFormat:NSLocalizedString(@"score_out_of", nil), correct, total];
Но на некоторых языках правила грамматики могут диктовать, что общее идет перед правильным. В объективе с порядок интерполяции, по-видимому, жестко задан.

В других языках это достигается путем именования параметров, например: пример в ruby это будет определено следующим образом:

out_of: "Your score is %{correct} out of %{total}"

И вызывается следующим образом:

I18n('out_of', {total: total, correct: correct})

Каков рекомендуемый способ сделать то же самое на iOS / Objective C?

1 3

1 ответ:

Согласно документации

Https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW2

Обратите внимание, что вы также можете использовать позиционные спецификаторы "n$", такие как %1$@ %2$s

Таким образом, вы можете просто создать свою строку как

"score_out_of" = "ваш счет равен %1$i из %2$i"

И на другом языке это может быть

"score_out_of" = " из %2$i, ваш оценка - %1$i "