SchlagwortWord

SDL WorldServer: XML-Transformation über XSLT

WorldServer hat bereits eine automatische Aktion “Apply XSLT”. Diese sollte – wie ihr Name es verspricht – eine XSLT-Transformation an den Quelldateien durchführen. Leider klappt es aber nicht auf Anhieb, denn der Schritt ist nur als ‚Sample‘ konzipiert, das je nach Bedürfnis angepasst werden muss; in der Regel möchte SDL solche Anpassungen über den Professional Service anbieten.

Es geht aber trotzdem. Das Hauptproblem liegt darin, dass Ausgangsordner für sowohl Input- wie auch Output in der Action “Apply XSLT” nicht identisch sein dürfen. Deshalb muss zunächst die unkonvertierte Datei in den Zielordner kopiert werden und dann aus dem Zielordner in den Ausgangsordner mit XSLT zu transformieren. Das scheitert aber daran, dass es im Code der Automatic Action “Apply XSLT” eine Klausel gibt, die das Auslesen aus dem Zielordner und das Schreiben in den Ausgangsordner verhindert. Hier der entsprechende Code:

/*
* Sanity check the params: don’t let the user read from target
* and write to source.
*/
if (readFrom.equals(TARGET_VALUE) && writeTo.equals(SOURCE_VALUE)) {
return new WSActionResult(WSActionResult.ERROR,
„Invalid configuration: action can’t read from target “ +
„and write to source.“);
}

Die Entwicklung von SDL hat mir (Danke für den super Service!)  die Automatic Action “Apply XSLT” für die SDL WorldServer Version 10.4.4.139  so angepasst, dass das Auslesen aus dem Zielordner und das Schreiben in den Ausgangsordner erlaubt ist. Laut Aussage vom Support soll dies in zukünftigen Versionen von WorldServer dann bereits so “gefixt” sein. Für die aktuelle Installation habe ich dafür vom Support eine neue Automatic Action “Apply XSLT” bekommen (hier).

Die Lösung besteht nun darin vor der XSLT-Transformation zunächst die Ausgangsdatei aus dem Ausgangsordner mithilfe der Automatic Action “Copy source asset to target” zu kopieren.

08-03-_2016_12-59-23

 

Und anschliessend mit “Apply XSLT“ mit den Werten ‚Load XML from‘=Target und ‚Save result to‘=Source zu konvertieren.

Wie man die XSLT erstellen, erläutete ich hier nicht. Interessant ist aber zu wissen, welche Xalan-Version WorldServer https://xml.apache.org/xalan-j/ dafür verwendet und dies zumindest bei Version 11 auch noch so bleiben wird.

08-03-_2016_10-22-17

 

Als der Workflow soweit funktionierte, wollte ich auch noch die Validität der XML-Datei überprüfen, da diese “manuell” aus einer Textdatei zusammengebaut wird.

Um dies zu Prüfen wurde die Automatic Action “Validate XML” in den Workflow eingefügt und eine entsprechende DTD programmiert.

08-03-_2016_10-21-42

Leider reicht der Verweis zur DTD in der Action nicht aus, sondern es muss auch noch die DTD im XML eingefügt werden (leider). In unserem Fall sieht die XML-Datei wie folgt aus:

