Zum Inhalt springen

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_fr und 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

  1. Navigieren Sie zu Dateneinstellungen > Kataloge und erstellen Sie einen Katalog (oder mehrere Kataloge für Methode 3).
  2. Fügen Sie Felder und Artikel basierend auf der gewählten Struktur hinzu. Siehe Katalog erstellen.
  3. (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>

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

  1. Verwenden Sie Als Nutzer:in anzeigen mit Nutzerprofilen, die verschiedene ${language}-Werte haben.
  2. 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).
  3. 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.
New Stuff!