Gewusst wie

How to set and use a multilingual child theme.

Importieren von mehrsprachigen Inhalten einer WP Seite die mit dem Polylang Plugin verwaltet wurde

Vorwort

ABSOLUT WICHTIG: Es ist zwingend notwendig das vor Beginn der Änderung durch das Plugin eine Datensicherung der Datenbank vorgenommen wird!

Datenbanksicherungen waren sehr hilfreich bei der Entwicklung der neuen Funktionen von xili-language 2.21+ und erlaubten es zu jeder Zeit zu einem früheren Stadium der Entwicklung zurück zu kehren.

Obwohl die genutzte Taxonomie “language” bei xili-language und Polylang vom Namen her identisch ist, so gibt es doch Unterschiede die im vorherigen Beitrag beschrieben wurden.

Dieser Beitrag richtet ich an Webmaster und Administratoren mit einem fortgeschrittenen Kenntnisstand über WordPress und an diejenigen die die “CMS” Hintergründe kennen um einen Wechsel von Polylang zu xili-language (ab 2.21+) zu vollziehen.

Vorbereitung

Installiere die 3 xili-language plugins, OHNE DIESE ZU AKTIVIEREN, xili-language, xili-tidy-tags und xili-dictionary, entweder via FTP oder über die Liste des WordPress Plugin-Repository.

Öffne mehrere Reiter in deinem Browser. Zwei mit der Liste der Erweiterungen, eine mit der öffentlichen Webseite und eine mit dem Administrations-Dashboard.

Deaktivierung von Polylang

WARNUNG! In der Liste der Erweiterungen darf Polylang nur deaktiviert werden ohne es zu löschen! Ansonsten werden alle Polylang spezifischen Daten gelöscht und stehen xili-language nicht mehr zur Verfügung und eine Migration ist nicht mehr möglich!

desactivate Polylang
Deaktivierung Polylang
Activate xili-language
Aktivierung xili-language

Danach kann xili-language aktiviert werden, es startet ein in mehreren Schritten halbautomatischer Prozess der zunächst eine Willkommens-Seite öffnet:

Welcome screen after activation
Willkommen-Meldung nach der Aktivierung

Wechsle auf die Seite der xili Einstellungen, xili erkennt das Vorhandensein der Polylang  Elemente und beginnt diese zu verarbeiten und übernimmt nun das Sprachen-Management:

before regeneration
vor der Degeneration

Regenerierung der Mehrsprachigen Elemente

Die Regenerierung der Links von zusammengehörenden Beiträgen beginnt und die im Anschluss folgende Nachricht bittet dich den Settings for Experts Reiter zu öffnen.

regeneration done
Regenerierung abgeschlossen

Da der nächste Schritt die Taxonomien betrifft, wechsle zunächst auf den vorbereiteten Browser-Tab der die Liste der Erweiterungen beinhaltet und aktiviere das zweite xili Plugin Xili-tidy-tags:

Activate xili-tidy-tags
Aktiviere xili-tidy-tags

Kehre nun zurück zum Browser-Tab mit der Seite “Settings for Experts” und klicke “Start” in der Meta-Box “special actions and parameters”:

Start taxonomy groups recovering
Start taxonomy groups recovering

Taxonomien stehen in Beziehung zu Tags (post_tag) vornehmlich:

Tags list and languages
Tags List und Sprachen

un den xili-tidy-tags Beziehungen

xili-tidy-tags assigning done
xili-tidy-tags hergestellte Beziehungen

sie bereiten die Elemente der Kategorien vor die im Übersetzungsmodus verwaltet werden ohne diese zu kopieren oder zu klonen, dies geschieht durch xili-language und Xili-dictionary. (siehe hier zusätzlich den betreffenden Beitrag)

Um WordPress vom Polylang Plugin zu säubern müssen noch zwei weitere Schritte vorgenommen werden (diese können auch später erfolgen):

Erst starten wir die Säuberung durch xili, dann löschen wir Polylang:

To launch DB cleaning process
Starte Launch DB cleaning process
Ready to delete plugin files
Danach kann Polylang gelöscht werden (Ready to delete plugin files)

 

WARNUNG :

Es versteht sich von selbst – Polylang darf nicht wieder aktiviert werden! Wer zu Polylang zurück kehren möchte benutzt bitte seine Backups!

