Methodik6 Min Lesezeit

Lebensmittel in sechs Sprachen benennen: Was wir gelernt haben

Lebensmittelnamen zu übersetzen ist kein Wörterbuchproblem, sondern ein kulturelles. Was wir bei der Lokalisierung von 845+ Lebensmitteln in 6 Sprachen für den Vnutri-Katalog gelernt haben.

Das Wort 'apple' in sechs Sprachen auf einer Seite — apple, manzana, poma, pomme, Apfel, яблоко

Jeder Lebensmittelname in Vnutri ist in 6 Sprachen übersetzt: en, es, ca, fr, de, ru. Das sind etwa 5 000 einzigartige Strings (845 Lebensmittel × 6 Locales). Beim Start sah das nach einem Wörterbuchproblem aus — Glossar suchen, Katalog durch einen Übersetzer schicken. Drei Monate später eine andere Schlussfolgerung: Lebensmittelnamen zu übersetzen ist kein Wörterbuchproblem.

Warum direktes Übersetzen scheitert

Drei Gründe.

1. Ein Name ist keine Beschreibung. „Pollock" auf Englisch ist ein Fisch. Auf Russisch heißt er „минтай". Google Translate gibt „поллок" (phonetische Transliteration), weil es nicht weiß, dass das Wort einen Fisch benennt. Welchen Fisch — das braucht Kategoriewissen, keine wörtliche Übersetzung.

2. Sorten sind regional. Apple Honeycrisp ist in den USA Alltag. In Europa ist er selten. Granny Smith — umgekehrt. Wenn ich „apple" auf Englisch sage, denke ich implizit an eine durchschnittliche US-Sorte; „Apfel" auf Deutsch — an eine durchschnittliche europäische. Physisch unterschiedliches Obst mit naher, aber nicht identischer Nährwert-Charakteristik.

3. Regionales Vokabular. „Eggplant" (US) = „aubergine" (UK) = „berenjena" (ES) = „albergínia" (CA) = „aubergine" (FR) = „Aubergine" (DE) = „баклажан" (RU). Schon zwei Konventionen innerhalb des Englischen. Dasselbe mit „zucchini" / „courgette".

Und am schlimmsten — wissenschaftliche Namen. „Salmo salar" steht für Atlantischen Lachs. Die meisten Übersetzer behalten das Latein („Anguilliformes" statt „Aal"), weil sie nicht wissen, was gemeint ist.

Drei Schichten der Lokalisierung

Wir haben eine Pipeline aus drei Schichten gebaut, jede günstiger als die vorige, aber bei seltenen Fällen weniger genau.

Schicht 1: OFF-Zutaten-Taxonomie

Die Open-Food-Facts-Zutaten-Taxonomie ist ein kuratiertes mehrsprachiges Lebensmittel-Wörterbuch. 4 212 Einträge in 100+ Sprachen pro Eintrag. ODbL-lizenziert.

Trefferquote: ~70 % der Katalog-Lebensmittel finden sich in OFF. Erste und günstigste Stufe.

Abgleich nach Ebenen:

  1. Direkt (apple → apple) → Übersetzung.
  2. Singularisiert (apples → apple) → Übersetzung.
  3. 2-Token-sortierter Subkey (black beans → beans + black) → Übersetzung.
  4. Umgekehrter Subkey (beans black → black beans) → Übersetzung.
  5. Kopfnomen (chocolate dark → chocolate) → Übersetzung (vorsichtig).

Bei einem Treffer übernehmen wir die fertigen Namen aus OFF für alle 6 Locales. Qualität exzellent: OFF ist kuratiert, falsche Treffer sind praktisch ausgeschlossen.

Schicht 2: Wikidata

Für die verbleibenden ~30 % — Wikidata über die wbsearchentities-API. Gestaffelter Picker mit P31-Filtern (instance of food).

  1. Exakter Label-/Alias-Treffer + Food-Signal in Beschreibung/P31.
  2. Substring-Überlappung + starkes Food-Keyword (vegetable, fish, meat).
  3. P31 in Food-Whitelist (Q2095 food, Q3314483 cultivar, Q502163 fruit).
  4. Beschreibung passt zu breitem Food-Regex.

Innerhalb einer Stufe sortieren wir nach realTranslationCount — das filtert wissenschaftliche Binomen heraus, die unverändert in jede Sprache kopiert wurden.

Trefferquote: ~25 % zusätzliche Lebensmittel. Wird gecacht. Wir blieben bei rund 476 Lebensmitteln — Wikidatas aggressive Rate-Limits für nicht authentifizierte Anfragen haben weiteres Crawlen gestoppt.

Schicht 3: Google Cloud Translation v3 (Translation LLM)

Finaler Durchlauf. Modell general/translation-llm in us-central1. Kein klassisches NMT (neuronale maschinelle Übersetzung) — der Translation LLM ist bei Lebensmittelnamen mit Zustand besser.

Warum der LLM gewinnt:

  • Geschlechts-Übereinstimmung. „cooked adzuki beans" → Spanisch: „judías adzuki cocidas" ✓ feminin Plural. NMT setzt „cocido" als Default, falsch. Der LLM sieht das Substantiv im selben String und wendet die korrekte Form an.
  • Idiomatisches Vokabular. „pollock" → Russisch: NMT gibt „поллок"; LLM gibt „минтай". „cloudberry" → Französisch: NMT spuckt „cloudberry" zurück; LLM gibt „mûre des marais".

