Google erlaubt Produkttitel mit 1 bis 150 Zeichen und weist Händler an, keine Großbuchstaben zur Hervorhebung zu verwenden (Merchant Center Help). Türkische Kataloge, die aus ERP-Systemen exportiert werden, sind oft in Großbuchstaben geschrieben. Die naheliegende Lösung ist deshalb eine Regel, die jeden Titel in Kleinbuchstaben oder in Title Case umwandelt. Genau an dieser Regel scheitern türkische Daten unbemerkt. In unserem Test lieferte ein Standard-Lowercase von İZMİR ÇİZGİLİ KIŞLIK MONT 30 Codepoints statt 25, und aus ISPARTA wurde isparta statt ısparta. Dieser Leitfaden richtet sich an Feed-Manager und Entwickler, die mit türkischen Produkttexten arbeiten. Am Ende können Sie Ihren Stack testen, die Regel für die Groß- und Kleinschreibung korrigieren und eine Prüfung einrichten, die das Problem bei jeder Synchronisierung erkennt.
Warum türkische Groß- und Kleinschreibung gewöhnliche Regeln aushebelt
Das Türkische kennt zwei getrennte Buchstabenpaare: das punktlose ı mit dem Großbuchstaben I und das gepunktete i mit dem Großbuchstaben İ. Die Unicode-Datei zur Groß-/Kleinschreibung sagt das ausdrücklich: „I and i-dotless; I-dot and i are case pairs in Turkish and Azeri“ (Unicode SpecialCasing.txt).
Die Standardumwandlung (sprachneutral) weiß davon nichts. Sie wandelt I in i um und İ in i plus einen kombinierenden Punkt darüber (U+0307). Die türkischen Regeln in derselben Datei wandeln I in ı und İ in ein einfaches i um. Aserbaidschanisch folgt derselben Regel.
In einem Feed gehen dabei drei Dinge schief:
- Falsche Buchstaben. Aus
KADINwirdkadin, ausYAĞIwirdyaği. Das Wort bleibt lesbar, ist aber falsch geschrieben. - Zusätzliche Zeichen. Aus
İZMİRwirdi̇zmi̇r, ein String mit zwei zusätzlichen, unsichtbar wirkenden Codepoints. Er sieht am Bildschirm fast richtig aus, stimmt aber in einem Filter, einem Join oder einer Suche nicht mitizmirüberein. - Falsche Großbuchstaben in die andere Richtung. Aus
istanbulwirdISTANBULstattİSTANBUL, und Title Case erzeugtIçstattİç.
Schritt 1: Prüfen, was Ihr Stack heute tut
Bevor Sie eine Regel ändern, prüfen Sie, wie sich der Code verhält, der Ihre Titel umwandelt. Wir haben dieselben zwei Eingaben durch die Laufzeitumgebungen geschickt, die die meisten Feed-Pipelines verwenden. Die Eingabe war ISPARTA İSTANBUL für Kleinbuchstaben und istanbul ışık für Großbuchstaben.
| Laufzeitumgebung und Aufruf | Ergebnis Kleinbuchstaben | Ergebnis Großbuchstaben | Türkisch korrekt? |
|---|---|---|---|
JavaScript toLowerCase() / toUpperCase() | isparta i̇stanbul | ISTANBUL IŞIK | Nein |
JavaScript toLocaleLowerCase("tr") / toLocaleUpperCase("tr") | ısparta istanbul | İSTANBUL IŞIK | Ja |
Python 3.13 str.lower() / str.upper() | isparta i̇stanbul | ISTANBUL IŞIK | Nein |
PHP 8.3 mb_strtolower() | i̇stanbul (für İSTANBUL) | k. A. | Nein |
PHP 8.3 strtolower() | isparta (für ISPARTA) | k. A. | Nein |
Perl lc() / uc() | isparta i̇stanbul | ISTANBUL IŞIK | Nein |
Zwei Details sind wichtig. Erstens verwendet das einfache toLocaleLowerCase() in JavaScript ohne Argument die Standardsprache (Default Locale). Derselbe Code kann sich daher auf einem Server anders verhalten als auf einem Laptop. Die Dokumentation zeigt, dass "İstanbul".toLocaleLowerCase("en-US") den Wert i̇stanbul zurückgibt und toLocaleLowerCase("tr") den Wert istanbul (MDN). Übergeben Sie "tr" deshalb immer explizit.
Zweitens wurde strtolower() in PHP 8.2 so geändert, dass es nicht mehr von setlocale() abhängt und nur ASCII-Zeichen umwandelt (PHP-Handbuch). Das Setzen einer türkischen Locale ändert daran in einer aktuellen Version nichts.
Schritt 2: Ein Testset aus echten Titeln aufbauen
Wählen Sie 10 bis 15 Titel aus Ihrem eigenen Katalog, die alle türkischen Sonderbuchstaben abdecken: İ, I, ı, i, Ş, Ğ, Ç, Ö, Ü. Nehmen Sie einen Titel auf, der mit I beginnt, einen, der mit İ beginnt, und einen mit einer Einheit wie ML oder GB. Hier ist ein Startset, jeweils mit dem Ergebnis eines Standard-Lowercase neben dem korrekten.
| Ausgangstitel | Standard-Lowercase | Türkisches Lowercase |
|---|---|---|
ISPARTA GÜL YAĞI 50 ML | isparta gül yaği 50 ml | ısparta gül yağı 50 ml |
İZMİR ÇİZGİLİ KIŞLIK MONT | i̇zmi̇r çi̇zgi̇li̇ kişlik mont | izmir çizgili kışlık mont |
KADIN İÇ ÇAMAŞIRI SETİ | kadin i̇ç çamaşiri seti̇ | kadın iç çamaşırı seti |
IŞIK GEÇİRMEZ PERDE | işik geçi̇rmez perde | ışık geçirmez perde |
ÇOCUK OKUL ÇANTASI | çocuk okul çantasi | çocuk okul çantası |
Sehen Sie sich die letzte Zeile an. Nur ein Buchstabe unterscheidet sich, und eine visuelle Stichprobe einiger Titel würde das leicht übersehen. Deshalb muss das Testset jeden Buchstaben abdecken, und deshalb vergleichen Sie Strings, statt sich auf Eindrücke zu verlassen.
Schritt 3: Die Umwandlungsfunktion korrigieren
Wenn Ihr Tool die Auswahl der Locale erlaubt, setzen Sie sie auf tr. Wenn nicht, kapseln Sie die Umwandlung selbst. In JavaScript oder Node genügt dafür ein Argument:
title.toLocaleLowerCase("tr")
title.toLocaleUpperCase("tr")
Die Standard-String-Methoden von Python haben kein Locale-Argument. Ein verlässlicher Workaround besteht darin, die vier Sonderbuchstaben zu ersetzen, bevor die Standardmethode aufgerufen wird. Diese Version haben wir an den ersten vier Zeilen oben getestet:
def tr_lower(s):
return s.replace("İ", "i").replace("I", "ı").lower()
def tr_upper(s):
return s.replace("i", "İ").replace("ı", "I").upper()
Die Reihenfolge ist entscheidend. Ersetzen Sie zuerst İ und I und wandeln Sie erst danach in Kleinbuchstaben um. Wenn Sie zuerst umwandeln, ist die Information, welcher Großbuchstabe es war, bereits verloren.
Schritt 4: Title Case und Einheiten getrennt behandeln
Title Case bringt zwei weitere Probleme mit sich. Der erste Buchstabe jedes Wortes muss mit der türkischen Großschreibung umgewandelt werden, sonst wird aus iç çamaşırı in Pythons title() der Text Iç Çamaşırı. Außerdem schreibt eine pauschale Regel auch Einheiten groß: Aus 50 ML wird 50 Ml.
Wir gehen so vor: den gesamten Titel mit der türkischen Funktion in Kleinbuchstaben umwandeln, den ersten Buchstaben jedes Wortes mit der türkischen Funktion großschreiben und jedes Token überspringen, das mit einer Ziffer beginnt oder auf einer kurzen Einheitenliste steht (ml, gb, cm, kg). Bei ISPARTA GÜL YAĞI 50 ML ergibt das Isparta Gül Yağı 50 ml. Ohne Einheitenliste liefert dieselbe Pipeline 50 Ml. Beachten Sie, dass Isparta korrekt ist: Der Städtename beginnt mit einem punktlosen großen I.
Markennamen sind ein Sonderfall. Eine Marke, die absichtlich in Großbuchstaben geschrieben wird (IKEA, HP), braucht eine Ausschlussliste. Google verlangt nämlich nur, Großbuchstaben nicht zur Hervorhebung zu verwenden, und erlaubt sie weiterhin dort, wo sie angemessen sind, etwa bei Abkürzungen (Merchant Center Help). Halten Sie die Liste kurz und pflegen Sie sie an derselben Stelle wie die Regel.
Wenn Sie diese Regeln in einem Feed-Management-Tool pflegen, prüfen Sie, wie es mit Groß- und Kleinschreibung umgeht. Die Feed Rules von Feedance bieten Großbuchstaben, Satzschreibung (Sentence Case) und Anfangsbuchstaben in Großschreibung als Optionen an, und die Seite nennt nicht, welche Locale sie verwenden. Deshalb lassen wir dieses Testset über jedes Tool laufen, auch über unser eigenes, bevor wir ihm türkische Texte anvertrauen. Einen breiteren Überblick darüber, wann eine Regel genügt und wann sich ein KI-Modell lohnt, finden Sie in unserem Vergleich von regelbasierten und KI-generierten Produkttiteln.
Schritt 5: Verbliebene Schäden in bestehenden Daten erkennen
Wenn bereits eine fehlerhafte Regel gelaufen ist, steckt der kombinierende Punkt nun in Ihren gespeicherten Daten. Die Unicode-Normalisierung entfernt ihn nicht: In unserem Test blieb i gefolgt von U+0307 auch nach der NFC-Normalisierung zwei Codepoints, weil es keine vorkomponierte Form gibt, in die sich beide zusammenführen ließen. Sie müssen ihn selbst finden und entfernen.
Diese Prüfung meldet jeden Titel, der den kombinierenden Punkt darüber enthält:
import re
bad = [t for t in titles if re.search("̇", t)]
Nachdem Sie die korrigierte Regel erneut auf İZMİR angewendet haben, liefert dieselbe Prüfung „false“. Führen Sie sie für title, description, brand, product_type und jedes custom_label-Feld aus, denn Regeln zur Groß- und Kleinschreibung werden oft auf mehr als nur Titel angewendet.
Wenn ein Kanal einen Kodierungsfehler meldet, ist das eine andere Ursache. Die Merchant-Center-Seite „Invalid UTF-8 encoding“ nennt als Ursache ein Problem mit der Kodierung des Textes und rät, die Kodierung der Datei anzugeben oder umzuwandeln (Merchant Center Help). Der Fehler bei der Groß- und Kleinschreibung erzeugt gültiges UTF-8 und löst diese Meldung daher nicht aus. Er fällt unbemerkt durch, und genau deshalb sollten Sie gezielt darauf testen.
Schritt 6: Eine Prüfschranke bei jeder Synchronisierung einrichten
Eine Korrektur, die niemand erneut prüft, fällt zurück, sobald jemand eine Regel hinzufügt oder das Tool wechselt. Verwenden Sie diese Checkliste als Freigabeschranke für jede Änderung an Regeln für Titel, Beschreibungen oder Kategorienamen.
| Prüfung | Bestehensbedingung |
|---|---|
| Locale ist explizit gesetzt | Jede Funktion zur Groß-/Kleinschreibung wird mit tr aufgerufen oder wie oben gekapselt |
| Testset besteht | Alle Zeilen stimmen Zeichen für Zeichen mit der türkisch korrekten Ausgabe überein |
| Kein kombinierender Punkt | Kein Feld enthält U+0307 |
| Einheiten bleiben erhalten | Tokens wie ml, gb, cm werden nicht in Title Case umgewandelt |
| Markenausschlüsse greifen | Gelistete Marken behalten ihre beabsichtigte Großschreibung |
| Länge unverändert | Die Ausgabe ist in Codepoints nicht länger als die Eingabe und bleibt innerhalb von 150 |
Die Längenprüfung erkennt die zusätzlichen Codepoints, die das Standard-Lowercase erzeugt. Sie ist ein praktischer Stolperdraht, selbst wenn Sie noch nicht wissen, welche Regel die Änderung verursacht hat.
Wo diese Methode an ihre Grenzen stößt
Diese Methode gilt für Türkisch und Aserbaidschanisch, die beiden Sprachen, die die Unicode-Datei für diese Regel nennt. Felder in arabischer Schrift deckt sie nicht ab. Dazu lesen Sie, wie Sie arabische und englische Produktdaten strukturieren.
Wir haben keinen Beleg dafür, dass Google oder ein Marktplatz ein Produkt wegen eines falschen gepunkteten oder punktlosen i ablehnt. Die dokumentierten Kosten sind indirekt: falsch geschriebene Titel vor den Augen der Käufer und Strings, die nicht mehr zu Ihren Filtern, Joins und Ihrer internen Suche passen. Betrachten Sie es als Datenqualitätsfehler, nicht als Richtlinienverstoß.
Der Ersetzungstrick in Schritt 3 deckt die vier Sonderbuchstaben ab, ist aber keine vollständige Implementierung der Unicode-Regeln zur Groß- und Kleinschreibung. Auf ICU basierende Bibliotheken und Tools mit Locale-Einstellung decken mehr Randfälle ab als ein selbst geschriebener Wrapper. Wenn ein von Ihnen genutztes Tool bereits eine korrekte türkische Locale-Option hat, nutzen Sie sie und behalten Sie nur das Testset. Wie Channable, DataFeedWatch oder Productsup mit der türkischen Locale umgehen, haben wir nicht getestet; wir treffen dazu keine Aussage. Lassen Sie das Testset dort wie bei jedem Tool laufen. Marktplätze haben zusätzlich eigene Titelregeln, die wir in unseren Leitfäden zu den Feeds von Akakçe, Cimri, N11 und ÇiçekSepeti behandeln.
FAQ
Warum wird İZMİR beim Umwandeln in Kleinbuchstaben zu i̇zmi̇r?
Die Standard-Kleinschreibung von Unicode wandelt das gepunktete große İ in ein normales i plus einen kombinierenden Punkt darüber (U+0307) um. Die türkische Regel wandelt İ in ein einfaches i um. Das Ergebnis sieht am Bildschirm fast richtig aus, enthält aber zusätzliche Codepoints.
Lehnt Google Merchant Center Titel mit dem kombinierenden Punkt ab?
Eine dokumentierte Ablehnung dafür haben wir nicht gefunden. Der String ist gültiges UTF-8 und löst daher den Fehler „Invalid UTF-8 encoding“ nicht aus. Der Schaden besteht in falsch geschriebenen Titeln und fehlgeschlagenem Matching in Ihren eigenen Tools.
Sollte ich Titel in Großbuchstaben, Kleinbuchstaben oder Title Case senden?
Google sagt, man solle keine Großbuchstaben zur Hervorhebung verwenden und die wichtigsten Angaben nach vorn stellen, da Nutzer meist nur die ersten 70 oder weniger Zeichen sehen. Satzschreibung oder Title Case mit korrekten türkischen Buchstaben erfüllen beides. Welche Variante besser konvertiert, ist ein Test für Ihr eigenes Konto.
Genügt toLowerCase("tr") in JavaScript?
Nein. toLowerCase() nimmt keine Locale entgegen. Verwenden Sie toLocaleLowerCase("tr") und übergeben Sie die Locale explizit, weil der Standardwert von der Umgebung abhängt.
Warum behebt setlocale das strtolower von PHP nicht?
Seit PHP 8.2 ignoriert strtolower() die Locale und wandelt nur ASCII-Buchstaben um. mb_strtolower() verarbeitet Nicht-ASCII-Text, lieferte in unserem Test für İSTANBUL aber trotzdem i̇stanbul. Wenden Sie die Zeichenersetzung aus Schritt 3 an, bevor Sie die Funktion aufrufen.
Kann die Unicode-Normalisierung den losen Punkt entfernen?
Nein. In unserem Test beließ NFC i plus U+0307 als zwei Codepoints. Entfernen Sie das Zeichen explizit und wenden Sie dann die korrigierte Regel erneut auf den ursprünglichen Quelltext an.
Betrifft das auch Arabisch oder andere Sprachen?
Die Regel gilt für Türkisch und Aserbaidschanisch. Andere Sprachen haben eigene Probleme bei Groß- und Kleinschreibung und Normalisierung, die dieser Leitfaden nicht behandelt.
Wie viele Testzeilen genügen?
So viele, dass jeder türkische Sonderbuchstabe und jede Position, die er einnehmen kann, abgedeckt ist: Wortanfang, Wortmitte, Wortende und neben einer Ziffer. Für die meisten Kataloge sind das 10 bis 15 Titel. Fügen Sie eine Zeile hinzu, sobald im Live-Betrieb ein neuer Fehler auftaucht.
Prüfen Sie Ihren eigenen Feed
Wenn Sie sehen möchten, wie Ihr aktueller Feed bei Titel- und Attributqualität abschneidet, lassen Sie ihn durch unser kostenloses Tool zur Feed-Analyse laufen.

Mitgründerin von Feedance. Mit über 20 Jahren Erfahrung in Produkt- und User-Experience-Design gestaltet sie, wie aus Katalogen kreative Inhalte werden. Mit einem starken Fokus darauf, Designsysteme und Automatisierung zu verbinden, hilft sie Marken, ihre visuelle Qualität zu skalieren, ohne den Designaufwand zu skalieren.
LinkedIn












