Ios7 发送iOS推送通知的loc args中的本地化字符串键

Ios7 发送iOS推送通知的loc args中的本地化字符串键,ios7,apple-push-notifications,nslocalizedstring,localizable.strings,Ios7,Apple Push Notifications,Nslocalizedstring,Localizable.strings,我的应用程序支持4种语言和推送通知。当我向APN发送推送通知时,我正在发送loc_key&loc args。现在我需要在loc args数组中发送本地化字符串,这样当应用程序收到推送通知时,我就可以在iOS应用程序端翻译这些字符串 但当我在loc args中发送本地化字符串时,它没有在通知中心显示翻译后的字符串,而是按原样显示本地化密钥 我的字符串文件包含以下2条消息: "WINNER_ALERT"= "Congratulations! %@ won the match & became

我的应用程序支持4种语言和推送通知。当我向APN发送推送通知时,我正在发送
loc_key
&
loc args
。现在我需要在
loc args
数组中发送本地化字符串,这样当应用程序收到推送通知时,我就可以在iOS应用程序端翻译这些字符串

但当我在
loc args
中发送本地化字符串时,它没有在通知中心显示翻译后的字符串,而是按原样显示本地化密钥

我的字符串文件包含以下2条消息:

"WINNER_ALERT"= "Congratulations! %@ won the match & became %@ player";
"ROLE_PROFESSIONAL_LOCALIZED_KEY" = "professional"
服务器发送低于有效负载的数据

{
    aps =     {
        alert =         {
            "loc-args" =             (
                "John",
                "ROLE_PROFESSIONAL_LOCALIZED_KEY"
            );
            "loc-key" = "WINNER_ALERT";
        };
        badge = 1;
        sound = default;
    };
}
当我在iOS通知中心发送上述有效负载时,消息如下所示

Congratulations! John won the match & became ROLE_PROFESSIONAL_LOCALIZED_KEY player
而不是

Congratulations! JOHN won the match & became professional player
谁能告诉我是否可以在
loc args
中发送本地化字符串?如果是,我的有效载荷有什么问题


提前感谢

我相信您的
可本地化.strings
文件应该如下所示:

"WINNER_ALERT"= "Congratulations! %@ won the match & became %@ player";
推送通知负载应如下所示:

{
    aps =     {
        alert =         {
            "loc-args" = (
                "JOHN",
                "professional"
            );
            "loc-key" = "WINNER_ALERT";
        };
        badge = 1;
        sound = default;
    };
}
这将产生预期的结果:

祝贺你!约翰赢得了比赛并成为职业球员


以下是原因(根据):

  • loc key
    :当前本地化的Localizable.strings文件中警报消息字符串的键
  • loc args
    :在loc键中替代格式说明符显示的变量字符串值

    • @Zak answer的作品就像一个符咒

      此外,如果您需要本地化
      professional
      ,它应该是
      WINNER\u ARERT
      字符串的一部分

      如果需要为
      professional
      传递不同的字符串,则应创建多个本地化字符串。例如:

      1)
      “获胜者职业球员”=“恭喜!%@赢得比赛并成为职业球员”


      2)
      “赢家提醒半职业球员”=“恭喜!%@赢得比赛并成为半职业球员”

      您不能在loc arg中发送本地化密钥。您得到解决方案了吗?这应该是一个注释,而不是答案。再重复一点。