Send localized string key in loc-args for iOS Push notifications

拥有回忆 提交于 2020-05-27 04:06:29

问题


My application supports 4 languages & push notifications. When I send push notification to APNS , I am sending loc_key & loc-args. Now I need to send localized strings in loc-args array so that I can translate those on iOS app side when app receives the push notification.

But when I send localized strings in loc-args , instead of showing translated string in notification center , it just showed localized key as it is.

My string file contains below 2 messages:

"WINNER_ALERT"= "Congratulations! %@ won the match & became %@ player";
"ROLE_PROFESSIONAL_LOCALIZED_KEY" = "professional"

Server sends below payload

{
    aps =     {
        alert =         {
            "loc-args" =             (
                "John",
                "ROLE_PROFESSIONAL_LOCALIZED_KEY"
            );
            "loc-key" = "WINNER_ALERT";
        };
        badge = 1;
        sound = default;
    };
}

When I send above payload then in iOS Notification Center , message look like

Congratulations! John won the match & became ROLE_PROFESSIONAL_LOCALIZED_KEY player

instead of

Congratulations! JOHN won the match & became professional player

Can anyone tell me whether it is possible to send localized strings in loc-args ? If yes, what's wrong in my payload ?

Thanks in advance


回答1:


@Zak answer's works like a charm.

Furthermore, if you need professional to be localised, it should be part of WINNER_ARERT string.

If you need to pass different strings for professional, you should create several localised strings. E.G. :

1) "WINNER_ALERT_PROFESSIONAL"= "Congratulations! %@ won the match & became professional player";

2) "WINNER_ALERT_SEMI_PROFESSIONAL"= "Congratulations! %@ won the match & became semi-professional player";




回答2:


I believe your Localizable.strings file should look like this :

"WINNER_ALERT"= "Congratulations! %@ won the match & became %@ player";

And the push notification payload should look like this :

{
    aps =     {
        alert =         {
            "loc-args" = (
                "JOHN",
                "professional"
            );
            "loc-key" = "WINNER_ALERT";
        };
        badge = 1;
        sound = default;
    };
}

This will give the desired result :

Congratulations! JOHN won the match & became professional player


Here's why (according to Apple's Local and Remote Notification Programming Guide) :

  • loc-key : A key to an alert-message string in a Localizable.strings file for the current localization
  • loc-args : Variable string values to appear in place of the format specifiers in loc-key


来源:https://stackoverflow.com/questions/25180145/send-localized-string-key-in-loc-args-for-ios-push-notifications

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!