Kategorien
Projekt-Ecke Techi-Ecke

WordPress PlugIn Localization

Hier beschreibe ich kurz, wie ich für das Chidoo Quizmaster Plugin Übersetzungsdateien generiere. Wie der Prozeß allgemein funktioniert und welche Tools es dafür gibt, ist im Plugin Develper Handbook ausführlich beschrieben. Dennoch blieben auch mir während der Plugin-Entwicklung einige Trial-and-Errors nicht erspart, um den optimalen Workflow zu finden.

In Kürze zusammengefasst, das generieren der Übersetzungen geschieht in 5 Schritten:

  1. Mit wp-cli i18n make-pot die POT-Datei erstellen
  2. Im Übersetzungs-Editor poedit die bestehende PO-Datei öffnen/ neu anlegen
  3. Generierte POT-Datei einlesen
  4. Gewünschte Übersetzungen eintragen
  5. MO-Datei erstellen

Hier nun die ausführliche Beschreibung des Prozesses

POT-Datei mit Hilfe von wp-cli generieren

Das Programm wp-cli ist das WordPress Command Line Interface. Hierüber lassen sich über die Kommandozeile viele Dinge in einer WordPress-Umgebung konfigurieren. [WPCLI]

Ein Kommando des wp-cli ist i18n, und dieses stellt das Unterkommando make-pot zum Generieren der POT-Datei aus WordPress-Dateien, in diesem Fall aus den Dateien des PlugIns, zur Verfügung.

In diesem Beispiel ist my-plugin der PlugIn-Ordner mit dem Unterordner languages, standardmäßig sind die Texte im PlugIn englischer Sprache hinterlegt, es sollen deutschsprachige Übersetzungsdateien erstellt werden:

# cd my-plugin
# wp-cli.phar i18n make-pot . languages/my-plugin-de_DE.pot --skip-js

Das Programm durchsucht die PlugIn-Ordnerstruktur und extrahiert übersetzungsfähige Strings aus dem Quellcode. Hieraus entsteht zur weiteren Verarbeitung die POT-Datei my-plugin-de_DE.pot.

Ich habe im Fall des PugIns Chidoo Quizmaster dem Programm die Option –skip-js aus zwei Gründen mitgegeben: Erstens befinden sich in einem Unterordner meines PlugIns komprimierte min.js-Dateien, in denen es nichts zu übersetzen gibt. Außerdem kam meine Version des wp-cli anscheinend nicht so richtig damit klar und lief eine Ewigkeit.

Zweitens sind in dem PlugIn in keinen, also auch unkomprimierten Javascript-Dateien zu übersetzende Texte hinterlegt. Diese werden per Objekt mittels wp_localize_script an das Sktipt übergeben [LSJS]. Ab WordPress 5.0 gibt es eine weitere Möglichkeit, in Javascript-Dateien Texte zu übersetzen [IWP5]. Für das Chidoo Quizmaster Plugin ist die Verwendung von wp_localize_script hinreichend und hat den Vorteil, dass ich auf das Differenzieren zwischen min.js-Dateien und unkomprimierten JS-Dateien im Übersetzungsprozess verzichten kann.

Der Übersetzungs-Editor

Das Programm poedit ist für alle größeren Plattformen verfügbar. Hiermit lassen sich PO-Dateien und MO-Dateien generieren. Um den Workflow rund zu machen, musste ich allerdings erst einiges ausprobieren, ganz intuitiv war das nicht.

Mit der Übersetzung initial beginnen

Gibt es nämlich noch keine Übersetzungs-Datei (PO-Datei) dann muss zunächst ein neues, zunächst leeres „Projekt“ erstellt werden. Dies geschieht mit „Datei“ →“Neu“ oder „Datei“ → „Neu aus POT-/ PO-Datei“. Im zweiten Fall kann man direkt die generierten Strings aus der POT-Datei einlesen und mit dem Übersetzen beginnen.

PO-Datei speichern

Wenn alle Übersetzungen gemacht sind, lässt sich die Datei mittels „Datei“ → „Speichern“ oder „speichern unter…“ als PO-Datei speichern.

Im Anschluss kann über „Datei“ → „MO-Datei erstellen…“ die zugehörige MO-Datei exportiert werden.

Weitere Übersetzungen einpflegen

Natürlich wird jedes PlugIn weiterentwickelt und neue zu übersetzende Strings kommen hinzu.

Zunächst habe ich wieder mit wp-cli die POT-Datei mit allen Änderungen generiert. Wenn man diese in poedit öffnet, legt der Editor ein neues Projekt an und es sind dann natürlich keine Übersetzungen mehr vorhanden.

Also muss stattdessen die zuvor generierte PO-Datei geöffnet werden, hier sind alle bereits gemachten Übersetzungen drin. Bleibt die Frage, wie die neu hinzugekommenen Strings aus der POT-Datei in die PO-Datei gemerged werden können.

Dies geschieht über den Menüpunkt „Katalog“ → „Aus POT-Datei aktualisieren…“. Im nächsten Dialog die neu generierte POT-Datei auswählen und schon tauchen die neuen Strings in der Liste auf und können übersetzt werden!

MO-Datei generieren

Sind alle Übersetzungen gemacht, bleibt als vorerst letzter Schritt, die MO-Datei zu generieren. Dies geschieht über den Menüeintrag „Datei“ → „MO-Datei erstellen…“.

Diese muss im languages-Ordner des PlugIns in dem von WordPress geforderten Dateinamens-Format, zum Beispiel plugin-slug-de-DE.mo abgelegt werden. [L10N]

Weiterführende Links

[WPCLI] Download und Installation von WP-CLI: https://make.wordpress.org/cli/handbook/guides/installing/

[LSJS] Using wp_localize_script for creating JS objects with translated strings.

[IWP5] https://pascalbirchler.com/internationalization-in-wordpress-5-0/

[L10N] https://developer.wordpress.org/plugins/internationalization/localization/

Kategorien
Mucke-Ecke Techi-Ecke

Chidoo Quizmaster Update 0.0.3

Mit der neuen Release von WordPress 5.7, die für den 09. März 2021 terminiert ist, wurde auch das Chidoo Quizmaster Plugin auf die Version 0.0.3 gehoben. Neben kleinen Bugfixes ist die im PlugIn enthaltene Memory-App jetzt in deutscher Sprache verfügbar.

Über Chidoo Quizmaster

Das Chidoo Quizmaster PlugIn bietet die Möglichkeit, verschiedene edukative Lern-Apps zu implememtieren. Derzeit wird das PlugIn mit der ChiQm Memory App ausgeliefert.

ChiQm Memory

ChiQm Memory ist ein Memory-Spiel zum Lernen von Musiknoten und Notennamen in unterschiedlichen Oktavlagen. Ein besonderes Feature der App ist der optionale Energie-Modus, der als zusätzliche Herausforderung zum Lösen des Memorys die Anzahl von Versuchen, Paare zu finden, in Anhängigkeit der Anzahl vorhandener Paare auf einen Maximalwert begrenzt. Durch Auswahl von unterschiedlichen Karten-Sets und Anzahl Paaren pro Spielrunde sind verschiedene Schwierigkeitsstufen möglich.

Offizielles PlugIn im WordPress Repository

Chidoo Quizmaster ist über das offizielle PlugIn-Repository von WordPress kostenlos erhältlich. Das Update ist ab sofort über den normalen PlugIn-Updater von WordPress verfügbar.

Weiterführende Links

Kategorien
Mucke-Ecke Techi-Ecke

Playing with …NextCloud!

Der erste Lockdown im Frühjahr 2020 kam, wenn nicht überraschend, doch zumindest so spontan, dass für den Geigenunterricht, den ich über GeigeKoeln anbiete, einiges improvisiert werden musste. Glücklicherweise ist Improvisation wesentlicher Bestandteil des Musikerdaseins, und so war das Thema Online-Unterricht mehr eine motivierende Herausforderung als ein notwendiges Übel.

Kategorien
Mucke-Ecke

Covering Cash

Am 20.09.2020 gab es für uns die Gelegenheit, in der Klosterkapelle Zündorf das c-bedingt schon lang überfällige Debut zur Konzertreihe Covering Cash, initiiert von Hildegard Meier, zu geben. Vielen Dank an alle, die vor Ort waren und die Veranstalter, die selbstverständlich unter Einhaltung aller Auflagen uns und dem Publikum diesen schönen Abend ermöglicht haben. Den Konzertmitschnitt könnt ihr hier sehen.

Kategorien
Mucke-Ecke Phillo-Ecke Tägliches Training

Tägliches Training, Teil 2: Fingerfertigkeit

Im zweiten Teil der Reihe „Tägliches Training“ widme ich mich dem Thema Fingerfertigkeit. Grundlage für das Training sollen hier die Etüden Nr. 3, 4, 5 und 17 aus der Schule der Geläufigkeit und Fingerfertigkeit Op. 135, Heft 1 von Hans Sitt (Friedrich Hofmeister Verlag) sein, aus denen ich vereinzelt zitiere.

Kategorien
Phillo-Ecke

Notes on Frameworks?

