首页 文章

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

提问于
浏览
0

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

Example Message:

John Doe 137

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

Localized Message

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",
    }

2 回答

  • 0

    一般来说,你不要尝试 . 阿拉伯数字(正常的0-9)很好理解 . 如果你想坚持尝试,你可以在客户端使用字符串替换 . 或者服务器端通过将您的语言环境发布到它并让服务器在发送之前进行翻译 .

  • 2

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

    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');
        }
    }
    

相关问题