In dieser Dokumentation wird die Verwendung von FCM Lokalisierungsfeldern
(*_loc_key und *_loc_args) beschrieben, um Benachrichtigungen zu senden, die automatisch an die Spracheinstellungen eines Nutzers auf Android- und iOS-Geräten angepasst werden. So kann Ihr Server eine einzelne, sprachunabhängige Nutzlast senden und die Übersetzung dem Clientgerät überlassen.
Übersicht zur LokalisierungFCM
Wenn Sie Ihre App lokalisieren möchten, können Sie einen Schlüssel senden, der einem String-Ressourceneintrag in der Anwendung des Nutzers entspricht. Das Betriebssystem des Geräts übernimmt die Suche und das Einfügen dynamischer Argumente.
| FCM-Feld | Beschreibung | Clientaktion |
|---|---|---|
title_loc_key |
Der Schlüssel für den Titelstring in den Stringressourcen der Client-App. | Das Betriebssystem sucht den entsprechenden String in den lokalisierten Dateien der App. |
body_loc_key |
Der Schlüssel für den Textstring in den Stringressourcen der Client-App. | Das Betriebssystem sucht den entsprechenden String in den lokalisierten Dateien der App. |
title_loc_args |
Ein Array dynamischer Stringwerte, die in den title_loc_key-String eingefügt werden sollen. |
Das Betriebssystem fügt diese Argumente in die Formatspezifizierer des lokalisierten Strings ein. |
body_loc_args |
Ein Array dynamischer Stringwerte, die in den body_loc_key-String eingefügt werden sollen. |
Das Betriebssystem fügt diese Argumente in die Formatspezifizierer des lokalisierten Strings ein. |
Schritt 1: Lokalisierte Stringressourcen in Ihren Apps definieren
Wenn Sie die FCM Lokalisierung verwenden möchten, müssen Sie die erforderlichen Übersetzungen in Ihren Android- und iOS-Projekten verfügbar haben.
Android-Einrichtung
Stringressourcen definieren: Geben Sie Ihre Standard-Strings in res/values/strings.xml ein.
Verwenden Sie Formatspezifizierer (%1$s, %2$d usw.) für alle dynamischen Werte, die Sie in *_loc_args übergeben möchten.
Standard (res/values/strings.xml):
<resources>
<string name="welcome_title">Welcome, %1$s!</string>
<string name="new_message_body">You have %1$d new message(s) from %2$s.</string>
</resources>
Übersetzungen hinzufügen: Erstellen Sie sprachspezifische Verzeichnisse mit den ISO-Sprachcodes (z.B. values-fr für Französisch, values-es für Spanisch) und übersetzen Sie die Schlüssel.
Französisch (res/values-fr/strings.xml):
<resources>
<string name="welcome_title">Bienvenue, %1$s!</string>
<string name="new_message_body">Vous avez %1$d nouveau(x) message(s) de %2$s.</string>
</resources>
Weitere Informationen finden Sie in der folgenden Dokumentation:
iOS-Einrichtung
Stringressourcen definieren: Definieren Sie Ihre Basis-Strings in der Localizable.strings
Datei (in der Regel im Ordner Base.lproj oder in einem Stringkatalog). Verwenden Sie Formatspezifizierer (%@, %ld usw.) für dynamische Werte. Schlüssel werden in der Regel in Großbuchstaben definiert.
Standard (Englisch Localizable.strings):
"WELCOME_TITLE" = "Welcome, %@!";
"NEW_MESSAGE_BODY" = "You have %ld new message(s) from %@.";
Übersetzungen hinzufügen: Erstellen Sie sprachspezifische .lproj Ordner (oder fügen Sie
Lokalisierungen mit einem Stringkatalog hinzu) und übersetzen Sie die Schlüssel.
Französisch (fr.lproj/Localizable.strings):
"WELCOME_TITLE" = "Bienvenue, %@!";
"NEW_MESSAGE_BODY" = "Vous avez %ld nouveau(x) message(s) de %@.";
Weitere Informationen finden Sie in der folgenden Dokumentation:
Schritt 2: FCM Nachrichtennutzlast erstellen
Wenn Sie die Benachrichtigung mit der FCM HTTP v1 API senden, erstellt Ihr Server
eine einzelne Nutzlast, die die Ressourcenschlüssel (*_loc_key) und die
dynamischen Daten (*_loc_args) als Array von Strings verwendet.
Beispiel für eine FCM HTTP v1-Nutzlast
Die Lokalisierungsschlüssel werden in den plattformspezifischen Überschreibungsblöcken (android.notification und apns.payload.aps.alert) platziert.
{
"message": {
"token": "DEVICE_REGISTRATION_TOKEN",
"android": {
"notification": {
// Android keys match strings.xml resource names
"title_loc_key": "welcome_title",
"title_loc_args": ["Alice"],
"body_loc_key": "new_message_body",
"body_loc_args": ["3", "Bob"]
}
},
"apns": {
"payload": {
"aps": {
"alert": {
// iOS uses 'title-loc-key' and 'loc-key' (for the body)
"title-loc-key": "WELCOME_TITLE",
"title-loc-args": ["Alice"],
"loc-key": "NEW_MESSAGE_BODY",
"loc-args": ["3", "Bob"]
}
}
}
}
}
}
Wichtige Hinweise zu Nutzlastargumenten
Reihenfolge ist wichtig: Die Strings in
*_loc_argsmüssen genau in der Reihenfolge vorliegen, die von den Platzhaltern in der String-Ressourcendatei erforderlich ist (z.B.%1$s,%2$s).Nur Strings: Alle Elemente im Array
*_loc_argsmüssen Strings sein, auch wenn sie Zahlen darstellen (wie"3"im Beispiel). Der Stringformatierer des Clientbetriebssystems übernimmt die endgültige Typkonvertierung basierend auf dem Formatspezifizierer (%ldoder%1$d).
Schritt 3: Clientverarbeitung und -anzeige
Wenn das Gerät die Benachrichtigung empfängt, werden die folgenden Schritte automatisch ausgeführt:
Sprachprüfung: Das Gerät ermittelt das primäre Gebietsschema des Nutzers (z.B. Deutsch, Italienisch).
Schlüsselsuche: Das Betriebssystem verwendet den Wert
*_loc_key(welcome_title), um den entsprechenden übersetzten String in den Ressourcendateien der App für das Gebietsschema des Geräts zu suchen.Argumente einfügen: Das Betriebssystem nimmt das Array aus
*_loc_args(["Alice"]) und fügt die Werte in den lokalisierten String ein, wobei die Formatierungsregeln des Gebietsschemas berücksichtigt werden (Interpunktion, Wortreihenfolge usw.).
| Gebietsschema des Geräts | title_loc_key: welcome_title |
title_loc_args: ["Alice"] |
Endgültige Titelanzeige |
|---|---|---|---|
| Englisch | "Welcome, %1$s!" |
Alice | "Welcome, Alice!" |
| Französisch | "Bienvenue, %1$s!" |
Alice | "Bienvenue, Alice!" |
| Deutsch | "Willkommen, %1$s!" |
Alice | "Willkommen, Alice!" |
So erhält jeder Nutzer eine Nachricht, die auf seine Spracheinstellungen zugeschnitten ist und die richtige sprachliche Struktur verwendet. Gleichzeitig wird eine standardisierte Nutzlast von Ihrem Server beibehalten.
Beispiel: Benachrichtigungsnachricht mit Lokalisierungsoptionen
Die folgende Sendeanfrage sendet eine Benachrichtigung an das Thema Tech, einschließlich Lokalisierungsoptionen für den Client, um lokalisierte Nachrichten anzuzeigen.
Hier ein Beispiel für die visuelle Wirkung auf dem Gerät eines Nutzers:

