Lokalisierte Inhalte mit Braze-Katalogen verwalten
Speichern Sie lokalisierte Strings und URLs in Katalogen, damit jede:r Nutzer:in Texte in der eigenen Sprache aus einer einzelnen Campaign oder einem Canvas erhält – ohne separate Varianten pro Sprache.
Über dieses Beispiel
PantsLabyrinth, ein fiktiver Bekleidungshändler, verkauft seine Produkte in Nordamerika und Europa. Produktnamen, Preise und Hero-Bilder unterscheiden sich je nach Sprache, aber das Marketing-Team möchte ein einziges E-Mail- oder Push-Template, das zum Sendezeitpunkt personalisiert wird.
Dieses Beispiel behandelt drei Katalogmuster, die das ${language} Standardattribut der Nutzer:innen auslesen (vom SDK über das Geräte-Gebietsschema erfasst):
- JSON-Objektfelder: alle Gebietsschemas in einer Zeile pro Artikel
- Flache sprachspezifische Spalten:
header_en,header_frund so weiter - Separater Katalog pro Sprache: dynamischer Katalogname wie
pantslabyrinth-promo-en
Verwenden Sie Kataloge, wenn lokalisierte Inhalte strukturierte Daten sind (Produkte, Aktionen, Bild-URLs). Für freie Nachrichtentexte in E-Mail oder Push bevorzugen Sie mehrsprachige Nachrichten, wenn Ihre Kanäle diese unterstützen. Einen umfassenderen Vergleich von Lokalisierungsmustern finden Sie unter Übersetzungsmanagement.
Überlegungen
- Die Beispiele dienen der Veranschaulichung. Überprüfen Sie die Groß-/Kleinschreibung und das Format von
${language}in Ihrer Nutzerbasis, bevor Sie Katalogschlüssel oder Suffixe benennen. - Bei den Methoden 1 und 2 kann die lokalisierte Ausgabe leer sein, wenn
${language}leer ist oder nicht mit einem Katalogschlüssel oder -feld übereinstimmt. Prüfen Sie jedes Feld einzeln und greifen Sie auf einen Standard zurück (zum Beispiel Englisch). - Bei Methode 3 sollten Sie unterstützte Sprachcodes auf eine Allowlist setzen, bevor Sie den Katalognamen erstellen; ein fehlender Katalog bricht die Nachricht ab.
- JSON-Objekte in Katalogen können über die API oder Cloud Data Ingestion (CDI) für Kataloge erstellt oder aktualisiert werden, nicht über CSV-Upload.
- Methode 2 unterstützt die CSV-Pflege, vervielfacht aber die Spalten, wenn Sprachen hinzukommen. CSV-Dateien unterstützen bis zu 1.000 Spalten.
- Methode 3 erfordert einen Katalog für jeden Sprachcode, der den
catalog_items-Tag erreicht. Wenn der Katalog nicht existiert, bricht Braze die Nachricht ab. Eine fehlende Artikel-ID in einem vorhandenen Katalog gibt ein leeres Items-Array zurück. - Katalog-Liquid-Tags können nicht rekursiv verwendet werden.
- Katalogauswahlen unterstützen bis zu 10 Filter und geben bis zu 50 Artikel zurück – validieren Sie die Filter anhand Ihres Katalogschemas.
- Überprüfen Sie die Katalogspeicher-Stufen, wenn Sie große Produkt-Feeds für mehrere Sprachen pflegen.
Einrichtung
Schritt 1: Katalogstruktur wählen
Wählen Sie anhand der folgenden Tabelle eine Katalogstruktur aus.
| Methode | Am besten geeignet, wenn | Kompromiss |
|---|---|---|
| JSON-Objektfelder | Mittlere Kataloggröße; eine Zeile pro Artikel; Updates über API oder CDI | Das Hinzufügen einer Sprache aktualisiert jeden Artikel über die API; kein CSV für JSON-Felder |
| Flache sprachspezifische Felder | Wenige Sprachen und Felder; Nicht-Entwicklerteams verwenden CSV | Jede neue Sprache fügt Spalten hinzu; die Feldbenennung muss konsistent bleiben |
| Katalog pro Sprache | Große lokale Feeds oder separate Verantwortliche pro Locale; CSV pro Sprache | Jeder freigegebene Sprachcode benötigt einen Katalog; fehlende Kataloge brechen den Versand ab |
Schritt 2: Katalog und Artikel erstellen
- Navigieren Sie zu Dateneinstellungen > Kataloge und erstellen Sie einen Katalog (oder mehrere Kataloge für Methode 3).
- Fügen Sie Felder und Artikel basierend auf der gewählten Struktur hinzu. Siehe Katalog erstellen.
- (Optional) Erstellen Sie eine Katalogauswahl, um Artikel zu filtern – zum Beispiel nach
category, das einem angepassten Attribut der Nutzer:innen entspricht.
Beispielartikel im Katalog PantsLabyrinth_Product_Copy:
| Artikel | Wert |
|---|---|
id |
trail-runner-001 |
name |
{"EN":"Trail Runner","FR":"Chaussure de trail","DE":"Trailrunner"} |
category |
footwear |
url |
https://pantslabyrinth.shop/products/trail-runner-001 |
price |
{"EN":"$120 USD","FR":"112 EUR","DE":"112 EUR"} |
Beispielartikel im Katalog PantsLabyrinth_Promo_Copy:
| Artikel | Wert |
|---|---|
id |
spring-sale |
header_en |
Spring trail sale |
header_fr |
Soldes de printemps |
body_en |
Save on trail runners this week. |
body_fr |
Économisez sur les chaussures de trail cette semaine. |
cta_text_en |
Shop now |
cta_text_fr |
Acheter |
img_src_en |
https://cdn.pantslabyrinth.shop/en/spring.jpg |
img_src_fr |
https://cdn.pantslabyrinth.shop/fr/spring.jpg |
Erstellen Sie einen Katalog pro Sprache mit denselben Feldern. Wiederholen Sie beispielsweise dieselbe id und dieselben Felder in pantslabyrinth-promo-fr und pantslabyrinth-promo-de mit lokalisierten Werten.
Beispielartikel in pantslabyrinth-promo-en:
| Artikel | Wert |
|---|---|
id |
spring-sale |
header |
Spring trail sale |
body |
Save on trail runners this week. |
cta_text |
Shop now |
img_src |
https://cdn.pantslabyrinth.shop/en/spring.jpg |
Schritt 3: Liquid zu Ihrer Nachricht hinzufügen
Wählen Sie das Liquid-Muster, das zur Katalogstruktur passt, die Sie in Schritt 1 gewählt haben.
Speichern Sie alle Locales in JSON-Objektfeldern in einer einzelnen Katalogzeile und verwenden Sie dann den Filter property_accessor, um die name- und price-Schlüssel zu lesen, die zu ${language} passen (normalisiert in Großbuchstaben). Prüfen Sie jedes Feld unabhängig und greifen Sie auf EN zurück, wenn das Feld leer ist, sodass ein Locale mit einem Namen, aber ohne Preis trotzdem einen englischen Preis erhält.
{% catalog_items PantsLabyrinth_Product_Copy trail-runner-001 %}
{% assign lang = ${language} | upcase %}
{% assign localized_name = items[0].name | property_accessor: lang %}
{% assign localized_price = items[0].price | property_accessor: lang %}
{% if localized_name == blank %}
{% assign localized_name = items[0].name | property_accessor: 'EN' %}
{% endif %}
{% if localized_price == blank %}
{% assign localized_price = items[0].price | property_accessor: 'EN' %}
{% endif %}
Product: {{ localized_name }}
Price: {{ localized_price }}
Siehe Property-Accessor-Filter.
Erstellen Sie dynamische Feldnamen aus ${language} (normalisiert in Kleinbuchstaben) und lesen Sie dann diese Felder mit Bracket-Lookup aus dem Artikel. Zum Beispiel liest items[0][header_field] die Überschrift für die aufgelöste Sprache. Prüfen Sie jedes Feld unabhängig und greifen Sie auf die englische Spalte zurück, wenn das Feld leer ist, sodass ein Locale mit einer Überschrift, aber ohne Textkörper trotzdem den englischen Textkörper erhält.
{% catalog_items PantsLabyrinth_Promo_Copy spring-sale %}
{% assign lang = ${language} | downcase %}
{% assign header_field = 'header_' | append: lang %}
{% assign body_field = 'body_' | append: lang %}
{% assign cta_field = 'cta_text_' | append: lang %}
{% assign img_field = 'img_src_' | append: lang %}
{% assign header_val = items[0][header_field] %}
{% assign body_val = items[0][body_field] %}
{% assign cta_val = items[0][cta_field] %}
{% assign img_val = items[0][img_field] %}
{% if header_val == blank %}
{% assign header_val = items[0].header_en %}
{% endif %}
{% if body_val == blank %}
{% assign body_val = items[0].body_en %}
{% endif %}
{% if cta_val == blank %}
{% assign cta_val = items[0].cta_text_en %}
{% endif %}
{% if img_val == blank %}
{% assign img_val = items[0].img_src_en %}
{% endif %}
<img src="{{ img_val }}" alt="" />
<h2>{{ header_val }}</h2>
<p>{{ body_val }}</p>
<a href="#">{{ cta_val }}</a>

