WPML

Atahualpa-ScreenshotIch werde Ihnen zeigen, wie Sie Atahualpa von Bytes For All verwenden können, um mehrsprachige WordPress-Websites mit WPML zu erstellen.

Ein Theme für eine mehrsprachige WordPress-Website muss alle Strings in gettext-Aufrufe verpackt haben, aber das reicht nicht ganz aus. Die Verwendung von gettext im Theme ermöglicht es, dieses in einer anderen (einzelnen) Sprache anzuzeigen, als in der es ursprünglich erstellt wurde.

Um mehrsprachig zu funktionieren, muss das Theme den Besuchern ermöglichen, ihre Anzeigesprache zu wählen, und die richtigen Inhalte pro Sprache liefern.

Eine mehrsprachige Version für Atahualpa


Fangen wir am Ende an. Hier ist eine Demo-Website, die mit einer modifizierten Version von Atahualpa betrieben wird, und hier ist das modifizierte Theme, das Sie herunterladen und verwenden können.

Was wir geändert haben, um Atahualpa mehrsprachig zu machen

1. Hinzufügen der wpml-integration.php zum Theme-Verzeichnis


Die Datei wpml-integration.php befindet sich im WPML-Verzeichnis unter docs/theme-integration. Sie enthält eine Sammlung von Funktionen, die dabei helfen, Themes mehrsprachig zu machen.

All diese Funktionen sind so konzipiert, dass Themes WPML verwenden, wenn es aktiv ist, oder es ignorieren, wenn es fehlt. Das bedeutet, dass das Theme mehrsprachig ausgeführt wird, wenn WPML verfügbar ist, oder andernfalls normal (einsprachig).

Zu functions.php hinzugefügt:

include dirname(__FILE__) . '/wpml-integration.php';

Diese Anweisung lädt die wpml-integration.php und macht sie für alle Dateien im Theme verfügbar.

2. Hinzufügen von Sprachumschaltern


Sprachumschalter ermöglichen es Besuchern, die Sprache auszuwählen, in der die Website angezeigt wird. Oft ist es eine gute Idee, verschiedene Arten von Sprachumschaltern hinzuzufügen. Besucher überfliegen die Website schnell und suchen nach visuellen Hinweisen auf Inhalte in ihren Sprachen. Unterschiedliche Menschen schauen an unterschiedliche Stellen, daher hilft das Hinzufügen verschiedener Arten von Sprachumschaltern an verschiedenen Stellen der Seite den Besuchern dabei, ihre Sprache zu finden.

Wir haben den Drop-down-Sprachumschalter von WPML zur Seitenleiste hinzugefügt, indem wir ihn in die header.php eingefügt haben:

<?php wpml_languages_selector() ?>
atahualpa_drop_down_sprachumschalter
Drop-down-Sprachumschalter

Wir haben auch eine horizontale Liste von Sprachen zum Footer der Website hinzugefügt. Viele Nutzer scrollen zuerst ganz nach unten, um zu sehen, was dort ist (und wie lang die Seiten sind), also ist es ein guter Ort, um darauf hinzuweisen, dass Seiten in anderen Sprachen verfügbar sind. Wir haben den folgenden Code zur footer.php hinzugefügt:

<?php wpml_languages_list() ?>
Horizontaler Sprachumschalter im Footer
Horizontaler Sprachumschalter im Footer

Schließlich haben wir am Ende jedes Beitrags einen Sprachumschalter hinzugefügt. Dies fügt jedem Beitrag einen Satz hinzu, der angibt, in welchen anderen Sprachen er verfügbar ist. Folgendes wurde zur index.php hinzugefügt (die eine benutzerdefinierte Version der Anzeige-Schleife von WordPress enthält):

<?php if(is_singular()) wpml_content_languages(); ?>
Liste der Übersetzungssprachen
Liste der Übersetzungssprachen

Wenn Besucher auf „Home“ klicken, erwarten sie, zur Startseite zu gelangen, ohne die Sprache zu wechseln. Da jede Sprache eine „Startseite“ mit einer anderen URL hat, wird ein einzelner Wert für alle nicht funktionieren.

Normalerweise berechnen WordPress-Themes die Adresse für die „Startseite“ basierend auf dem Wert „Blog-URL“, der im Admin-Bereich festgelegt ist. WPML hat eine Funktion erstellt, die die korrekte Startseiten-Adresse entsprechend der Anzeigesprache berechnet.

