我有这个格式化的字符串,我正在让翻译工作。
英语
"查看 %3$@ 中的 %1$@ %2$@:%4$@" = "查看 %3$@ 中的 %1$@ %2$@:%4$@"
德语翻译
"查看 %3$@ 中的 %1$@ %2$@: %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;
具有以下期望和实际结果:
英语
所需:“在我的应用名称中查看声音“此声音名称:link_to_sound” 实际:“查看我的应用名称中的声音“此声音名称:link_to_sound”
德语
所需:“我的应用名称”中的“Hör Dir mal“此声音名称”an:link_to_sound” 实际:““此声音名称”中的 Hör Dir mal 声音 an:我的应用程序名称”
问题
问题是我假设通过在 中使用编号变量-[NSString stringWithFormat:]
,我可以做这样的事情,其中%1$@
变量被完全省略。如果您注意到,格式字符串的德语翻译根本不使用第一个参数 ( %1$@
),但它(“声音”)仍然出现在输出字符串中。
我究竟做错了什么?