Die Polylang Dateien können über den WP Dialog der Plugin-Liste gelöscht werden oder via FTP.  Xili-language, hat alle wichtigen Dateien umbenannt zum Beispiel: uninstall.php zu uninstall_XL_desactived.php, damit die Taxonomie “language” vor einem ungewollten Löschen geschützt ist, wenn der WP Dialog genutzt wird.

Mehrsprachige WP Plugins und (benutzerdefinierte) Taxonomien

Seit 2009 benutzt xili-language die Taxonomie “language” zwei Jahre später folgte Polylang ein weiteres Plugin für Mehrsprachigkeit dieser Methode. Ermöglicht wurde dies mit WordPress 2.3 siehe hierzu die Datei taxonomy.php in WordPress.

Der Hauptvorteil der Taxonomie-Nutzung ist das keine Datenbankeinträge für Artikel oder Beiträge kaputt gehen können, was bei anderen Plugins zur Mehrsprachigkeit durchaus der Fall sein kann, da diese Tabellen einfügen und das ‘post_content’ Feld nutzen.

Wie die Hauptkategorien (Category) und Schlüsselwörter/Tags (post_tag), wird jedes Element (Term) der Taxonomie definiert durch seinen Namen, seinem Kürzel (Slug) und der Beschreibung. Andere Felder sind technische Felder (term_id, taxonomy_id …).

Beispiel anhand der Kategorie “Letzte Beiträge”
– Name : Letzte Beiträge
– Slug : letzte_beitraege
– Beschreibung: Die letzten veröffentlichten Beiträge

In xili-language und der Taxonomie “language” wird eine Sprache wie folgt definiert:

  • Name : fr_FR (iso)
  • Slug : fr_fr
  • Beschreibung : Französisch

Bei Polylang verhält es sich ein wenig anders :

  • Name : Französisch
  • Slug : fr (Kürzel)
  • Beschreibung: besteht aus einigen sequenziellen Daten in einer Tabelle (Array) dessen ISO name (locale => en_US) von WP zur Bestimmung der Übersetzungsdateien genutzt wird.

Die Schlüsselfunktion in beiden Fällen ist der ISO Code, der die Sprache und das Land indem die Sprache gesprochen wird beschreibt. Als Beispiel Französisch in Kanada => fr_CA.

Die Nutzung von sequenziellen Daten im Beschreibungsfeld ist eine Erfindung von Polylang die sonst in WordPress keinerlei Verwendung findet. Das Feld Beschreibung erlaubt keine SQL-Abfragen deshalb müssen PHP Funktionen verwendet werden.

Wie in der JetPack Datei locale.php (die von xili-language genutzt wird) erkenntlich ist, ist Mehrsprachigkeit bzw. Sprachen-Management eine sehr komplexe Angelegenheit und nutzt eine mehrfache Kodierung. Man kann andere unveränderliche Elemente wie der Name der Sprache (Französisch) und die Schreibrichtung finden, wobei es nur eine sehr kleine Menge von rtl-Sprachen (Schreibrichtung von rechts nach links) gibt.

Mit nur einigen hundert Zeilen Code schafft es xili-language (2.21+) Elemente einer vorherigen WP Installation die mit Polylang genutzt wurde weiterhin zu betreiben. (Weitere Informationen sind der Anleitung des kommenden Beitrags zu finden.)

Xili-language ist ebenfalls mit dem aktuellen Polylang Format kompatibel, dies wird durch Filter und Abstraktion des Taxonomie-Modells erreicht. Als Beispiel hierfür gilt die Verwendung von pot, po und mo Dateien die von Themes oder Plugins erzeugt werden.

xili-language V. 2.15.1: Fahnen Funktion Verbessert für Theme Entwickler

Die xili-language Version 2.15.0 führte die Funktion  add_theme_support ('custom_xili_flag') ein, um die Sprachauswahl mittels Fahnen zu ermöglichen die in der Medienbibliothek gespeichert sind.

Über den Parameter array ($args) der mit der xili-language Version  2.15.1 eingeführt wird, ist es nunmehr möglich die Fahnen aus einem Unterordner des Themes auszulesen. Dies bietet einen einfachen Weg für Webmaster Fahnen die im Design des Themes bereitgestellt werden zu integrieren. Es ist somit kein zusätzliches hoch laden der Fahnen-Dateien in die Medienbibliothek mehr notwendig.

