Как локализовать основной текст удаленного уведомления 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));