当推送到来时,我面临更改横幅中警报语言的问题。实际上我正在开发一个以两种语言工作的应用程序。一是英语,二是挪威语。我从我的 Web 服务器端收到的推送以及它在alert
密钥中的字符串在推送到来并且您在应用程序之外时显示在横幅中。但是作为一项要求,如果我将语言设置从英语更改为挪威语,那么当推送到来时,其横幅的警报字符串也将更改为挪威语。是否有可能在我结束时,或者每当我更改语言时我必须从服务器更改它?
问问题
15073 次
1 回答
78
在 iOS 中,有两种方法可以在推送通知中显示本地化文本:
在您的服务器中本地化消息
在这种情况下,您必须将设备语言发送到您的服务器。您需要添加到 iOS 应用程序的代码类似于以下内容:
NSString *preferredLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
const char *langStr = [preferredLanguage UTF8String];
[self sendCurrentLanguage:langStr]; // Method that communicates with your server
alert
然后,您可以使用通知 JSON 有效负载中的密钥以适当的语言发送通知消息。
发送带有通知负载的本地化字符串
您可以在有效负载中发送本地化字符串。该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$@.";
于 2013-09-04T09:30:03.860 回答