Wenn der Katalogname, den Sie an catalog_items übergeben, nicht existiert, bricht Braze die Nachricht ab. Geben Sie die unterstützten Sprachcodes frei, bevor Sie den Katalognamen erstellen. Eine fehlende Artikel-ID in einem vorhandenen Katalog gibt ein leeres Items-Array zurück – Sie können nur in diesem Fall auf den englischen Katalog zurückgreifen.
Geben Sie die Sprachcodes frei, die über passende Kataloge verfügen (hier en, fr und de), setzen Sie nicht unterstützte oder leere Werte standardmäßig auf en und rufen Sie dann den Artikel ab. Wenn die Artikel-ID in diesem Katalog fehlt, greifen Sie auf den englischen Katalog zurück.
{% assign lang = ${language} | downcase %}
{% assign supported = 'en,fr,de' | split: ',' %}
{% if supported contains lang %}{% else %}{% assign lang = 'en' %}{% endif %}
{% assign theCatalog = 'pantslabyrinth-promo-' | append: lang %}
{% catalog_items {{ theCatalog }} spring-sale %}
{% if items[0] == blank %}
{% catalog_items pantslabyrinth-promo-en spring-sale %}
{% endif %}
<img src="{{ items[0].img_src }}" alt="" />
<h2>{{ items[0].header }}</h2>
<p>{{ items[0].body }}</p>
<a href="#">{{ items[0].cta_text }}</a>
Siehe Templates in Katalognamen verwenden und Nachrichten abbrechen.
Optionale Katalogauswahl nach Kategorie
Filtern Sie Artikel vor der Personalisierung – zum Beispiel Schuh-Aktionen für Nutzer:innen mit preferred_category = footwear:
{% catalog_selection_items PantsLabyrinth_Product_Copy footwear_promos %}
{% for item in items %}
{{ item.name }}
{% endfor %}
Definieren Sie die Auswahl im Dashboard mit Filtern für Ihre category-Spalte und Nutzerattributen nach Bedarf.
Schritt 4: Vorschau und Test
- Verwenden Sie Als Nutzer:in anzeigen mit Nutzerprofilen, die verschiedene
${language}-Werte haben. - Bestätigen Sie den Fallback-Text, wenn die Sprache fehlt oder nicht unterstützt wird, einschließlich teilweiser Lokalisierungen (zum Beispiel ein Name ohne Preis).
- Bestätigen Sie bei Methode 3, dass jeder freigegebene Sprachcode einen passenden Katalog hat und dass nicht unterstützte Sprachcodes ohne Abbruch des Versands auf Ihren Standardkatalog verweisen.