Hier ein beispielhafter Code der in einen Funktionsaufruf  verwendet werden kann über add_action ‘after_setup_theme‘ (Priorität auf 12 gesetzt)

$listlanguages = array(
'ar_ar','ar_ma', 'ar_xx', 'cn_cn',
'de_de', 'en_us', 'es_es', 'fr_be', 'fr_ca', 'fr_fr',
'it_it', 'ja_ja', 'ja', 'km_kh', 'pt_pt', 'ru_ru', 'zh_cn') ;

$args = array();
foreach ( $listlanguages as $one_language ) {
$args[$one_language] = array(
'path' => '%2$s/images/flags/'.$one_language.'.png',
'height' => 16,
'width' => 11
);
}
add_theme_support ( 'custom_xili_flag', $args );

%2$s wird im ‘Pfad’ verwendet, da die Fahnen sich hier im Beispiel in einem Unterverzeichnis des Child-Theme befinden, es wird vorausgesetzt, das sich hier alle Bilddateien befinden.

Um Beispiele in der Verwendung innerhalb des ‘loop’ zu sehen enthält das verwaltete twenty fourteen-xili Theme das innerhalb des xili-language Plugin verfügbar ist eine entsprechende Integration und prüft über die vorhandene Sprachliste ebenfalls auf vorhandene Fahnen-Dateien. Die neueste Version des twenty thirteen-xili Theme wird eine weitere Integrationsmöglichkeit enthalten.

xili-language V. 2.15: Der einfachste Weg Fahnen zur Sprachwahl zu verwalten!

In dieser Woche wird xili-language in der Version 2.15 ausgeliefert und erhält wichtige Neuerungen für Webmaster und Theme Entwickler.

Obwohl Fahnen einige Beschränkungen für die Sprachwahl mit sich bringen (*) erhält xili-language nun die Möglichkeit, Fahnen für die Sprachwahl auswählen zu können, bislang war es hierfür notwendig in CSS den Namen für eine Sprache durch eine Fahne ersetzen zu lassen.

(*) gleiche Sprachen werden oft in mehreren Ländern gesprochen!

Einige Beispiele für die Umsetzung mit Fahnen zur Sprachwahl wurden bereits in den fünf mitgelieferten mehrsprachigen Child Themes wie zum Beispiel dem twenty fourteen xili das hier live im Einsatz ist gezeigt. Die neueren Versionen der Child Themes werden nun direkt mit den neuen Funktionen der xili-language Version 2.15 zur Veranschaulichung ausgeliefert.

Mit den Mitteln der Grundfunktionen in WordPress und dem xili-language Plugin ist es nunmehr möglich:

  • eine vorhandene Fahne aus der Medienbibliothek auswählen zu können
  • diese Fahne einer Sprache zu zu ordnen
  • in einem neuen Dialog, der sich im Design Menü befindet, einige Anzeige-Parameter zu verwalten
  • sowie ein automatischer Prozess um Style Zeilen im Header zu setzen.

Entwickler erhalten zudem:

  • eine neue Funktion add_theme_support() mit dem Parameter ‘custom_xili_flag’
  • neue Filter um ihre Benutzerdefinierten Themes zu setzen
  • neue Shortcodes um Fahnen nutzen zu können die in der Medienbibliothek vorhanden sind und vorher durch den Webmaster hochgeladen wurden

Einige Bildschirmfotos:

Unten ein Ausschnitt aus der Medienliste, ein Bild wurde als Fahne zugeordnet  (das zweite als Kopfbild)

flag example
flag example

Das untere Bildschirmfotos zeigt die Hauptfunktion (ob eine Fahne oder der Name angezeigt werden soll), die Liste der verfügbaren Fahnen in der Medienbibliothek sowie einige sehr technische Zeilen für versierte und fortgeschrittene Benutzer. Für die fünf Beispiel Child Themes gelten diese Parameter als Stilvorlagen:

xili-language flag settings
xili-language flag settings

Vorteile:

  • die Wahl der Fahne ist frei und nicht landesspezifisch abhängig, das Plugin wählt das richtige Format des zugewiesenen Bildes aus der Medien Bibliothek
  • Theme Entwickler können durch die Verwendung der Filter Standardoptionen und Einstellungen vorgeben