<?xml version=“1.0″ encoding=“UTF-8″?>
<!DOCTYPE mxml [
<!ELEMENT mxml (#PCDATA)>
]>
<mxml>

INHALT…

</mxml>

 

Resultat:

Ein Workflow, welche die Daten vom Quellverzeichnis in das Zielverzeichnis kopiert, die Gültigkeit der XML-Datei(en) überprüft und danach eine XSLT-Transformation durchführt. Nach der Übersetzung werden die Dateien auch nochmal durch eine XSLT-Transformation gelassen, mit dem Ergebniss, dass der Auftraggeber eine Textdatei zurückbekommt.

Hintergrund:

Dieser Aufwand wird betrieben, da wir in XML-Dateien mit dem Attribut maxlength=”xx” die maximale Länge des Strings im Übersetzungsprozess einfordern können. Dies ist hilfreich bei Software-Strings. In einer Textdatei (wie wir diese aus einem alten Entwicklugnstool bekommen)  kann diese Information aber nicht hinterlegt werden. Deshalb muss aus der Datei zuerst mit dem Einfügen eines XML-Headers und –Footers eine pseudo XML-Datei erzeugt werden, damit diese dann über eine XSLT-Transformation in die passende XML-Datei umgewandelt werden kann.

Wieso ein 2012er MacBook Pro mein idealer Laptop ist

Der Beitrag wurde inspiriert durch den Beitrag auf cultofmac.com „Why is Apple’s ancient 2012 MacBook Pro still so popular?“.

Nun ist es so, dass ich seit beinahe 6 Jahren das mittlerweile „veraltete“ 13-Zoll non-Retina MacBook Pro (MBP) verwende. Erst im Dezember 2015 habe ich nochmals ein neues Gerät der gleichen Bauart gekauft, das von Apple selbst als „Mitte 2012er-Modell“ bezeichnet wird.

Jetzt kann man sich fragen, wieso ich einen Laptop, der schon über 3 Jahre alt ist, überhaupt noch kaufe und dafür den Originalpreis bezahle, respektive wieso Apple so altes Zeugs überhaupt noch verkauft. Bin ich nun zum verblödeten Apple-Fanboy geworden, der für alles was einen angefressenen Apfel drauf hat, überteuerte Preise bezahlt?

 

Wieso Apple den 13-Zoll non-Retina MacBook Pro noch im Sortiment hat und wieso dieser immer noch massenhaft verkauft wird, ist ganz einfach: Das Gerät hat als letztes MacBook Pro noch ein integriertes DVD-Laufwerk und lässt sich einfach erweitern. Die Argumentation zu diesen Punkten findet man im Beitrag von cultofmac. Der schlechte Bildschirm kümmert in der 13-Zoll-Grösse (Kleine) die wenigsten Benutzer und deshalb sind die Kunden auch bereit 200 Franken/Euro mehr dafür als für das billigste MacBook Air zu bezahlen.

 

Wieso ich weiterhin dieses Gerät verwende? Nun zuerst muss ich sagen, dass ich den Vorgänger mit einem Core 2 Duo-Prozessor seit 2010 im Einsatz hatte. 6 Jahre lang ist der Laptop täglich mehrere Stunden im Einsatz gewesen und hat mich nie im Stich gelassen. Viele Leute kennen diesen Laptop von Präsentationen mit „Scrat“ (das Rattenhörnchen aus Ice Age) auf dem Deckel. Ich habe jetzt ein Update gemacht, da ich nochmals das letzte Modell dieses MacBook Pro haben wollte, bevor es definitiv und ohne Voranmeldung von Apple aus dem Sortiment geworfen wird. Sonst würde ich nach wie vor mit dem 6-Jährigen Gerät arbeiten und den Rechner erst ersetzen, wenn dieser nicht mehr funktioniert. Natürlich ist der MBP viel schwerer als alle seiner abgespeckten 13-Zoll-Nachfolger. Aber das ist für mich sekundär. Das wichtigste ist für mich weiterhin die Erweiterbarkeit und Anpassung an meine Bedürfnisse. So habe ich den Arbeitsspeicher auf 16GB erweitert, obwohl Apple max. 8GB angibt.

2016-01-07_21-20-17

 

Zudem habe ich mit einen SATA3-Adapter von hardwrk das DVD-Laufwerk ersetzt und mit einer 1TB SSD ergänzt. Das Ganze (die Original 1TB HDD und die 1TB SSD) habe ich zu einem 2TB Fusion Drive zusammengefügt. Fusion Drive ist eine von Apple entwickelte Technik, mit der eine SSD und eine mechanische Festplatte (HDD) zu einem logischen Laufwerk verbunden werden. Es handelt sich dabei um eine Weiterentwicklung von Hybridlaufwerken, doch im Unterschied zu diesen handelt es sich bei Fusion Drive um eine reine Softwarelösung. Damit bekommt man die Geschwindigkeit einer SSD mit dem billigen Speicher einer HDD. Das bedeutet für mich genug Speicher, um meine virtuellen Maschinen auf meinem MacBook Pro zu verwalten.

SSD und hardwrk-Adapter anstatt DVD-Aufwerk

SSD und hardwrk-Adapter anstatt DVD-Aufwerk

Den neuen MBP habe ich mit dem schnellsten verfügbaren Prozessor gekauft (2.9GHz Intel Core i7), der aber so leider nicht im lokalen Apple Store zu bekommen ist, sondern erst nach meiner Bestellung in China zusammengebaut und dann mir nach Hause gesendet wurde. Laut Performancetests soll der Prozessor meines „neuen“ 2012er MacBook Pro lediglich um 10% langsamer sein, als die aktuellen 2015er MacBooks mit den schnellsten Prozessoren. Damit kann ich sehr gut leben.

Nur, dass man mich nicht falsch versteht. Würde es diesen MacBook Pro in der „offenen“ Bauweise in einer Retina-Ausführung geben, dann hätte ich diesen gekauft. Nicht, weil ich diese Auflösung auf dem Laptop je gebraucht hätte, sondern um damit einen externen 4K-Bildschirm zu betreiben zu können. Aber „offen“ und erweiterbar/reparierbar ist für mich wichtiger als 4K, das ich vielleicht einmal brauchen könnte.

Und zum Schluss noch über das Argument, dass der 13-Zoll-Bildschirm für ein professionelles Arbeiten zu klein ist: Bei einem Windows-Laptop gebe ich recht. Das Umschalten/Ausblenden der Anwendungen benötigt immer eine „umständliche“ Bewegung des Zeigers und ein Klicken oder das Verwenden eines Kurzbefehls auf der Tastatur. Beim OS X platziere ich die Anwendungen auf mehreren Desktops und schalte mit einer Wischbewegung zischen den Desktops, resp. Anwendungen hin und her. Daraus resultiert ein unterbrechungsfreier Workflow, der mich mit einem MacBook Pro viel produktiver arbeiten lässt. Dies, die langlebige Hardware, die kostenlose Standard-Software und kostenlosen Betriebssystem-Updates lassen die höheren Beschaffungskosten für einen MacBook Pro mehr als rechtfertigen. Aber am Schluss ist dies meine subjektive Meinung.

 

.over-and-out

Atlassian Confluence auf einem Synology NAS installieren

UPDATE: Die Installation von Confluence ging zwar ohne Probleme, jedoch ist bei jedem Neustart des Servers auch die komplette Installation wieder zurückgesetzt worden. Abhilfe gab es erst durch ein anderes Docker-Paket. Die Anleitung wurde entsprechend aktualisiert.

Es gibt zwei Möglichkeiten Confluence auf ein Synology NAS zu bringen: Eine konventionelle Installation mit vielen Herausforderungen oder einfach als Docker-Paket herunterzuladen.

Natürlich habe ich mich für die einfache Variante entschieden. Hier ist das Vorgehen:

  1. Docker-App installieren. (falls noch nicht installiert)
  2. Docker-Paket herunterladen. Hier MUSS das Paket «derjudge/confluence» gewählt werden. Nachtrag: Ich habe einige Wochen mit den anderen Paketen verloren!
    2015-11-14_00-03-27
  3. Container erstellen. Name vergeben und «Ports automatisch zuordnen» NICHT auswählen. Ports manuell zuweisen. Ich habe als lokalen Port den 32768 und als Container-Port den 8090 gewählt.
    2015-11-14_00-05-29
  4. Confluence starten.
    2015-11-14_00-08-02
  5. Confluence über die öffentliche URL des NAS mit dem «lokalen» Port öffnen. Also http://xxxxxx.xx:32768 aufrufen und fertig installieren. Eventuell eigene Firewall noch bei diesem Port öffnen/auf den Server weiterleiten.
    2015-11-13_23-57-262015-11-13_23-57-26
  6. Das Interessante an dem Docker von «derjudge/confluence» ist, dass auch ein PostgreSQL dabei ist. Somit muss nicht auf die interne Datenbank von Confluence zugegriffen werden. Ist zwar entgegen der Idee der Docker-Container. Vereinfacht die Installation aber ungemein. Einfach bei der Anleitung unter https://hub.docker.com/r/derjudge/confluence/ folgen, dann kommt alles gut!
    2015-12-06_10-35-18
  7. Confluence kann nun betrieben werden.
    2015-11-13_23-58-24

Und jetzt habe ich meine Teststellung, um die Scroll-Erweiterungen von k15t zu testen. Dazu aber später mehr.

.over-and-out

SDL: XML-Filter anlegen

Lange hat die Verwendung eines wirklichen XML-Filters wenig Sinn gemacht. Zu aufwändig war es und das gleiche Resultat hat man mit einem einfachen Textfilter auch hinbekommen.

Jetzt hat sich das Ganze aber geändert. Neu kann Studio auch die maximale Länge eines Strings überwachen. Das bedeutet, dass der Softwareentwickler in seiner Umgebung eingeben kann, wieviel Platz es im Dialog hat und diese Information dem XML mitgeben. Und diese Information wird in Studio nun ausgewertet und überwacht. Deshalb sind die Zeiten vorbei, wo die Erstübersetzung nochmals an den Übersetzer musste, weil diese unmöglich im Dialog oder Menüfenster Platz hatte.

Da ich die Erfahrung gemacht habe, dass SDL keinen Filter von grundauf kostenlos erstellt, sondern dies nur über den überteuerten Professional Service anbietet, biete ich hier die kostenlose Anleitung, wie vorzugehen ist.

Ich zeige die Einstellungen in SDL WorldServer. In SDL Studio ist dies gleich, teilweise sehen die Fenster einfach unterschiedlich aus. Ich habe es nur soweit dokumentiert, wie ich es selbst benötige, um einen weiteren Filter konfigurieren zu können.

Der Aufbau der XML-Datei

worddav8f6e66f8846cc58db3c49d6dae09becf(1) Der obligate Header
(2) Das Rootelement, das der Erkennung der XML-Datei dient und auch gleich den Sprachschlüssel der Quelldatei beinhaltet. Dieser Sprachschlüssel wird von Studio dann in die Zielsprache geändert.
(3) Medaten wie Ident=“ “ oder ContextHint=“ „, welche ausgeblendet werden
(4) maxlength limitiert die Zeichenzahl im Zieltextsegment
(5) Der eigentlich zu übersetzende Text

Filter in WorldServer

Der neue Filter ist vom Typ: Custom XML Studio File Type

worddav09672b060c3d782a3409d47f695969f3

Das Basiselement ist das Element, mit dem ein Parser das XML identifizieren kann. Leider ist diese Funktion bei WorldServer 10.4.2 noch nicht implementiert. In Studio funktioniert es und man kann mehrere MIME-Typen mit *.xml angelegen. Bei WorldServer geht dies nicht und bedeutet, dass pro XML-Typ ein anderes Dateiformat gewählt werden muss.

worddave2bd2b61f789c0e4a26fa5b4b3eb1906

Im Reiter «Parser» stehen alle Regeln, nach denen der zu übersetzende Text und Metadaten gefiltert werden.

worddav02ab8fe9375cae9431052e066c6e7bbf

Die ersten drei geben die Struktur an und die letzten vier Element die Metadaten

worddav7001fe912a2928ad4c8c3384ba1da523worddavfb6751476659f19a78ffd69c944fd30bworddav275b7a70115ebfd6af841290dcbec837

Im Element «Item» ist das Hauptelement mit den Inhalten drin.

worddav2e1c9d2e6f579767ad25d19c08fd987f

(1) Beim Anklicken von [Bearbeiten…] bei Struktur-Info wird der Dialog für die «Eigenschaften der Strukturinformation» angezeigt.

worddav45779a352226896b32534b27163d1330

Diese muss wie folgt angelegt werden.

worddav6e59888a09ed289c7d30e520893698a7

(2) Unter «Regel bearbeiten» [Erweitert…] anklicken. Dort muss noch das Element für die maximale Länge definiert werden. In diesem Fall ist es @maxlength.
Zusatzinfo: «maxlenght=“0″» läuft ohne Fehlermeldung durch den Parser, aber in Studio wird dann eine Längenbeschränkung von 0 angezeigt. Deshalb sollte in diesem Fall «maxlength» gar nicht angegeben werden.

worddavc0e45f45f378ab5453910d3c93fac1b3

Als letztes sind noch die Attribute zu kennzeichnen, welche nicht übersetzt werden. Leider können diese nicht als Attribut und „Nicht zu übersetzen“ angelegt werden. Es muss ein Umweg über die Erfassung als XPath erfolgen. Ich nehme an, dass dies ein Bug von SDL WorldServer ist, sonst kann ich mir einen solchen Blödsinn nicht erklären.

worddav3e835db6a92d3f0a1561705f0fda271eworddav34cbdf89efec39128c57c0f547cf7a2dworddav09cb946fd0ad884897144982ac1005e2worddav71d17cec155b022b6e2cb4fbe34f759a

Hier die Entitys, welche umgewandelt werden sollen. Dies betrifft aber nur den zu übersetzenden Text.

worddav9a9f9f6c82f5c6a256e2e38938c0d659

Beliebigen Präfix wählen und die URL von w3 eingeben.

worddav9f3dc4575087755828394bd42e116ee7worddavb4b2f4aa78f1559a0723c310d0fdf3d1worddav9df4e20d828e0d9268bd1edb4a01c5c1

Im «Embedded Content» können RegEx-Filter konfiguriert werden, um Platzhalter und sonstige Ausdrücke zu sperren.

worddavd3defc1bdc16eb17270066d47c8984fe

Man unterscheidet zwischen Tag-Paaren. Also alles was zwischen diesen Tag liegt, wird für die Übersetzung gesperrt.

worddav2bd90c1d6b9165a78ab7f2ba945dfb51

Und Platzhaltern, welche einen Teil/eine Stelle im Text definieren. In der Regel sind dies Variablen.

 

Zum Schluss noch etwas…

Auf ein weiteres Problem muss man auch noch achten. Es geht um die Verarbeitung mehrerer XML-Filter. SDL Studio kann anhand des Rootelementes selbst entscheiden, zu welchem Filter eine XML-Datei passt. SDL WorldServer kann dies nicht, obwohl diese Information im Filter definiert werden muss. Nun, wenn diese Information nicht ausgewertet wird, wieso muss man diese dann erfassen?

Das Resultat ist aber, dass SDL WorldServer in der aktuellen Version 10.4.4 nur eine einzige XML-Datei mit der Dateierweiterung .xml verarbeiten kann. Eine weitere XML-Datei muss eine andere Dateierweiterung haben oder zu einer anderen Filtergruppe gehören, mit dem Resultat, das der Benutzer dann den richtigen Filter auswählen müsste… Was mich verärgert, ist der Fakt, dass Studio das Problem nicht hat und mehrere XML-Dateien anhand des Rootelementes unterscheiden kann. Man beachte auch, dass ich Studio ab 99€ bekomme und WorldServer etwa das tausendfache kostet. Ein Lösung für WorldServer 11.0 wurde mir auch nicht zugesichert.

 

.over-and-out

 

 

 

 

 

Das beste OS X Tool

Da ich seit Jahren an der Arbeit Windows und privat OS X verwende, kenne ich beide Betriebssysteme mit deren Vor- und Nachteilen.
OS X ist für mich natürlich das Betriebssystem der Wahl, aber eine Sache hat mich bis heute total genervt: Das Ausrichten/Positionieren der Fenster. Bei Windows 7 geht das ja so einfach. Nur das Fenster oben «packen» und auf die gewünschte Kante ziehen und loslassen. Schon wird das Fenster entsprechend skaliert and positioniert.
Bei OS X ist dies nicht möglich und ein Fenster in der maximalen Grösse anzuzeigen ohne in den Vollbildmodus zu gehen, bedeutet jedesmal manuelle Friemelei. Und das nervt massiv; bis heute hat Apple es nicht geschafft eine gescheite Lösung zu finden.

Jetzt habe ich ein kostenloses Tool gefunden, das genau dieses macht und sogar noch besser. Es heisst Spectacle und ist unter der eigenen Webseite (Installer) oder Github  (zum Selberbacken) herunterzuladen.

Nach der Installation kann man das aktive Fenster einfach durch Tastenkombination auf Vollgrösse bringen oder in eine Hälfte des Bildschirmes skalieren und positionieren. So gut und einfach, dass ich für dieses Tool sogar bezahlen würde. Und mit der Möglichkeit auf mehreren Schreibtischen arbeiten zu können, ist OS X in dieser Hinsicht beim Arbeitsworkflow nun perfektioniert worden. Und jetzt vermisse ich diese Funktion bei meiner täglichen Arbeit auf der Dose.
Dieses Tool ist ein absolutes Muss!

.over-ende-und-out

Verdrehte Doppelseiten

Wenn man ein Buch oder ein Dokument erstellt, welches dann auch doppelseitig gedruckt wird, dann möchte ich diese Ansicht auch so in meinen Editor haben. Was InDesign kann, funktioniert bei Acrobat und Word aber leider seit Jahrzehnten nicht.
Es kann ja nicht so schwer sein… Aber es zeigt mir halt wieder einmal, dass die Leute, welche die Produkte entwickeln, sich nicht mit den täglichen Bedürfnissen der Benutzer auskennen. Natürlich gibt es immer wieder neue sexy Features, nach denen irgendwelche Experten schreien. Mit einer korrekten, nennen wir es mal „natürlichen“ Darstellung von Doppelseiten, lässt sich leider kein Innovationspreis gewinnen und es funktioniert doch auch ohne. Aber genau solche Funktionen sind für die Vielnutzer ein Grund um zum Beispiel auf die neuste Version umzusteigen, wobei ich sagen muss, dass die natürliche Doppelseitenanzeige bei jeder noch supporteten Version von Word und Acrobat kostenlos nachgerüstet werden sollte. Es ist eine Funktion, welche schlichtweg fehlt.

.over-ende-und-out

© 2017 hacker.li

Theme von Anders Norén↑ ↑