У меня есть эта форматированная строка, над которой у меня работает переводчик.
АНГЛИЙСКИЙ
"Check out the %1$@ %2$@ in %3$@: %4$@" = "Check out the %1$@ %2$@ in %3$@: %4$@"
НЕМЕЦКИЙ ПЕРЕВОД
"Check out the %1$@ %2$@ in %3$@: %4$@" = "Hör Dir mal %2$@ in %3$@ an: %4$@";
Они передаются на [NSString stringWithFormat:]
вызов:
//////////////////////////////////////
// Share Over Twitter
NSString *frmt = NSLocalizedString(@"Check out the %1$@ %2$@ in %3$@: %4$@", @"The default tweet for sharing sounds. Use %1$@ for where the sound type (Sound, mix, playlist) will be, %2$@ for where the audio name will be, %3$@ for the app name, and %3$@ for where the sound link will be.");
NSString *urlString = [NSString stringWithFormat:@"sounds/%@", SoundSoundID(audio)];
NSString *url = ([audio audioType] == UAAudioTypeSound ? UrlFor(urlString) : APP_SHORTLINK);
NSString *msg = [NSString stringWithFormat:
frmt,
[[Audio titleForAudioType:[audio audioType]] lowercaseString],
[NSString stringWithFormat:@"\"%@\"", AudioName(audio)],
APP_NAME,
url];
returnString = msg;
С желаемым и фактическим результатом:
АНГЛИЙСКИЙ
desired: "Check out the sound "This Sound Name" in My App Name: link_to_sound"
actual: "Check out the sound "This Sound Name" in My App Name: link_to_sound"
НЕМЕЦКИЙ
desired: "Hör Dir mal "This Sound Name" in My App Name an: link_to_sound"
actual: "Hör Dir mal sound in "This Sound Name" an: My App Name"
ПРОБЛЕМА
Проблема в том, что я исходил из того, что, используя пронумерованную переменную в -[NSString stringWithFormat:]
, я мог бы делать такие вещи, когда переменная %1$@
полностью опущена. Если вы заметили, немецкий перевод строки формата вообще не использует первый аргумент (%1$@
), но он («звук») все еще появляется в выходной строке.
Что я делаю не так?