Nachteile:

  • noch mehr Code-Zeilen

Neues xili plugin für Mediendateien und Anhänge: xili re/un attach media

Neues xili plugin für Mediendateien und Anhänge: xili-re-un-attach-media verfügbar. Das Plugin ist nur in der Administration aktiv und bringt zwei neue Funktionen zur Verwaltung von Dateien in der Medienübersicht: Unattach und Reattach, diese sind direkt hinter der Funktion Anschauen zu finden.

Link zur Entwicklerseite des Plugins auf Github by dev.xiligroup.

Hier eine ZIP-Datei mit der Testversion des neuen Plugins xili-re-un-attach-media

Bitte unbedingt die readme.txt Datei beachten!

xili-re-un-attach-media wird demnächst auch im WP plugin repository zu finden sein.

xili-language v 2.13: Neue Regeln, Neue Funktionen und Verbesserungen…

Folgende Neuerungen hat das Plugin  xili-language v 2.13 (und xili-dictionary)  in dieser Woche erhalten…

  • Verbesserungen im Test mit WP 3.9.1
  • 2. Reiter in den Einstellungen reorganisiert die zur Anpassung der  Webseite (front end) dient
  • Neuer 5. Reiter im Administrationsbereich des Plugins zur Anpassung der Autoreneinstellungen und einiger technischer Einstellungen, unter anderem wurden hier Optionen zur Steuerung geschaffen die Autoren unterstützen sollen und bislang nur in der Theme’s Klasse zur Verfügung standen
  • Achtung! Benutzer der child Theme Beispiele (wie twentyten to twentyfourteen-xili) müssen auf die letzte Aktualisierung in github zurückgreifen und auf die aktuellste Version aktualisieren und vorher den langs Ordner sichern um bereits getätigte Übersetzungen zu sichern!
  • Adaptierung der Widgets für die Anpassungs-Seite des Themes über Design -> Anpassen für WP 3.9+
  • Verbesserungen in der Auswahl der .mo Datei Priorität bei parent/child Themes
  • xili-language versucht die Datei local-xx_YY.mo in wp-content/languages/themes (WP_LANG_DIR) zu finden
  • Verbesserter “All content xml export” für alle Authorisierten CPTs.
  • Einige Verbesserungen aufgrund von Rückmeldungen von Nutzern, Developer und Webmaster (dieser sind weiterhin willkommen und wünschenswert)
  • Code Bereinigungen

Mehr über .mo Dateien

Das xili-language Mehrsprachigkeits-Plugin, basiert bereits seit seiner Entwicklung vor fünf Jahren auf zwei grundlegenden Pfeilern:

  1. Der eigentlichen Sprachübersetzung eines Beitrags über ‘language of post’ (inklusive der benutzerdefinierten ‘custom post’) die über die benutzerdefinierte Taxonomy für Sprache ‘language’ gesteuert wird.
  2. Sowie der ‘live’ Übersetzung von Ausdrücken die hauptsächlich auf .mo Dateien des gewählten Theme basiert (sprich den Übersetzungen in einer lokalisierten Webseite) für die derzeitige Sprache. Das Plugin wählt den Beitrag in der jeweiligen Sprache aus, die ihm zugewiesenen worden ist, der Startseite (Homepage) oder einer Liste von Beiträgen.

Im Fall eines alleinstehenden Themes (ohne parent theme)

Bei einem Theme mit einer textdomain wie twentyfourteen (ohne child theme) würde für die Französische Sprache die Datei fr_FR.mo geladen. Falls über xili-dictionary oder manuell mittels poEdit erstellt und hochgeladen zusätzlich die Datei local-fr_FR.mo.
Werden beide Dateien nicht im Theme-Unterordner für Sprachen gefunden, so wird, falls vorhanden, im Verzeichnis wp-content/languages/themes, die Datei twentyfourteen-fr_FR.mo und twentyfourteen-local-fr_FR.mo geladen.

