问题
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 localizationloc-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