Как локализовать основной текст удаленного уведомления Firebase в Android?

Я хочу локализовать уведомление Firebase, отправленное сервером. Через php отправляю удаленное уведомление на устройство Android. Следующие постданные я использую в php:

$postData = array(
       'to' => ''.$fcmtoken,
      'priority' => 'high',
       'notification'=> array("body"=> "message body",  "loc_key" => "body_key" "title"=> "message title",                  "icon" => "ic_stat_gdr_notification_icon", 
           "sound" => "default" ),
  );

Уведомление отправляется на устройство надлежащим образом с основным текстом "body message". Но я хочу, чтобы локализованный текст ('Cuerpo del menage') ключа 'body_key' был показан.

Также, пожалуйста, проверьте код Android, который я использовал для получения сообщения:

notificationBuilder = new NotificationCompat.Builder(this)
                            .setSmallIcon(R.drawable.ic_stat_gdr_notification_icon)
                            .setContentTitle(from)
                            .setContentText(message)
                            .setSound(defaultSoundUri)
                            .setContentIntent(contentIntent)
                            .setStyle(new NotificationCompat.BigTextStyle().bigText(message));

                }

                NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                manager.notify(1, notificationBuilder.build());

Здесь я не знаю, как я могу использовать ключ, полученный из уведомления, чтобы локализовать его? loc_key - это строка Но в Android ожидается, что в этом методе будет передано "integer": getResources(). GetString(R.string.body_key), где "R.string.body_key" - целое число.

Итак, как я могу передать loc_key в метод getString() и получить локализованный текст? Пожалуйста, помогите мне.

1 ответ

Решение

Вы можете получить целочисленный идентификатор, соответствующий вашему body_key, вот так

public static int getStringIdentifier(Context context, String name) {
    return getResources().getIdentifier(name, "string", 
        getPackageName());
}


getResources()
 .getString(getStringIdentifier(getApplicationContext(),loc_key));