当推进时,我在横幅中更改警报语言时遇到问题。其实我正在开发一个以两种语言工作的应用程序。一个是英语,第二个是挪威语。我从我的Web服务器端收到的推送以及它在alert
键中的字符串在推送到期时显示在横幅中,并且您在应用程序之外。但作为一项要求,我们希望如果我将语言从设置从英语更改为挪威语,那么当推送到来时,它的标语警报字符串也将更改为挪威语。是否可能在我的最后,或者每当我改变语言时我都必须从服务器更改它。
任何建议都会有所帮助。
谢谢
答案 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$@.";