Xaratas / pillarsofeternity-german-patch-with-expansions

Fortsetzung der Verbesserung der deutschen Übersetzung von pillarsofeternity-german-patch inklusive der Expansion Ordner.
http://www.nexusmods.com/pillarsofeternity/mods/6/?
4 stars 7 forks source link

Language Tool #9

Open AurelioSilver opened 9 years ago

AurelioSilver commented 9 years ago

nkemnitz hatte mal das Language Tool erwähnt: https://www.languagetool.org/de/

Ich habe mal die ersten Dateien mit überprüft und schon paar kleinere Dinge gefunden.

Hilfreich ist es, bei Nodepad++ das XML Tool zu installieren und folgendes in eine Datei names stringextract.xsl zu kopieren

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes"/> 
 <xsl:template match="/">
    <xsl:for-each select="/StringTableFile/Entries/Entry">
      <xsl:value-of select="DefaultText" />
      <xsl:text>&#10;</xsl:text>
      <xsl:value-of select="FemaleText" />
      <xsl:text>&#10;</xsl:text>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

Diese Datei wendet man dann mit "XSL Transformation" auf eine stringtable Datei an und erhält somit nur die Texte, die man dann im Language Tool überprüfen kann (Open Office / Libre Office),

Vielleicht kann sie noch wer verbessern. Ich habe nicht wirklich Ahnung von XSL Transformationen und bin froh, dass ich das so hinbekommen habe. :)

Xaratas commented 9 years ago

java -jar ../../../Downloads/saxon/saxon9he.jar -s:/opt/gog/Pillars\ of\ Eternity/game/PillarsOfEternity_Data/data/localized/de_patch/text/game/tutorial.stringtable -xsl:stringextract.xsl | java -jar ../../../Downloads/LanguageTool-3.2/languagetool-commandline.jar -l de-DE -m de-DE -c UTF-8 -

Nunja, bissel länglich, und man braucht noch ein größeres Benutzerwörterbuch was @nkemnitz schon hätte.

Xaratas commented 9 years ago

Hm, das ausgepackte Language Tool bläht das git schon ein wenig auf. Da muss ich mir was besseres einfallen lassen als 100MB dafür abzugeben, deswegen kein commit heute. Zum selber spielen: http://heanet.dl.sourceforge.net/project/saxon/Saxon-HE/9.6/SaxonHE9-6-0-7J.zip https://www.languagetool.org/download/LanguageTool-3.2.zip Wortausnahmen fürs eigene Wörterbuch müssen in: languagetool/resource/de/hunspell/ignore.txt

Man kann sich auch mal das automatisierte Tagging ansehen, ob man da was sinnvolles bei raus bekommt.

java -jar saxon9he.jar -s:../data/localized/de_patch/text/game/abilities.stringtable -xsl:stringextract.xsl | java -jar languagetool-commandline.jar -l de-DE -c UTF-8 -
AurelioSilver commented 9 years ago

Hm, ich würde es nicht mit ins Git packen, wer mag soll es sich dann runterladen. Nur eine Referenz anbieten. Leider ist das Tool auch recht fehleranfällig. Man sollte schon genau hinschauen.

Und danke für's formatieren. Ich wusste nicht wie. :)

Bin mir aber nicht sicher, ob die Kommandozeile auch auf Windows funktionieren wird.

Xaratas commented 8 years ago

Da macht man was mit bei den angepassten Wörterbüchern, die ersten 500 Eigennamen und Abwegigkeiten die als Legal gelten dauern bestimmt einige Zeit. Hm, ich hab erst 40. edit 120

AurelioSilver commented 8 years ago

Prima! Muss ich mir bei Gelegenheit dann mal anschauen... Ist schon übel, dass man immer noch was findet. Im Januar geht's dann eh weiter mit Patch 3.0 und WM2.

Xaratas commented 8 years ago

Ich glaub das Benutzerwörterbuch landet bei ~1000 Einträgen. Und dann hat man immernoch das Problem, dass er von Worten, die er nicht kennt, die er aber durch Hunspell jagt nicht die Satzpunkte abtrennt und das dann als falsch ausgibt.

Xaratas commented 8 years ago

Diese ganze fiese Großschreibung allenthalben macht einen wahnsinnig.

Schriftrolle der Mittleren Wiederherstellung von Ausdauer 

Bei sowas wär ich voll dafür „mittleren“ klein zu schreiben.

AurelioSilver commented 8 years ago

Ich weiss auch nicht, warum das alles mal gross und kleingeschrieben ist. Vermutlich für den Parser, um drauf zu verlinken. Richtiger wäre auf jeden Fall kleingeschrieben.

Xaratas commented 8 years ago

Da müsste man mal prüfen ob der nicht nen Ignore Case beim vergleichen zum automatischen verlinken hat, oder ob der neue [g] Tag da hilft.

Xaratas commented 8 years ago

Noch ein paar Erkenntnisse. Die Anzahl der nicht zusammengefügten Substantive ist echt zu hoch, andauernd steht da ein Bindestrich zwischen. Ryngr-Büsche, Lagufaeth-Leber, ich werd die unsinnig getrennten jetzt mal zusammen führen. Gibt ja auch keine Flieder-Büsche und Rinder-Leber.

Language Tool 3.2 bekommt die oben angemerkten Satzpunkte korrekt hin. Ist aber noch nicht ganz fertig, und deswegen nur als snapshot zu haben.

Die Regel DE_CASE auszuschalten beruhigt die Nerven ungemein. -d DE_CASE vor dem letzten - in die Komandozeile.

Grade im Addon müssen wir auf die Herkunftsbezeichnungen nochmal aufpassen. „Aedryrisch“ hatten wir gewählt, die bezahlten Übersetzer haben „Aedyrianisch“ genommen.

