Hi Andre, *, 2009/9/12 André Schnabel <andre.schna...@gmx.net>: > Thomas Hackert schrieb: > >> Also es geht um Folgendes: >> In der Datei xliff_help-de/shared/00.xlf befinden sich etliche >> Segmente, wo im Original >> <quote> >> (ENTER ALTERNATE DESCRIPTION HERE) >> </quote>
Zitate einer xml-Datei mit xml-tags zu kennzeichnen finde ich etwas verwirrend :-) >> steht, die einfach nur mit "Symbol" im tag (wo ich auch sowas >> irgendwie in Erinnerung hatte, dass wir den Text nicht übersetzen >> sollten. Oder lieg' ich da falsch?). Nur: Im Original hat sich dann >> noch die Größenangabe minimal geändert wie z.B. im Segment 1249, wo > [...] > Diese Fehlerart lässt sich aber besser per Script korrigieren. Alle diese > Segmente können automatisch übersetzt werden. hier mal ein xslt daß die image-tags 1:1 vom source übernimmt . Bin mir nicht ganz sicher, ob es doch mal Fälle gibt, in denen die Übersetzung eine andere Grafik oder andere Größe verwerndet. Falls das vorkommen soll/darf, dann muß das Skript angepaßt werden. Außerdem wird die Reihenfolge von source und target im alt-trans Element korrigiert. In der angesprochenen shared/00.xlf gibt es jedenfalls neben der Abweichung bei der Größe auch abweichungen bei den Dateinamen Bsp: refpin1.png und refpin2.png im Source ist was anderes, allerdings ist da auch die id eine andere... Naja, egal, hier das Stylesheet (zum Vergleich original und umgewandelt am besten tidy oder xmllint über beide Dateien laufen lassen um die Einrückung und Zeilenumbrüche anzupassen). <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xpath-default-namespace="urn:oasis:names:tc:xliff:document:1.1"> <xsl:output method="xml" indent="yes" omit-xml-declaration="no" /> <!-- just copy everything as-is unless otherwise specified --> <xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="alt-trans" mode="#default"> <!-- no need to modify, just correct the order of elements --> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:sequence select="source,target"/> <xsl:sequence select="* except (source|target)"/> </xsl:copy> </xsl:template> <xsl:template match="source|target" mode="align"> <!-- adapt rule, align the image tags to those of the trans-unit's source --> <xsl:param name="imagetag"/> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:value-of select="replace(.,'<image[^>]*>',$imagetag)"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="alt-trans" mode="align"> <!-- adapt rule, align the image tags to those of the trans-unit's source --> <xsl:param name="imagetag"/> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates select="source,target" mode="align"> <xsl:with-param name="imagetag" select="$imagetag"/> </xsl:apply-templates> <xsl:sequence select="* except (source|target)"/> </xsl:copy> </xsl:template> <xsl:template match="trans-unit"> <xsl:copy> <xsl:copy-of select="@*"/> <!-- source can always be copied as-is --> <xsl:sequence select="source"/> <!-- image tag present? --> <xsl:choose> <xsl:when test="matches(source,'<image[^>]*(width|height)=')"> <!-- assumption is that the image tag is not to be touched by translators at all, if translators need to modify filenames, other stuff contained in the tag, then one needs to extract the width/height/other parts seperately like this: <xsl:variable name="img_width" select="replace(./source,'^.*<image[^>]*width="([^"]*)".*','$1')"/> <xsl:variable name="img_height" select="replace(./source,'^.*<image[^>]*height="([^"]*)".*','$1')"/> --> <xsl:variable name="imagetag" select="replace(./source,'^.*(<image[^>]*>).*','$1')"/> <xsl:apply-templates select="target,alt-trans" mode="align"> <xsl:with-param name="imagetag" select="$imagetag"/> </xsl:apply-templates> </xsl:when> <xsl:otherwise> <!-- simple copy is sufficient for target, but alt-trans might need reordering --> <xsl:sequence select="target"/> <xsl:apply-templates select="alt-trans"/> </xsl:otherwise> </xsl:choose> <!-- copy the remaining tags as-is --> <xsl:sequence select="* except (source|target|alt-trans)"/> </xsl:copy> </xsl:template> </xsl:stylesheet> Zum anwenden des Stylesheets kann man beispielsweise saxon verwenden, das ist bei OOo dabei: java -jar <ooo-basis-dir>/program/classes/saxon9.jar 00.xlf transform.xslt >processed.xlf (bzw. mit -o ausgabe.xlf anstatt mit redirection) ciao Christian --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@de.openoffice.org For additional commands, e-mail: dev-h...@de.openoffice.org