It came that I’ve recently been asked, which frameworks I’ve already worked with. That simple question made me kind of stuck in answering and I was going like „Uhh… aah, well… lots of…“. Later, resuming this conversation part, I came to the conclusion this happened, because I actually have been working with lots of frameworks. In fact, there were so many in so different constellations, that it failed me to give single and simple answer. Oops! I thought.

Well, programming libraries provide frameworks, frameworks provide APIs to work with. When for instance talking about web-based PHP applications, it’s about well-known PHP-frameworks, or maybe JavaScript frameworks and such. Implementing server-side backend applications for processing special sort of data structures may require other libraries/ frameworks.

There are so many different cases where various frameworks are in use. Obviously, I lacked to quick-sort that huge collection for an appropriate answer. Well, things happen, that’s okay. But I decided for myself that I’m going to pre-sort a bit for the next time.

Pre-sorting turned out to be a challenge. There had to be some sort criteria. Sorting by what? By programming language? By topic? By popularity? If I took one criterion, I felt the importance of another was missing. The more I was trying to sort I felt like creating chaos in my head. I decided to go for a little walk.

Airing on the riverside, I was asking myself how to answer a question more accurate, when the ostensible answer could only be „Well, any…“. Thinking futher about this, I guess it’s kind of a tricky question. Not on purpose by the questioner, but because of the question itself. Why? Because the question is generic.

But what is the interesting point about a generic question? Sure, there is no wrong question in this world. It’s often just hard to find an appropriate answer.

Imagine you’re some kind of social worker and you’ll be asked the following: „What methods did you work with?“. Well, accordig to what? Participation? (Child) care? Conflict management? There could be many more counter questions, I guess.

The tricky thing about a generic question is its missing context. In order to create an adequate answer, which surely is the desired intention of the questioner to hear, must exist some kind of context.

But, what to do, if the question does not present you any context because it’s generic? You can either go like me stummering around, which clearly seems not satisfying to both, the questioner and the answerer. Instead, try to create your own context! In the end, it’s pretty easy. First, think of projects you’ve worked on. Then, tell the questioner shortly about it. Now you have context where you can explain which kind of methods/ frameworks, or whatever has been asked for, you utilized. With that, you even create yourself the opportunity to give reasons why you preferred to chose one method/ API/ lib/ framework instead of another.

So, the thing I’m learning from this is: There is no need to pre-sort anything for any eventualities. Better tell your story wherein you embed one of those things you’ve been asked for and others in the next chapter.

The more generic the question is, the more freedom you have to create your own context to integrate your answer into. As freedom always coheres with responsibility, you should make use of the ability to put your answer into appropriate shape whenever possible. Easy said, but might be practiced!

However, I’m always thankful for learning from conversations!

Kategorien
Mucke-Ecke Tägliches Training

Tägliches Training, Teil 1: Bogenübungen

Wie im Sport ist Konditionstraining beim Geigenspiel eine sinnvolle Sache. Ohne langwierig Argumente für oder wider die Frage, welche Übungen sinnvoll oder zweckmäßig sind, zu diskutieren, möchte ich hier zeigen, mit welchem Programm ich mich (mehr oder weniger) täglich auf der Geige fit halte.

Kategorien
Techi-Ecke

Etherpad

Heute möchte ich das Group-Collaboration-Tool Etherpad vorstellen.

Screenshot: etherpad.org

Etherpad ist freie Software und unter der Creative Commons Lizenz CC BY-SA 3.0 verfügbar. Auf der Etherpad Homapage kann die Software heruntergeladen werden, und dort ist auch eine Installationsanleitung zu finden.

Kategorien
Projekt-Ecke

Conference by Chidoo

Another long-term „Project“ I’ve successfully been running together with my colleague Thorsten Schiller is the chidoo company. Since 2012, we are managing various web services including hosting, consultancy and web conferencing systems. The latter became even more important since Covid-19 was an issue in 2020.

Our mission is to provide open-source based software for both, national and international companies with respect to GDPR compliance.

Screenshot: Conference by Chidoo
Screenshot: Conference by Chidoo
Auszug: Conference by Chidoo

Kategorien
Projekt-Ecke

Musik Individuell

Derzeit arbeite ich an einem virtuellen Musikladen. Die hier angebotenen Formate sind ausgesuchte MP3s, Noten interessanter zeitgenössischer Kompositionen, Solo-Transskiptionen, Video-Tutorials und Mastertracks. Der Laden heißt Musik Individuell und ist unter https://musik-individuell.de zu finden.

Musik Individuell
Screenshot der Eingangsseite musik-individuell.de

Die Regale im Laden füllen sich langsam. Viele Schätze stehen bereit, benötigen aber noch den letzten Schliff. Ihr dürft gespannt sein!

Tragt euch ein in den Newsletter, damit ihr erfahrt, wann die offizielle Eröffnung ist.