Node.js
var topicName = 'industry-tech';
var message = {
android: {
ttl: 3600000,
notification: {
bodyLocKey: 'STOCK_NOTIFICATION_BODY',
bodyLocArgs: ['FooCorp', '11.80', '835.67', '1.43']
}
},
apns: {
payload: {
aps: {
alert: {
locKey: 'STOCK_NOTIFICATION_BODY',
locArgs: ['FooCorp', '11.80', '835.67', '1.43']
}
}
}
},
topic: topicName,
};
getMessaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
REST
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message": {
"topic":"Tech",
"android": {
"ttl":"3600s",
"notification": {
"body_loc_key": "STOCK_NOTIFICATION_BODY",
"body_loc_args": ["FooCorp", "11.80", "835.67", "1.43"]
}
},
"apns": {
"payload": {
"aps": {
"alert": {
"loc-key": "STOCK_NOTIFICATION_BODY",
"loc-args": ["FooCorp", "11.80", "835.67", "1.43"]
}
}
}
}
}
}'
Weitere Informationen finden Sie in der HTTP v1 Referenzdokumentation unter AndroidNotification und ApnsConfig für vollständige Details zu den Schlüsseln, die in plattformspezifischen Blöcken im Inhalt der Nachricht verfügbar sind. Informationen zu von APNS unterstützten Schlüsseln finden Sie in der Payload Key
Reference von Apple.