如何在GCM / FCM通知消息中本地化数字?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (135)

通过GCM(即将切换到FCM)向Android设备发送推送通知时,如何根据手机语言本地化显示在消息标题/正文中的数字?

示例消息:

John Doe 137

如果设备语言设置为阿拉伯语,则数字应本地化

本地化消息

John Doe 137

由于我在发送通知时不知道用户设备语言,如何在收到消息时对数字进行本地化?除非应用程序在前台运行,否则onMessageReceived回调不会执行,因此我无法对其中的数字执行字符串替换。

对于上下文,下面是我从我的服务发送给GCM的gcmNotification JSON的示例:

   "gcmNotification": {
     "title_loc_key": "some_title_key",
     "title_loc_args": "[\"john\", \"Doe\", 137]",
     "icon": "TheIcon",
     "body_loc_key": "some_key",
     "sound": "somesound",
     "color": "Blue",
     "collapse_key": "somekey",
    }
提问于
用户回答回答于

为了解决这个问题,我最终创建了一个带有处理转换方法的辅助类。我通过它运行消息文本,它返回翻译的值。到目前为止,它对我来说效果很好。

public static class NumberHelper
{
    public static string ConvertToArabicNumbers(this string input)
    {
        return input.Replace('0', '\u0660')
            .Replace('1', '\u0661')
            .Replace('2', '\u0662')
            .Replace('3', '\u0663')
            .Replace('4', '\u0664')
            .Replace('5', '\u0665')
            .Replace('6', '\u0666')
            .Replace('7', '\u0667')
            .Replace('8', '\u0668')
            .Replace('9', '\u0669')
            .Replace('.', '\u066B');
    }
}
用户回答回答于

阿拉伯数字(正常的0-9)很好理解。你可以在客户端使用字符串替换。或者服务器端通过将您的语言环境发布到它并让服务器在发送之前进行翻译。

扫码关注云+社区

领取腾讯云代金券