Wir haben get_option('home’) durch wpml_get_home_url() ersetzt. Außerdem gibt die Funktion get_option('home’) die Adresse der Website ohne abschließenden Schrägstrich (/) zurück, sodass Themes ihn manuell hinzufügen. Die Funktion von WPML schließt diesen Schrägstrich ein (dahinter steckt eine lange Geschichte).

Um diese Änderung vorzunehmen, mussten wir zwei Dateien bearbeiten. Die functions/bfa_get_options.php wurde modifiziert und wie folgt geändert:

$bfa_ata['get_option_home'] = get_option('home');

in
$bfa_ata['get_option_home'] = wpml_get_home_url();

Außerdem wurde die functions/bfa_header_config.php bearbeitet und der abschließende Schrägstrich aus dem Startseiten-Link entfernt:
'<a href="' . $bfa_ata['get_option_home'] . '">' . $bfa_ata['bloginfo_name'] . '</a>'

4. Wirklich fortgeschritten – Übersetzen von Texten, die Nutzer im Admin-Bereich des Themes eingeben


Atahualpa ermöglicht die Steuerung einiger Texte über den Admin-Bereich. Das ist eine großartige Sache, die es erlaubt, die Website zu verwalten, ohne PHP-Dateien zu bearbeiten. WPML kann diese Strings auch mit seinem Mechanismus zur String-Übersetzung übersetzen.

Dazu muss das Theme WPML mitteilen, welche Strings übersetzt werden müssen, und dann die Übersetzung anzeigen, falls sie existiert.

Wenn Nutzer in den Admin-Bereich des Themes gehen, die Texte aktualisieren und auf Speichern klicken, wird die Funktion bfa_ata_add_admin aus der functions/bfa_ata_add_admin.php ausgeführt. Wir haben ihr den folgenden Abschnitt hinzugefügt (beginnend bei Zeile 11):

global $wpml_translatable_strings;

 foreach($wpml_translatable_strings as $wpml_str ){

   if(isset($_REQUEST['bfa_ata_'.$wpml_str]) && trim($_REQUEST['bfa_ata_'.$wpml_str])){

    wpml_register_string('atahualpa theme', $wpml_str, stripslashes($_REQUEST['bfa_ata_'.$wpml_str]));

  }

 }

Dies durchläuft eine Liste von Strings, die in der globalen Variablen $wpml_translatable_strings definiert sind. Es registriert jeden String in der String-Übersetzungs-Liste von WPML.

Das erste Argument ist der Kontext für die Strings. Jeder Name würde funktionieren, aber Sie sollten einen Namen wählen, der die Strings beschreibt. Das zweite Argument ist der Name für den String (wird nicht übersetzt). Das letzte Argument ist der Wert des Strings – dieser wird übersetzt.

Um die Übersetzungen anzuzeigen (sofern sie existieren), haben wir die Funktion wpml_t zur functions/bfa_get_options.php hinzugefügt (beginnend bei Zeile 204):

global $wpml_translatable_strings;

foreach($bfa_ata as $k=>$v){

   if(in_array($k, $wpml_translatable_strings) || $__first){

    $bfa_ata[$k] = wpml_t('atahualpa theme', $k, $v);     

  }

}

Dieser Code wird ausgeführt, wenn die Website für Besucher angezeigt wird. Er durchläuft die Liste der Strings, prüft, ob sie für die Übersetzung registriert wurden (in_array), und ruft in diesem Fall die Übersetzung ab. Die Funktion wpml_t gibt den übersetzten String in der aktuellen Sprache zurück, falls eine Übersetzung existiert, oder gibt einfach den ursprünglichen String zurück, falls es keine Übersetzung gibt.

Andere WordPress-Themes mehrsprachig machen


Wir haben bereits ähnliche Arbeit an iNove und Arras geleistet und planen, weitere Themes mehrsprachig zu machen.

Unsere Absicht ist es, sofort einsatzbereite mehrsprachige Themes bereitzustellen und Ihnen dabei zu helfen, Ihre eigenen Multilingual-Ready-Themes zu erstellen. Mit den hier beschriebenen Techniken können Sie Themes erstellen, die mehrsprachig ausgeführt werden, wenn WPML verfügbar ist, oder in einer einzigen Sprache ohne WPML.

Wenn Sie Themes erstellen und Hilfe benötigen, um sie mehrsprachig zu machen, können Sie gerne neue Threads im Forum eröffnen.

Sie können auch Geld verdienen (wirklich passives Einkommen), indem Sie Ihren Themes mehrsprachige Unterstützung hinzufügen. Wir werden im nächsten Beitrag darüber sprechen, wie Sie Affiliate-IDs in Themes integrieren.

Fanden Sie das nützlich? Teilen Sie diesen Artikel: