Navigation überspringen
Aktualisiert
Januar 6, 2024

Bei der Entwicklung mehrsprachiger Websites mit WPML benötigen Sie eventuell einen benutzerdefinierten Sprachumschalter. Erfahren Sie, wie Sie dies mit einfachen PHP- und CSS-Skripten schaffen.

Mit WPML können Sie Ihre Menüs, Widgets, Fußzeilen und Websites mit dem Site Editor (früher Full Site Editing genannt) mit Sprachumschaltern ausstatten – komplett mit Anpassungsoptionen und integrierten Flaggen. Aber vielleicht brauchen Sie etwas Besonderes für Ihre Website.

In diesem Tutorial zeigen wir Ihnen, wie Sie einen schwebenden Sprachumschalter hinzufügen. Ein schwebender Sprachumschalter sieht toll aus und macht es Ihren Kunden einfacher, Ihre Website in ihrer eigenen Sprache anzusehen.

Eine Website mit dem schwebenden Sprachumschalter

Befolgen Sie diese drei Hauptschritte:

  1. Fügen Sie den PHP-Code hinzu, der den Sprachumschalter anzeigt
  2. Gestalten Sie Ihren Sprachumschalter mit CSS
  3. Aktualisieren Sie Ihre Sprachumschalter-Einstellungen

Der PHP-Teil

Der erste Schritt besteht darin, den PHP-Code hinzuzufügen, der für die Darstellung des Sprachumschalters auf Ihrer Seite verantwortlich ist. Dazu erstellen Sie eine Funktion, die einen div-Container mit dem Sprachumschalter darin einfügt. Wir können die wpml_add_language_selector Aktion verwenden, um den Sprachumschalter darzustellen.

In diesem Beispiel wollen wir, dass der neue Sprachumschalter in der Fußzeile angezeigt wird, also verwenden wir unsere neue Funktion mit der WordPress-eigenen wp_footer-Hook.

Der vollständige PHP-Code wird so aussehen.

Language switcher PHP
//WPML - Add a floating language switcher to the footer
 add_action('wp_footer', 'wpml_floating_language_switcher'); 
 
 function wpml_floating_language_switcher() { 
    echo '<div class="wpml-floating-language-switcher">';
        //PHP action to display the language switcher (see https://wpml.org/documentation/getting-started-guide/language-setup/language-switcher-options/#using-php-actions)
        do_action('wpml_add_language_selector');
    echo '</div>'; 
}

Sie können sie kopieren und in die Datei functions.php Ihres (Child-)Themes einfügen.

Der Gestaltungsteil

Mit dem vorherigen Code haben wir bereits einen neuen Sprachumschalter in der Fußzeile unserer Website hinzugefügt. Jetzt ist es an der Zeit, diesen so anzupassen, dass er in der unteren rechten Ecke der Website schwebt. Das können Sie mit dem CSS-Attribut position: fixed erreichen.

Nutzen Sie die folgenden Schritte, um den CSS-Code hinzuzufügen.

  1. Gehen Sie zu WPML → Sprachen.
  2. Scrollen Sie nach unten zu den Sprachumschalter-Optionen und erweitern Sie den Abschnitt Zusätzliches CSS .

Alternativ können Sie diesen CSS-Code hinzufügen, indem Sie zu Design → Customizer gehen und auf Zusätzliches CSS klicken.

Im folgenden Beispiel werden einige zusätzliche Anpassungen wie abgerundete Kanten und Boxschatten ergänzt. Natürlich können Sie diese ganz nach Wunsch anpassen.

Language Switcher Styling
/*Removing some default CSS from our language switcher*/
.wpml-floating-language-switcher .wpml-ls-statics-shortcode_actions {
  margin-bottom: 0;
}
 
.wpml-floating-language-switcher  .wpml-ls-statics-shortcode_actions a {
  background-color: transparent !important;
}
 
.wpml-floating-language-switcher .wpml-ls-legacy-list-horizontal a {
  padding: 5px;
}
 
 
/*Customize this if you want*/
.wpml-floating-language-switcher {
  position: fixed;
  bottom: 10px;
  right: 10px;
  background: #f8f8f8; /*background color*/
  border: 1px solid; /*border settings*/
  border-color: #eee; /*color of the border*/
  padding: 0px; /*padding of container*/
  border-radius: 6px; /*rounded border*/
  /*Box Shadow*/
  -webkit-box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.25);
  -moz-box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.25);
  box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.25);
}

Der Einstellungsteil

Zum Schluss müssen Sie einige Einstellungen so anpassen, dass der Sprachumschalter nur Flaggen anzeigt.

Führen Sie dazu folgende Schritte aus:

  1. Gehen Sie zu WPML → Sprachen.
  2. Scrollen Sie nach unten zu Benutzerdefinierte Sprachumschalter und klicken Sie auf Aktivieren.
  3. Klicke auf den Button „Anpassen„.
  4. Für Was in den Sprachumschalter aufgenommen werden soll, wählen Sie Flagge und deaktivieren die anderen Optionen.
  5. Klicken Sie auf Speichern.