Kosten — 80 $/M Zeichen (vs 20 $ NMT). Bei 5 000 × 30 Zeichen × 5 nicht-EN-Locales ≈ 60 $ pro Komplettlauf. Cache pro (Phrase, Sprache).

Nach dem LLM-Durchlauf — hartcodierte Korrekturtabelle für 13 Halluzinationen, die wir per Hand erwischt haben.

Konkrete Fallstricke

Was wir auf die harte Tour gelernt haben.

Markennamen. „Blackberry" auf Englisch ist eine Beere. Der LLM übersetzt es manchmal mit „BlackBerry" (das Telefon) ins Spanische. Fix: hartcodierte Marken-Blacklist.

Abkürzungen. „fig" (Feige) — der LLM gab im Deutschen „Abb." und im Russischen „рис." (denkend, es sei „figure" in einer Tabelle). Das Wort stand außerhalb des Kontexts, und der LLM wählte die statistisch häufigere Lesart „fig." (figure-Abkürzung).

Passiv-aggressive Binomen. Wikidata speichert lateinische Namen oft als Primary Label („Anguilliformes" für „Aal"). Werden diese Binomen als „Übersetzungen" kopiert, landen 100+ Sprachen bei demselben lateinischen String — sieht nach „viele Übersetzungen" aus, ist aber einer. Ein Filter auf realTranslationCount (distinct Strings über Sprachen) entfernt diese Fälle.

Verb-/Nomen-Verwechslung. „skate" auf Englisch ist ein Fisch (Rochen). Der LLM gab auf Russisch „кататься на коньках" (Schlittschuhlaufen). Der Kontext „100 g skate" half nicht.

Sushi-Effekt. Japanische Wörter, in die meisten europäischen Sprachen entlehnt. „Tofu", „miso", „sushi", „edamame" — bleiben in allen 6 Locales unverändert. Nicht übersetzt.

Zustands-Suffix

Ein eigenes Problem — der Zustand. „apple cooked" → Deutsch: „Apfel, gekocht" (Maskulinum). Der LLM bekommt das hin, aber nur, wenn das Komma vor dem Senden in einen Adjektiv-Präfix umgewandelt wird: „apple, cooked" → „cooked apple" → „gekochter Apfel".

Sonst übersetzt der LLM die Komma-Form wörtlich als „Apfel, fertig", ein Calque aus dem Englischen mit komischer Grammatik.

Das ist eine hartcodierte Transformation vor dem LLM-Aufruf. Komma-Form → natürliche Nominalphrase → LLM → natürliche Nominalphrase in der Zielsprache.

Wortstellung je Sprache

Englisch stellt das Adjektiv vor das Substantiv: „red apple". Französisch dahinter: „pomme rouge". Spanisch — meist dahinter („manzana roja"), manchmal davor („buena manzana"). Katalanisch — fast immer dahinter.

Direkte Übersetzung erhält die Quell-Reihenfolge. Das gibt holprige Ergebnisse bei langen zusammengesetzten Namen: „raw black beans" → „rohe schwarze Bohnen" (richtig) vs „schwarze rohe Bohnen" (falsch).

Ein finaler Reorder-Pass (Claude Sonnet, cache) läuft durch jede Locale und schreibt die Namen in eine Noun-First-Form um. Eine eigene Stufe der Pipeline.

Wir kennzeichnen kein halal/koscher

Das sind Prozesszertifizierungen, keine Produktattribute. „Koscher-Käse" ist nicht derselbe Käse wie ein gewöhnlicher (andere Produktionsanforderungen). Vnutri markiert Produkte nicht als halal/koscher — kein Produkt-, sondern ein Prozessmerkmal. Siehe die 9 Ernährungsformen.

Abdeckung

Nach den drei Pipeline-Stufen:

  • en — 100 % (kanonisch)
  • es — 95 %
  • ca — 90 %
  • fr — 94 %
  • de — 92 %
  • ru — 89 %

Der Rest — wenn der Name weder in OFF noch in Wikidata existiert und der LLM etwas Falsches geliefert hat. Wird in name-overrides.json von Hand korrigiert.

Was wir nicht tun

  • Keine Markenübersetzung. Enthält der Name eine Marke, bleibt sie stehen.
  • Keine LLM-Freiheit. Jede Übersetzung wird gegen OFF/Wikidata geprüft, wo Datenpunkt vorliegt.
  • Kein NMT. Nur Translation LLM oder kuratierte Taxonomie.

Offene Probleme

Regionale Sorten. „Apple" — im Katalog ein durchschnittlicher Apfel. Der russische Nutzer denkt an Antonovka oder Gala; der amerikanische an Honeycrisp oder Red Delicious. Physisch unterschiedliches Obst mit naher, nicht identischer Nährwertcharakteristik.

Regionale Gerichte. Pelmeni, Borschtsch, Kascha — Wörter, die es in jeder Sprache gibt, aber leicht unterschiedliche physische Gerichte bezeichnen. Vnutri nutzt meist den quellsprachlichen Namen mit englischer Transliteration als Anker.

Transliterieren vs übersetzen. „Sushi" im Deutschen ist „Sushi". „Sushi" im Russischen ist „суши". „Pizza" im Deutschen ist „Pizza". „Pizza" im Russischen ist „пицца". Wann transliterieren, wann übersetzen — keine harte Regel, wir folgen der Konvention.

Weiterführend

Katalogarchitektur — woher unsere Daten kommen. Implementierungsdetails — im apps/scripts/-Verzeichnis des Repos.

Quellen