AurelioSilver commented 8 years ago

Die 3.2 ist nun offiziell zu haben.

Xaratas commented 8 years ago

Schön, die „zumachen“ Umgangspracheregel wurde auch korrigiert.

Xaratas commented 8 years ago

Ich pack das mal hier hin, die aktuelle Komandozeile: Das geht mittlerweile recht brauchbar, da das Benutzerwörterbuch schon recht viel enthält und pro Datei nur noch wenig anfällt.

/gitrepos/poe_translation/translation_helper$ ls ../data_expansion1/localized/de_patch/text/conversations/px1_04_mercenary_camp/px1_04_cv_* | xargs -L 1 ./spellcheckAll.sh

in spellcheckAll.sh steht folgendes (die hacky Sammlung von Pfaden ist auch der Grund, warum die Datei nicht im git ist):

#!/bin/bash
# funzt nur auf dem PC von Xaratas
# TODO alles ^^
java -jar ../../../Downloads/saxon/saxon9he.jar -s:$1 -xsl:stringextract.xsl | ~/Downloads/jre1.8.0_66/bin/java -jar ../../../Downloads/LanguageTool-3.2/languagetool-commandline.jar -l de-DE -m de-DE -c UTF-8 -d DE_CASE -
AurelioSilver commented 8 years ago

So... habe das mal für Windows umgeschrieben.

Batch Datei 1:

dir D:\PoE_exp_git\data_expansion2\localized\de_patch\text\conversations\px2_00_stalwart_village\*.stringtable /s /b > filelist.txt
FOR /F %%k in (filelist.txt) DO spellcheckall.bat %%k

Batch Datei 2: spellcheckall.bat

@echo Filename: %1 >> errors.txt
@echo. >> errors.txt
java -jar saxon9he.jar -s:%1 -xsl:stringextract.xsl | java -jar languagetool-commandline.jar -l de-DE -c UTF-8 -d DE_CASE - >> errors.txt
@echo ------------------ >> errors.txt
@echo. >> errors.txt

Pfade, etc muss man dann natütlich anpassen. Die Jars liegen bei mir alle in einem Unterordner und Pfade für java etc sind gesetzt.

Kann man sicher noch eleganter machen.

AurelioSilver commented 8 years ago

Version 3.3 ist nun auch erschienen.

Xaratas commented 8 years ago

Ja, und verarbeitet alles als ein Block anstatt Zeilenweise. Hat Vor- und Nachteile für die Grammatikprüfung.

AurelioSilver commented 8 years ago

So, habe mal das XSLT überarbeitet. Das XML wird nun mit rausgeschmissen und vom Language Tool nicht mehr mitgetestet...

Xaratas commented 8 years ago

Man glaubt gar nicht, wie kompliziert son Einzeiler sein kann wenn man nicht den Eingabeordner überschreiben will. Die Zeile Ist ein full extractor, lässt aber die Dateinamen übrig. Mal schauen was man jetzt damit anstellt ^^

find . -name *.stringtable | gawk '{ print $1, gensub(/\.\//, "../poe_translation_bare/", 1) }' | xargs -P 2 bash -c 'java -jar ~/Downloads/saxon/saxon9he.jar -s:$0 -xsl:/home/xar/gitrepos/poe_translation/translation_helper/stringextract.xsl -o:$1'

edit

Merke 1800 mal Bash und java aufrufen hat gewaltigen Overhead. Das da oben benötigt bei mir 25 Minuten, das folgende nur 2.

find data* -type d -exec mkdir ../poe_translation_bare/{} \;
find data* -type d -exec java -jar ~/Downloads/saxon/saxon9he.jar -s:{} -xsl:/home/xar/gitrepos/poe_translation/translation_helper/stringextract.xsl -o:../poe_translation_bare/{} -threads:4 \;
cd ../poe_translation_bare
find . -name *.xml -type f -print -exec cat {} \; > allStrings.txt

edit 2

Das Obere hatte auch nur die Hälfte gemacht -.- ist jetzt Korrigiert, macht das Ding nicht besser

Xaratas commented 8 years ago

So, und wenn man die JVM nicht 1800 mal und auch nicht 121 mal neu startet, dann geht das auch in 4 Sekunden. Relative Pfade wollten mir nicht gelingen, aber ich denke das ist einfach anzupassen, file:///c:/users usw. kann man da ebenso eintragen.

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" omit-xml-declaration="yes"/>
        <xsl:template match="/">
                <xsl:for-each select="collection(concat('file:///home/xar/gitrepos/poe_translation/', '?select=*.stringtable;recurse=yes'))">
                <xsl:variable name="newPath"><xsl:value-of select="replace(base-uri(), 'poe_translation', 'poe_translation_bare')" /></xsl:variable>
                <xsl:result-document href="{$newPath}">
                        <xsl:for-each select="/StringTableFile/Entries/Entry">
                                <xsl:value-of select="DefaultText" />
                                <xsl:text>&#10;</xsl:text>
                                <xsl:value-of select="FemaleText" />
                                <xsl:text>&#10;</xsl:text>
                        </xsl:for-each>
                </xsl:result-document>
                </xsl:for-each>
        </xsl:template>
</xsl:stylesheet>

Der Dateiname für -s muss nur eine gültige xml Datei sein, sonst nölt saxon rum

 java -jar ~/Downloads/saxon/saxon9he.jar -s:./data/localized/de_patch/language.xml -xsl:/home/xar/gitrepos/poe_translation/translation_helper/stringextract.xsl -threads:4
AurelioSilver commented 8 years ago

Nett... nun muss ich nur sehen, wie ich das auf Windows hinbekomme...