Language switcher options
Nur die Flagge im fließenden Sprachumschalter anzeigen

Das war’s! Sie sollten jetzt einen hübschen benutzerdefinierten Sprachumschalter auf der Website haben:

Horizontal language switcher
Der Sprachumschalter auf dem Frontend

Bonus: Vertikal schwebender Sprachumschalter

Sie können stattdessen auch einen vertikalen Sprachumschalter erstellen, wie auf dem Screenshot unten:

Vertical language switcher
Vertikaler Sprachumschalter

Dazu ersetzen Sie einfach die vorherige CSS durch den folgenden Code:

Vertical Language Switcher CSS
/*Removing some default CSS our language switcher*/
.wpml-floating-language-switcher .wpml-ls-statics-shortcode_actions {
  margin-bottom: 0;
}
 
.wpml-floating-language-switcher  .wpml-ls-statics-shortcode_actions a {
  background-color: transparent !important;
}
 
.wpml-floating-language-switcher .wpml-ls-legacy-list-horizontal a {
  padding: 5px;
}
 
.wpml-floating-language-switcher .wpml-ls-item {
  display: block;
}
 
/*Customize this if you want*/
.wpml-floating-language-switcher {
  position: fixed;
  bottom: 20px;
  right: 0px;
  background: #f8f8f8; /*background color*/
  border: 1px solid; /*border settings*/
  border-color: #eee; /*color of the border*/
  padding: 0px; /*padding of container*/
  border-radius: 6px 0 0 6px; /*rounded border*/
  /*Box Shadow*/
  -webkit-box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.25);
  -moz-box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.25);
  box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.25);
  z-index: 999;
}

10 Antworten zu “Benutzerdefinierter Sprachumschalter”

  1. guten tag

    ich möchte gerne flaggen zur sprachauswahl im header platzieren. nun werd ich nicht schlau aus den ganzen anleitungen und wäre um jegliche hilfe dankbar. ich möchte einfach alle sprachen anzeigen ohne dropdown, sondern mit grafiken wie dies hier im footer der fall ist.

  2. Die Beschreibung ist etwas fortgeschritten. Um die Auswahl in den header zu bringen, musst du erst wie beschrieben die function languages_list_footer() wie in „Liste der Sprachennamen und Flaggen für die Fußzeile“ beschrieben wurde ans Ende der Datei wp-includes/functions.php zu kopieren. Dann musst du die index.php deiner Theme bearbeiten und die funktion aufrufen, indem du ein: an der betreffenden Stelle im Code reinschreibst
    ich hoffe das hilft dir!

  3. Guten Abend,

    ich habe versucht eine ganz simple Liste (ohne JavaScript) zu erstellen. Einfach ein Link der angibt welche Sprachen verfügbar sind.
    Wie hier bei z.B. Archive. Ein ganz simpler Link, den ich mit CSS bearbeiten kann. Desweiteren würde ich mich freuen, wenn ich die (unnötigen) divs herausbekommen kann, da sonst meine Liste nicht korrekt angezeigt wird. 😉

    Vielen Dank! MfG Jakob

  4. Wie kann ich die Reihenfolge der Sprachen in der Ausgabe sortieren:

    php do_action(‚icl_language_selector‘);

    Im Moment bekomme ich:
    1. Englisch
    2. Spanisch
    3. Deutsch
    4. Portugiesisch

    Reihenfolge soll sein:
    1. Deutsch
    2. Englisch
    3. Spanisch
    4. Portugiesisch

    Wo müsste ich einen sort-Befehl einfügen?

    Vielen Dank für Hinweise!

    T. Lüers

  5. Ich habe meine Seite auf 3 Sprachen und möchte hierzu die Flaggen der jeweiligen Sprache nebeneinander anzeigen (ohne Text). Wie geht das?
    Habe keine Ahnung. Bitte um Erklärung für Laien.

  6. gute idee osman, genau dasselbe möchte ich auch mal wissen.
    am besten mit einer festen sortierung, die frei wählbar ist.
    gruß thomas

  7. Oben heisst es:
    „Wir sollten auch bisschen CSS hinzufügen, um die Sprachenliste zu gestalten. Diese CSS wird die Sprachenliste in Ihren Footer einfügen und sie ein bisschen formatieren:“
    Es fehlt die Angabe, wo dieser CSS-Code einzufügen ist.
    Bitte nachtragen!

    • Hallo Jürgen, vielen Dank für den Hinweis! Stimmt, wird nicht erklärt wo man das zusätzliche CSS eingeben soll. Wir werden das zeitnah nachtragen.
      Für alle Nutzer, die diesen Kommentar lesen sollten, das CSS sollte unter „WPML > Sprachen > Sprachumschalter-Optionen > Zusätzliche CSS“ eingetragen werden.