# JPKCom Simple Lang — Anleitung & Tipps

> Einzelne WordPress-Seiten mit JPKCom Simple Lang pro Beitrag in anderer Sprache anzeigen — Installation, Sprachauswahl, Hreflang und Oxygen-Bedingungen.

Source: https://www.jpkc.com/db/guides/jpkcom-simple-lang/

JPKCom Simple Lang ist eine leichtgewichtige Lösung, um einzelne Seiten oder Beiträge in einer anderen Sprache als deiner Site-Standardsprache auszugeben. Statt eines vollwertigen Mehrsprachigkeits-Plugins erledigt es genau eine Aufgabe: die WordPress-Locale **pro Beitrag** im Frontend zu überschreiben — inklusive `<html lang="">`-Attribut, Hreflang-Tags und Oxygen-Builder-Bedingungen.

## Anleitung

### Voraussetzungen

- WordPress **6.9** oder neuer
- PHP **8.3** oder neuer (mit Strict Typing)
- Mindestens ein zusätzliches Sprachpaket installiert (optional, aber empfohlen)
- Multisite wird unterstützt (das Plugin ist netzwerkfähig)

### Installation

1. Lade die aktuelle Release-ZIP von der [GitHub-Releases-Seite](https://github.com/JPKCom/jpkcom-simple-lang/releases) herunter.
2. Im Admin-Bereich: **Plugins → Installieren → Plugin hochladen**, ZIP wählen, **Jetzt installieren**, dann **Aktivieren**.

Alternativ per FTP den Ordner `jpkcom-simple-lang` nach `/wp-content/plugins/` hochladen oder für die Entwicklung direkt klonen:

```bash
cd /pfad/zu/wordpress/wp-content/plugins/
git clone https://github.com/JPKCom/jpkcom-simple-lang.git
```

### Sprachpakete installieren

Das Auswahl-Dropdown zeigt **nur installierte** Sprachen. Neue Sprachen fügst du so hinzu:

1. Gehe zu **Einstellungen → Allgemein** und öffne das **Sprache der Website**-Dropdown.
2. Wähle die gewünschte Sprache (z. B. „Deutsch", „Français") und klicke auf **Änderungen speichern** — WordPress lädt das Sprachpaket automatisch herunter (5–10 Sekunden).
3. Optional kannst du die Standardsprache anschließend wieder zurückstellen; das installierte Paket bleibt verfügbar.

Eine Übersicht aller über 200 Sprachen findest du auf [translate.wordpress.org](https://translate.wordpress.org/).

### Verwendung

1. **Post-Typen freischalten** (optional): Unter **Einstellungen → Simple Lang** legst du fest, welche Post-Typen eine Sprachauswahl bekommen. Standardmäßig sind Beiträge und Seiten aktiv.
2. **Sprache wählen**: Beim Bearbeiten eines Beitrags erscheint in der Seitenleiste das Dropdown **Frontend Language Select**. Wähle eine installierte Sprache oder belasse es beim Standard.
3. **Übersetzungen verknüpfen** (optional): Über die Meta-Box **Translation Links** verbindest du zusammengehörige Beiträge unterschiedlicher Sprachen. Verknüpfungen sind bidirektional — verbindest du Beitrag A mit B, verlinken sich beide gegenseitig; eine ganze Übersetzungsgruppe wird automatisch komplett vernetzt.
4. **Im Frontend**: Beim Aufruf wechselt WordPress automatisch in die gewählte Sprache. Übersetzt werden Oberflächen-Strings (Core, Theme, Plugins), das `lang`-Attribut sowie SEO-Meta-Tags (`og:locale`); für verknüpfte Beiträge werden `<link rel="alternate" hreflang="XX">`-Tags im `<head>` ausgegeben.

> **Wichtig:** Simple Lang übersetzt **nicht** deine Inhalte. Titel, Beitragstext, Custom Fields und Medien-Beschriftungen bleiben so, wie du sie schreibst — die Sprache des Inhalts liegt in deiner Verantwortung.

## Tipps & Tricks

- **Richtiger Einsatzzweck:** Simple Lang ist für gelegentliche Seiten in einer Zweitsprache gedacht (Landingpages, Doku, rechtliche Seiten, Client-Präsentationen). Brauchst du vollständige Site-Übersetzungen, Sprachumschalter oder Übersetzungs-Workflows, sind WPML oder Polylang die bessere Wahl.
- **Hreflang ohne Konfiguration:** Verknüpfte, **veröffentlichte** Beiträge erhalten selbstreferenzierende Hreflang-Tags, deterministisch nach Sprachcode sortiert und früh im `<head>` (vor den meisten SEO-Plugins). `x-default` ist derzeit **nicht** enthalten.
- **Locale-Format:** Sowohl kurze (`ar`) als auch vollständige Locales (`de_DE`) werden akzeptiert — relevant für Sprachen ohne Ländercode.
- **Oxygen-Builder-Bedingungen:** Bei installiertem Oxygen stehen drei Conditions zur Verfügung: „Post Language Is" (bestimmte Sprache), „Post Has Custom Language" (überhaupt eine Sprache gesetzt) und „Post Uses Default Language" (Standardsprache). Damit blendest du Elemente sprachabhängig ein oder aus.
- **Helfer-Funktionen für Entwickler:** `jpkcom_simplelang_get_post_language( $post_id )` liefert die gesetzte Locale (oder `null`), `jpkcom_simplelang_get_current_language()` die aktive Frontend-Sprache und `jpkcom_simplelang_get_language_code( 'de_DE' )` den reinen Sprachcode (`de`) fürs `lang`-Attribut.
- **Template-Overrides:** Plugin-Dateien lassen sich im Child-Theme (`{child-theme}/jpkcom-simple-lang/{datei}`), Parent-Theme oder in MU-Plugins (`{WPMU_PLUGIN_DIR}/jpkcom-simple-lang-overrides/{datei}`) überschreiben. Die Suchpfade erweiterst du per Filter `jpkcom_simplelang_file_paths`.
- **REST-API & Daten:** Die Sprache liegt als Post-Meta unter dem Schlüssel `_jpkcom_simplelang_language` und ist bei entsprechender Konfiguration über die REST-API erreichbar. Eine Bulk-Zuweisung gibt es nicht — dafür `update_post_meta()` mit demselben Schlüssel verwenden.
- **Deaktivieren ist gefahrlos:** Nach dem Abschalten zeigen Beiträge wieder die Standardsprache; die Meta-Daten bleiben erhalten und greifen bei erneuter Aktivierung sofort wieder.
- **Performance:** Eine Meta-Abfrage pro Beitrag, ein einmaliger Locale-Wechsel pro Request, keine zusätzlichen Tabellen, kein Frontend-JS/CSS.
- **Updates & Sicherheit:** Das Plugin aktualisiert sich sicher über GitHub mit SHA256-Prüfsummen-Verifikation; ein bevorzugter Abgleich gegen die `download_url` des Manifests verhindert, dass ein manipuliertes Manifest die Prüfsumme umgeht.

## Weiterführende Informationen

- Quellcode auf GitHub: <https://github.com/JPKCom/jpkcom-simple-lang>
- API-Dokumentation (PHPDoc): <https://jpkcom.github.io/jpkcom-simple-lang/docs/>
- [Oxygen Builder](https://oxygenbuilder.com/)
- [Alle verfügbaren WordPress-Sprachen](https://translate.wordpress.org/)
- [Changelog dieses Projekts](https://www.jpkc.com/db/changelog/jpkcom-simple-lang/)

