【问题标题】:Change language of alert in banner of Push Notification更改推送通知横幅中的警报语言
【发布时间】:2013-09-07 17:30:15
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    在 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$@.";
    

    【讨论】:

    • 但我有动态文本,其中也包含人名,那么如何管理?
    • @AshutoshMishra 查看我的更新答案。您可以在 loc-args 中传递参数并使用格式说明符进行位置替换。
    • 是$还是@?以及它如何知道将第一个参数放在哪里以及第二个放在哪里。来自数字(1 和 2)?
    • @AshutoshMishra 是的,位置参数是%n$@,其中n是一个以1开头的数字。如果您不需要更改参数的相对位置,可以使用标准%@语法。我已经更新了我的答案。
    • 另一个选项是什么都不做,因为 iOS 客户端会自动添加首选语言 HTTP 标头。因此,服务器可以将其从请求中拉出以注册推送令牌。
    猜你喜欢
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多