在推送通知的横幅中更改警报语言

时间:2013-09-04 09:19:29

标签: ios iphone push-notification apple-push-notifications

当推进时,我在横幅中更改警报语言时遇到问题。其实我正在开发一个以两种语言工作的应用程序。一个是英语,第二个是挪威语。我从我的Web服务器端收到的推送以及它在alert键中的字符串在推送到期时显示在横幅中,并且您在应用程序之外。但作为一项要求,我们希望如果我将语言从设置从英语更改为挪威语,那么当推送到来时,它的标语警报字符串也将更改为挪威语。是否可能在我的最后,或者每当我改变语言时我都必须从服务器更改它。

任何建议都会有所帮助。

谢谢

1 个答案:

答案 0 :(得分:71)

有两种方法可以在iOS中的推送通知中显示本地化文本:

在服务器中本地化邮件

在这种情况下,您必须将设备语言发送到您的服务器。您需要添加到iOS应用程序的代码类似于以下内容:

NSString *preferredLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
const char *langStr = [preferredLanguage UTF8String];
[self sendCurrentLanguage:langStr]; // Method that communicates with your server

然后,您可以使用通知JSON有效内容中的alert密钥以适当的语言发送通知消息。

发送包含通知有效内容的本地化字符串

您可以在有效内容中发送本地化字符串。 alert密钥接受您可用于发送本地化字符串的子loc-key密钥:

"alert" : { 
    "loc-key" : "My Localized String",
    ...
}

然后,在对应语言标识符内的Localizable.strings文件中,添加以下内容:

"My Localized String" = "The localized string in the language you want.";

如果需要传递参数来构建最终的本地化字符串,您也可以在通知负载中将其作为loc-args JSON数组传递:

"alert" : { 
        "loc-key" : "My Localized String",
        "loc-args" : [ "First argument", "Second argument" ],
        ...
    }

并且,在Localizable.strings

 "My Localized String" = "The localized string with first argument %@, and second argument %@."

或者,如果您需要更改职位:

 "My Localized String" = "The localized string with second argument %2$@, and first argument %1$@.";
相关问题