# Multilify: Einrichtungsanleitung für KI-Agenten

> Multilify ist ein kostenloses WordPress-Plugin (GPL v2 oder neuer), das eine Website mehrsprachig macht, ohne Beiträge zu duplizieren. Jede Übersetzung wird unter ihrem Sprachcode in den Metadaten des Originalbeitrags gespeichert, und jede Sprache außer der Standardsprache bekommt ein URL-Präfix wie /de/. Das Plugin stellt keine Anfragen nach außen.

## Grundregeln

- Zeig dem Nutzer deinen Plan und warte auf seine Zustimmung, bevor du etwas änderst.
- Arbeite bei einer Live-Website zuerst an einer Staging-Kopie.
- Bearbeite oder lösche nie Titel, Inhalt oder Titelform des Beitrags selbst. Die Übersetzungen werden daneben gespeichert.
- Lösche das Plugin nie, um es zurückzusetzen. Wenn du es im Adminbereich löschst, sind alle Übersetzungen weg. Beim Deaktivieren bleiben sie erhalten.
- Ändere nie einen bestehenden Sprachcode. Die Übersetzungen sind unter diesem Code gespeichert.

## 1. Website prüfen

```bash
wp core version                      # 5.8 oder neuer
wp eval 'echo PHP_VERSION;'          # 7.4 oder neuer
wp option get permalink_structure    # darf nicht leer sein, z. B. /%postname%/
```

## 2. Installieren

```bash
wp plugin install multilify --activate
wp plugin list --name=multilify --fields=name,status,version
```

## 3. Sprachen

```bash
wp option get multilify_languages --format=json
wp option get multilify_default_language
```

Die Liste ist ein Array von Objekten: `{"code":"de","name":"Deutsch","flag":"🇩🇪"}`. Ein Code besteht aus zwei bis fünf Kleinbuchstaben (`^[a-z]{2,5}$`). Er wird zum URL-Präfix und darf weder ein Wort sein, das WordPress in Adressen verwendet (feed, page, embed, wp, index, tag, date, type, order, paged, cpage, rest oder die Basen für Autor, Suche, Kommentare und Seitennummerierung), noch die Titelform eines bestehenden Beitrags oder einer Seite.

Die Einstellungsseite (Multilify im Admin-Menü) prüft all das. Über die Kommandozeile schreibst du die ganze Liste und lässt danach die Rewrite-Regeln neu schreiben:

```bash
wp option update multilify_languages '[{"code":"en","name":"English","flag":"🇬🇧"},{"code":"de","name":"Deutsch","flag":"🇩🇪"}]' --format=json
wp rewrite flush
```

Ohne diesen Schritt antworten die Adressen der neuen Sprache mit 404.

## 4. Übersetzungen

Jeder Beitrag hat pro Sprache drei Meta-Schlüssel:

```bash
wp post meta update <ID> _multilang_title_<code> "Übersetzter Titel"
wp post meta update <ID> _multilang_slug_<code> "uebersetzte-titelform"
wp post meta update <ID> _multilang_content_<code> "<p>Übersetzter Inhalt</p>"
```

- Der Übersetzungsbereich im Editor wendet `sanitize_title()` auf die Titelform und `wp_kses_post()` auf den Inhalt an. Ein Skript muss dasselbe tun.
- Eine Titelform muss innerhalb ihrer Sprache eindeutig sein. Der Übersetzungsbereich nummeriert ein Duplikat (-2, -3); ein Skript muss das selbst erledigen.
- Bleibt die Titelform leer, wird die Titelform des Beitrags unter dem Präfix verwendet.
- Ein Beitrag ohne Übersetzung zeigt unter der Adresse der Sprache den Text der Standardsprache, und sein Canonical-Link zeigt auf die Standardadresse.
- Beiträge und Seiten sind standardmäßig übersetzbar. Weitere Inhaltstypen fügst du in PHP über den Filter `multilify_post_types` hinzu.

## 5. Sprachumschalter

```text
[multilify_switcher]
[multilify_switcher show_name="false"]
<?php multilify_switcher(); ?>
```

## 6. Prüfen

```bash
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/<code>/<translated-slug>/   # 200
curl -s https://example.com/<code>/<translated-slug>/ | grep -o '<html lang="[^"]*"'      # der Code
curl -s https://example.com/<code>/<translated-slug>/ | grep -o 'hreflang="[a-z-]*"'      # die Standardsprache, der Code, x-default
```

## Filter

- `multilify_post_types`: welche Inhaltstypen Übersetzungsfelder bekommen.
- `multilify_translated_title`: der übersetzte Titel, so wie das Theme ihn ausgibt.
- `multilify_translated_content`: der übersetzte Inhalt vor der Ausgabe.
- `multilify_flag_choices`: die Flaggen, die die Einstellungsseite anbietet.
- `multilify_locale`: die WordPress-Locale, die für eine Sprache geladen wird.
- `multilify_enable_browser_detection`: ob jemand, der die Startseite zum ersten Mal besucht, zur Sprache seines Browsers weitergeleitet wird.
- `multilify_is_crawler`: ob eine Anfrage als Crawler gilt.

## Nicht unterstützt

Eine eigene Domain oder Subdomain pro Sprache, Codes mit Bindestrich wie pt-br sowie übersetzte Menüs, Widgets, Textauszüge, Kategorien, Schlagwörter und benutzerdefinierte Felder.

## Mehr

- Dokumentation: https://multilify.com/de/docs
- Fragen: https://multilify.com/de/faq
- Quellcode: https://github.com/kadirermantr/multilify
