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

2

5

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

Koodoo answered 7/8, 2014 at 10:28 Comment(2)
You can't send localization keys in loc-argsMulloy
have you got the solution ?Meunier
T
7

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
Triphibious answered 17/9, 2015 at 2:35 Comment(0)
G
7

@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";

Ga answered 30/9, 2015 at 13:4 Comment(1)
This should have been a comment, not an answer. With a bit more rep, you will be able to post comments.Duggan

© 2022 - 2024 — McMap. All rights reserved.