Im Zuge des Redesigns von perun.net, welches wir neulich vollzogen haben, habe ich basierend auf dem POT-Katalog auch die deutsche Sprachdatei für das Theme erstellt.
An sich habe ich das schon mehrfach gemacht und obwohl ich das Handling mit den Sprachdateien alles andere als komfortabel und zeitgemäß empfinde, hat es bis jetzt recht reibungslos geklappt.
Aber bei der jetzigen Sprachdatei gab es ein Problem welches in Fehlermeldungen und einer kaputten Sprachdatei resultierte.
In der oberen Abbildung sieht man die Übersetzung des Singulars und im verdeckten Tab ist die Übersetzung für das Plural vorhanden. So weit so gut. Aber genau dies resultierte in Fehlermeldungen – fehlende msgstr – und einer kaputten bzw. nicht mehr bearbeitbaren .po-Sprachdatei.
Die einzige Möglichkeit um weiter an der Sprachdatei arbeiten zu können ohne wieder ganz von vorne anzufangen bestand darin, die selbige mit Hilfe von einem Texteditor zu reparieren.
Dafür habe ich einfach den originalen POT-Katlog geöffnet, die Stelle mit dem Plural gesucht, sie kopiert und die beschädigte Stelle in der deutschsprachigen .po-Datei damit ersetzt.
Doch das war nicht alles. Anschließend musste ich den Kopfbereich der .po-Datei ergänzen. Vorher stand dort folgendes:
# This file is distributed under the GNU General Public License v2 or later.
msgid ""
msgstr ""
"Project-Id-Version: Meteor 1.0\n"
"Report-Msgid-Bugs-To: http://wordpress.org/support/theme/style\n"
"POT-Creation-Date: 2017-06-05 14:21:05+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2018-08-14 20:09+0100\n"
"Last-Translator: Vlad\n"
"Language-Team: \n"
"X-Generator: Poedit 1.5.7\n"
Diesen Abschnitt habe ich dann um folgende Zeile ergänzt, welche ich hier gefunden habe:
"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
Somit schaut der vollständige Kopfbereich folgendermaßen aus:
# This file is distributed under the GNU General Public License v2 or later.
msgid ""
msgstr ""
"Project-Id-Version: Meteor 1.0\n"
"Report-Msgid-Bugs-To: http://wordpress.org/support/theme/style\n"
"POT-Creation-Date: 2017-06-05 14:21:05+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2018-08-14 20:09+0100\n"
"Last-Translator: Vlad\n"
"Language-Team: \n"
"X-Generator: Poedit 1.5.7\n"
"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
Nach dem Abspeichern konnte ich nicht nur die Datei weiter bearbeiten es wurden auch die Übersetzungen für Singular und Plural korrekt übernommen und angezeigt.
Obwohl ich das Problem erfolgreich lösen könnte, so habe ich das ganze System und auch den Code-Schnipsel nicht 100%ig verstanden. Das ganze wirkt momentan auf mich immer noch ein bisschen wie Alchemie… man macht irgendetwas, es kommen auch die gewünschten Ergebnisse heraus, aber die ganze Wirkungsweise hat man noch nicht ganz verstanden. ?
Ich hoffe, dass ich damit dem einem oder anderen Nutzer bei der Lösung des Problems helfen konnte.
Bildnachweis: Symbolbild, CC0, Pixabay
Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienstleistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.
Etwas einfacher zu verstehen ist die Form
nplurals=2; plural=(n != 1);
Der Ausdruck sagt im Wesentlichen: es gibt zwei Pluralformen (eben Singular und Plural), die zweite (mit der Nummer 1) ist immer dann zu verwenden, wenn es um mehr als ein Objekt (n) geht.
Ist nicht gleich 1, wird der Ausdruck in der Klammer 0, also die “erste Pluralform” (Singular).
Das Ganze ist keine Alchemie, sondern C-Syntax.
Klarer wird es vielleicht, wenn man sich die Definition für Tschechisch anguckt:
nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;
Es gibt den Singular und _zwei_ Pluralformen (je eine für zwei bis vier und eine für fünf und mehr Objekte).
Arabisch ist etwas komplizierter 😉
Hallo Vladimir, der Grund für diese Zeile ist ein einfacher: Plurale werden in verschiedenen Sprachen unterschiedlich gebildet.
Mit der Plural-Forms-Zeile weiss der Po-Editor, wie er in dieser Sprachdatei mit Pluralen umgehen soll. Für andere Sprachen gibt es andere Pluralregeln. Ohne diese Zeile kommt der Editor nicht darauf, welche Pluralregel gilt.
Siehe mehr z.B. hier: https://wordpress.stackexchange.com/questions/33312/how-to-translate-plural-forms-for-themes-plugins-with-poedit
Danke dir Martin.