Dabei ist folgendes zu beachten:
Falls ein Ausdruck oder ein Satz (msgid) und dessen Übersetzung (msgstr) in der fr_FR.mo und in der local-fr_FR.mo existiert, so erhält die Übersetzung in der Datei local-fr_FR.mo höhere Priorität, dies ist von Vorteil, wenn man mit der mitgelieferten Übersetzung des Themes nicht zufrieden sein sollte!
Die local-xx_YY.mo Dateien beinhalten in ihrer heutigen Form Übersetzungen von Ausdrücken und Sätzen die auf der Webseite selbst vorkommen. Zum Beispiel Titel, Datum Formate, Kategorien und so weiter.

Im Fall eines child Theme und parent Theme

Per Standard werden nur die vorhandenen .mo Dateien des child Theme geladen und erhalten höchste Priorität wie im obigen Fall. Um eine Übersetzungsstrategie und Versionierung zu unterstützen ist es nun mit dem xili-language Plugin möglich ebenfalls die .mo Dateien des parent Theme zu nutzen. Das Plugin xili-language bietet die Möglichkeit festzulegen wie die Dateien des child Theme und parent Theme verknüpft werden und welche der .mo Dateien (child oder parent) die höhere Priorität erlangen soll.

Wenn man zum Beispiel nicht die komplette mit dem Theme gelieferte Übersetzung bearbeiten möchte braucht man nur der eigenen (Teil-)Übersetzung des child Theme Priorität zu geben.

Die Verknüpfung wird unter dem 4. Reiter der Einstellungen des xili-language Plugins vorgenommen -> MO merging between parent and child.

merging .mo files option

 

Tagestipp: Übersetzer-Kommentare mit poEdit importieren

Zusammenhang

Per Standard Einstellung in poEdit (hier in der Version 1.6.4 für Mac OS X 1O.9) vernachlässigt poEdit beim Import  die Übersetzer-Kommentare wie zum Beispiel hier zu sehen:

/* translators: added in child functions by xili */
$to_post_column = sprintf (__('The content in %1$s below must be translated in %2$s !', 'twentyfourteen'), $from_lang, $to_lang ) ;

in die .po Datei zu übertragen:

#. translators: added in child functions by xili
#: ../functions.php:408
#, php-format
msgid "The content in %1$s below must be translated in %2$s !"
msgstr "Le contenu %1$s ci-dessous doit être traduit en %2$s !"

Nach einiger Recherche scheint es, das lediglich der Zusatz “–add-comments=translators” für das PHP Parser Kommando eingetragen werden muss. Hierzu ist es nicht notwendig die Modifikation über Terminal an der Configdatei vorzunehmen! Einfach die Einstellungen von poEdit aufrufen, obige Zeile in den Einstellungen “Parsers” unter “Parser command” am Ende ergänzen:

poedit parsers preferences
poedit parsers preferences
poedit php parser
complete command with –add-comment=…

Und per WP codex wird ‘translators’ in Kleinbuchstaben geschrieben!

Viel Spaß!

M.

xili-language: Neuer Shortcode xili18n

Die letzte Version des xili-language Plugin bringt einen neuen Shortcode Namens: xili18n mit sich.

Dieser Shortcode kann innerhalb eines Artikels oder einer Seite verwendet werden und bietet die Möglichkeit ein Wort oder eine Zeichenkette zu übersetzen. Jede Übersetzung muss hierzu allerdings in einer .mo Datei der jeweiligen Sprache vorliegen.

Wozu das gut sein soll?

Inhalte einer Seite oder eines Artikels können umfangreich und komplex sein, zum Beispiel in Form von Tabellen oder Formularen. Die Idee ist es, ein Grundgerüst der Tabelle mit dem Shortcode xili18n in den Überschriften zu erstellen. Die Seite oder der Artikel muss dann nur noch in jede Sprache kopiert werden.

<strong>[xili18n msgid="Edit"]</strong>

Das Ergebnis in Deutsch ist Bearbeiten !

Besuche die Englische oder Französische Seite um die jeweilige Übersetzung zu sehen. 😉

Frage 1: Ist es möglich einen context zu definieren?
Ja mit dem Parameter ctxt !

Frage 2: Ist es möglich die text domain zu wählen?
Ja mit dem Parameter textdomain !

Frage 3:  Gibt es Einschränkungen bei msgid oder msgstr?
Ja nur die HTML tags wie <strong>, <em> und <br> sind möglich. Der Source-Code des xili-language Plugin zeigt nähere Informationen hierzu.