Übersetzung ins Deutsche

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
holdi
Posts: 350
Joined: Mon Dec 05, 2016 3:00 pm

Re: Übersetzung ins Deutsche

Post by holdi »

Roland,
zunächst einmal Danke für Dein weiteres Mitmachen.

Ein wichtige Klärung für mich vorab könnte sein, wo ich die die dt. Sprache betreffenden Quell-Textdateien (.ts) als Dateien im herunter geladenen FreeCAD-Packet wiedererkenne. Das habe ich noch nicht geschafft. Diese Dateien müssten etwas mit der Sprache Deutsch zu tun haben und nach Python aussehen (anstatt .ts finde ich immerhin .py, .pyd). Da Textdateien nicht kompiliert werden, sondern beim Programmaufruf in Programm-Laufzeit zur Ausführung kommen, müsste sie m.E. im Prinzip unverändert im Programm erscheinen. Den XML Copy Editor habe ich auf meinem PC und kann damit Quelldateien .ts editieren.
Am Anfang Deines Tutorials ging es um die FreeCAD_de.ts-Datei (Pfad: src/Gui/Language/), am Ende um die als Beispiel von 25 Dateien gezeigte Datei PartDesign.ts (Pfad auf Deinem PC: .. /freecad/ de/). Alle 25 müsste ich nicht zusätzlich bearbeiten, wenn ich mich in "meiner" Pragramm-Version gemäss Deinem Vorschlag auf nur einige Arbeitsbereiche (workbenches) beschränken würde. Um ein Durcheinander zu vermeiden, dachte ich mir, den unveränderten originalen Programm-Dateien vorläufig einem anderen Namen zu geben.
Bevor ich nun aber größere Arbeit ins Editieren der .ts-Dateien stecke, möchte ich gerne wissen, was mit den veränderten Dateien dann zu passieren hat.

mfG holdi
holdi
Posts: 350
Joined: Mon Dec 05, 2016 3:00 pm

Re: Übersetzung ins Deutsche

Post by holdi »

Bin inzwischen die Datei PartDesign.ts mal ganz durchgegangen, wobei ich feststellte, dass sie nur ins Deutsch übersetzte Begriffe enthält. Diese Ü.n könnte ich ändern, aber das eigentliche Ziel ist das nicht: es geht hauptsächlich um das bisher nicht Übersetzte. Wollte ich das darin aufnehmen, müsste ich die Einsetzungsregeln kennen.

mfG holdi
User avatar
r-frank
Veteran
Posts: 2180
Joined: Thu Jan 24, 2013 6:26 pm
Location: Möckmühl, Germany
Contact:

Re: Übersetzung ins Deutsche

Post by r-frank »

Hast Du mal nachgeprüft, was beim Kompilieren genau passiert ?
Meine Vermutung: die Textstrings werden mit anderen Dateien zur FreeCAD.EXE(zumindest unter Windows) zusammengebacken ....
Deutsche FreeCAD Tutorials auf Youtube
My GrabCAD FreeCAD-Projects
FreeCAD lessons for beginners in english

Native german speaker - so apologies for my english, no offense intended :)
holdi
Posts: 350
Joined: Mon Dec 05, 2016 3:00 pm

Re: Übersetzung ins Deutsche

Post by holdi »

So etwas könnte sein, nennen wir es einfach mal "kompilieren".
Kennst Du irgendwelche Äußerungen/Berichte/Diskussionsbeiträge über das oder Ähnliches, was ich machen möchte? Oder noch aktive Leute, die das mal gemacht haben? Oder Freecad-Programmierer, die die Mühe nicht scheuen, potentielle Prorammierhelfer einzuführen (wobei für das pure Programmieren von Sequenzen z.B. in Python eigentlich keine Hilfe, aber für das Zusammenfügen zu einem Ganzen in der Form, wie es dann beim Benutzen auf dem Bildschirm erscheint, erforderlich ist)?

mfG holdi
wmayer
Founder
Posts: 20243
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: Übersetzung ins Deutsche

Post by wmayer »

Da holdi mich gebeten hat, an der Diskussion teilzunehmen, bin ich mal durch den ganzen Thread durchgegangen und habe ein paar Bemerkungen zu einzelnen Punkten geschrieben.
holdi wrote:Davon habe ich aber bisher so gut wie noch nichts verstanden, außer, dass es eine externe, eigentlich kostenpflichtige Sache ist. Auch durch Probieren konnte ich noch kein bisschen hinter die Kulissen schauen, denn die jetzt in meinem PC vorhandenen Dateien befinden sich in einem Ordner namens freecad.zip. Von den Unterordnern scheint mir der mit Namen de (de wie deutsch) der zutreffende zu sein. Die Dateien in ihm haben die Endung .ts (z.B. Arch.ts), die mir unbekannt ist. Wie kann ich eine solche Datei öffnen, um dann weiter zu kommen (hoffentlich nicht sobald wieder nicht) ?
Der Übersetzungsprozess läuft folgendermaßen ab:
1. zuerst muss der zu übersetzende Text im Quellcode entsprechend gekennzeichnet sein. Dies geschieht mit speziellen Methoden oder Makros wie: tr("Translate this text") oder QT_TRANSLATE_NOOP("MyContext", "Translate this text")

2. danach lässt man ein Tool namens lupdate (das zum GUI-Toolkit Qt gehört) über den Quellcode und die .ui-Dateien darüber laufen. Diese erkennt die Schlüsselworte "tr", "QT_TRANSLATE_NOOP" usw. und trägt dann den englischen Text mitsamt dem Kontext (der üblicherweise der Klassenname ist) in die .ts-Datei des entsprechenden Moduls ein.

3. dann werden alle .ts-Dateien eingesammelt und als zip auf crowdin hochgeladen

4. wenn die Übersetzung soweit brauchbar ist, wird sie wieder von crowdin heruntergeladen und das zip-Archiv entpackt. Alle .ts-Dateien werden wieder zum jeweiligen Modul verschoben.

5. Falls das zip die binären .qm-Dateien nicht enthält werden diese noch aus den .ts-Dateien erzeugt und dann fest ins Programm hineinkompiliert.


Zur Namensgebung: wenn eine Datei Arch.ts heißt, dann dient diese nur als Schablone und beinhaltet grundsätzlich keine Übersetzung. Wenn man eine neue Sprache unterstützen will, dann nennt man (eine Kopie) in Arch_xy.ts um. Arch_de.ts beinhaltet natürlich die Deutsche Übersetzung.

Natürlich kann man auch eine Datei lokal übersetzen, was allerdings die Gefahr birgt, dass durch das obige Vorgehen die Änderungen evt. überschrieben werden könnten. .ts-Dateien sind XML-basiert und man öffnet diese am besten mit dem Programm QtLinguist.
holdi wrote:Leuchtet mir nicht ein, weil der Benutzer gar nicht das Wort Breite sondern eine Zahl (mit a.a. Ort gewählter Längeneinheit) für die Breite eingibt oder verändert. Das Programm hat eine Zahl für meinetwegen die Größe width zu verarbeiten. In einer deutschen Version darf man m.E. getrost einen Dialog mit dem Wort Breite vor diese Zahl führen.
Es gibt grundsätzlich drei Möglichkeiten, wie man Werte ändern kann:
  • Direkt Wert angeben in der GUI. Dort gilt Dein Einwand.
  • Über Python-Skripte/Makros. Der Python-Code verwendet natürlich den englischen Begriff. Hier könnten u.U. Verwirrungen entstehen, aber wenn man die Option, dass der Python-Code in der Konsole ausgegeben wird, sollte einem schnell klar werden, wie englischer und übersetzter Begriff zueinander stehen.
  • Über sogenannte Expressions. Expressions sollten und können natürlich nur den englischen Text verwenden, da andernfalls es von den Einstellungen abhängt, ob ein Projekt auf einem anderen Rechner geladen werden kann. Durch das Englisch vs. Übersetzung dürfte eine gewisse Benutzerunfreundlichkeit entstehen.
holdi wrote:Du hast hierbei mit der Spacheinstellung English gearbeitet. Bei der Spracheinstellung Deutsch hat bei mir die Sache nicht funktioniert.
Abgesehen davon, dass solche Expressions m.E. zu aufwändiges Schreiben von Programmzeilen in der Python-Konsole erfordern, keine Vorformulierungen vorliegen, erkannte ich bereits in Fehlermeldungen meiner gescheiterten Versuche Unsinniges: Unnamed wurde nicht akzeptiert, es musste Unbenannt (also doch Deutsch) sein.
Dabei übersiehst Du aber, dass bei deutscher Umgebung der Dokumentenname "Unbenannt" heißt und nicht "Unnamed".
chrisb wrote: Edit: neueste 0.17er: In der Anzeige werden immer die deutschen Begriffe angezeigt, in den Expressions werden immer noch die englischen Eigenschaftsnamen verwendet. Damit kann ich klar kommen.
Das habe ich vor kurzem implementiert, wobei das Ganze eher als Proof of concept zu betrachten ist. Die Übersetzung hat dabei bewusst keinen Einfluss auf Expressions oder die Python-Schnittstelle, da ich auch der Meinung bin, dass Expressions und Python-Bezeichner nicht übersetzt werden dürfen.
ulrich1a wrote:Am besten ist es natürlich, den Erfolg durch eine Kompilierung von FreeCAD zu überprüfen.
Eine Kompilierung ist nicht unbedingt erforderlich. Man kann auch im User-Verzeichnis (dort, wo die user.cfg liegt) ein Verzeichnis "translations" anlegen und dort die .qm-Dateien hin kopieren. Dann werden diese statt der kompilierten Version verwendet. Wenn man mit der Übersetzung fertig ist, muss man diese Dateien dort wieder entfernen, da ansonsten die aktualisierte kompilierte Übersetzung nicht mehr aktiv würde.
Vorsicht bei Parallelinstallationen.
Alle Versionen greifen auf dieselben Nutzereinstellungen zu (Es sei denn man benutzt Kommandozeilenparameter).
Man kann auch für jede FreeCAD-Version eine eigene Datei angeben. Am besten erzeugt man eine Verknüpfung (Windows) und gibt mit -u "Pfad" eine andere cfg-Datei an.
holdi
Posts: 350
Joined: Mon Dec 05, 2016 3:00 pm

Re: Übersetzung ins Deutsche

Post by holdi »

wmayer wrote: Der Übersetzungsprozess läuft folgendermaßen ab:
1. zuerst muss der zu übersetzende Text im Quellcode entsprechend gekennzeichnet sein. Dies geschieht mit speziellen Methoden oder Makros wie: tr("Translate this text") oder QT_TRANSLATE_NOOP("MyContext", "Translate this text")

2. danach lässt man ein Tool namens lupdate (das zum GUI-Toolkit Qt gehört) über den Quellcode und die .ui-Dateien darüber laufen lässt. Diese erkennt die Schlüsselworte "tr", "QT_TRANSLATE_NOOP" usw. und trägt dann den englischen Text mitsamt dem Kontext (der üblicherweise der Klassenname ist) in die .ts-Datei des entsprechenden Moduls ein.

3. dann werden alle .ts-Dateien eingesammelt und als zip auf crowdin hochgeladen

4. wenn die Übersetzung soweit brauchbar ist, wird sie wieder von crowdin heruntergeladen und das zip-Archiv entpackt. Alle .ts-Dateien werden wieder zum jeweiligen Modul verschoben.

5. Falls das zip die binären .qm-Dateien nicht enthält werden diese noch aus den .ts-Dateien erzeugt und dann fest ins Programm hineinkompiliert.
Hallo Werner,

vielen Dank für Deine umfangreicher Antwort.
Da ich als Neuling eine solche große Menge an Hinweisen nicht sofort bewältigen kann (in fast jeder Zeile begegnet mir jeweils mindestens ein mir bisher nicht bekannter Begriff), referenziere ich zunächst auf die 5 Schritte, in denen ein Übersetzungsprozess abläuft.
Verstehe ich Dich richtig, dass Du grundsätzlich sprichst, nicht eingeschränkt zu meiner Idee, mir eine persönliche deutschsprachige FreeCAD-Version herzustellen, weil ich glaubte durch Arbeit in einem engeren Rahmen schneller bzw. überhaupt erst vorankommen zu können?

zu 1.: ... der zu übersetzende Text im Quellcode ... wäre was? Gib doch bitte ein solches Stück als Beispiel an: eine entsprechende Datei in Quellcode.
Dahinein schreibt man mit Hilfe eines Editors (welcher, hängt vom Dateityp ab; sehe ich dann, wenn ich das Beispiel von Dir habe) tr oder QT_TRANSLATE_NOOP vor jedes Textstück, dass aus dem Englischen in eine andere Sprache zu übersetzen ist.
Dann wird diese Datei geschlossen und gespeichert.

zu 2.: ... ein Tool namens lupdate [aus dem Web herunterladen?]... über den Quellcode und die .ui-Dateien ... laufen lässt. Was sind -ui-Dateien (bisher war nur von Quellcode die Rede)?
Was heißt das, ein Tool über einen Code laufen lassen ?
... und trägt den englischen Text ... in die .ts-Datei des entsprechenden Moduls ein. Gefundener englischer Text wird in eine andere Datei eingetragen. Geht das automatisch? Diese Datei mus nicht wenigstens von Hand erstellt werden?
Eine solche FreeCAD_de.ts-Datei ist z.B. src/gui/languages/de/PartDesign.ts, die ich gestern durchgesehen habe, und feststellte, dass darin alles übersetzt ist ? Was könnte denn nun meine Aufgabe sein? Meine Absicht war doch, Übersetzungen zu machen?

Ich muss bereits hier bei 2./5. unterbrechen, denn ich stehe mal wieder wie der Ochse vorm Tor.

mfG holdi

Nachtrag:
Nachträglich erinnere ich mich, dass man über einen Text ein Rechtschreibeprogramm "drüber laufen lassen" kann. Der Text wäre Input, die Rotunterstreichungen wären Output dieses Programms. Beim oben gesagten wären die gefundenen Textstücke Output, ausgegeben vermutlich in Form einer .ts- Datei.
Inzwischen wurde ich auch wegen des Kompilens/Interpretierens von Python-Code eines anderen belehrt. Zwischen Source- und Byte-Code wirkt ein Compiler, der Interpreter folgt erst danach.
User avatar
bernd
Veteran
Posts: 12849
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Übersetzung ins Deutsche

Post by bernd »

Wow Werner, viele coole Tipps!
holdi wrote:Python (eine Programmiersprache, so leicht wie nie vorher) und C++ (habe es früher viel benutzt) werden kein Hindernis sein.
Das passt für mich irgendwie nich mit deinem letzten Beitrag zusammen, aber ich mag mich täuschen.
holdi wrote: zu 1.: ... der zu übersetzende Text im Quellcode ... wäre was? Gib doch bitte ein solches Stück als Beispiel an: eine entsprechende Datei in Quellcode.
Dahinein schreibt man mit Hilfe eines Editors (welcher, hängt vom Dateityp ab; sehe ich dann, wenn ich das Beispiel von Dir habe) tr oder QT_TRANSLATE_NOOP vor jedes Textstück, dass aus dem Englischen in eine andere Sprache zu übersetzen ist.
Dann wird diese Datei geschlossen und gespeichert.
Arbeitsbereich Part --> Tool "Form-Generator ..." in Englisch "Shape builder ..." (letzteres ist der menue text) hat den tool tip "Advanced utility to create shapes" Beide sind durch obige Befehle im Quellqode als Übersetzung markiert. Hier ist der entsprechende code: https://github.com/FreeCAD/FreeCAD/blob ... .cpp#L1413 Die deutsche Übersetzung der beiden Begriffe im ts file findest Du hier: https://github.com/FreeCAD/FreeCAD/blob ... e.ts#L1227 und hier: https://github.com/FreeCAD/FreeCAD/blob ... e.ts#L1232

Diese ts dateien sind auf CrowdIn. Falls Du irgendwas auf CrowdIn änderst änderst Du die ts-Dateien.

Bernd
holdi
Posts: 350
Joined: Mon Dec 05, 2016 3:00 pm

Re: Übersetzung ins Deutsche

Post by holdi »

Hallo Bernd,
danke dafür, dass Du mich ein Stück weiter brachtest.

o Der FC-Quelltext ist in C++ geschrieben (Datei-Endung .cpp).

o Bestimmte Programmteile sind mehrfach vorhanden. Jedem Benutzer stehen immer alle Varianten zur Verfügung. Bei der Spracheinstellung wird die entsprechende Variante dieser Programmteile eingestellt und danach anstatt der originalen in Englisch benutzt.

o In jedem originalen Programmteil sind die Begriffe/Kommandos in englicher Sprache geschrieben (originaler Programmteil = englische Variante). Beispiel: FreeCAD/src/Mod/Part /Gui/Command.cpp (Arbeitsbereich Part)
o Im Ordner Gui gibt es viele weiteren Dateien .cpp u.a. Wofür sind diese offensichtlich sprachneutralen Programmteile?

o Die z.B. in FreeCAD/src/Mod/Part/Gui/Command.cpp zu übersetzenden Texte (Dialog mit Kommandos, Meldungen, Warnungen usw.) sind markiert. Wer macht das?

o Mit Hilfe dieser Markierungen werden die Texte mit einem Suchprogramm gefunden und als Kopien in eine Textdatei (Datei-Endung .ts) eingetragen, z.B. in FreeCAD/src/Mod/Part/Gui/Resources/translations/Part_de.ts. Wer legt den Zusatz de für deutsch (ist nur eine vieler Möglichkeiten) fest.

o Die .. /ranslations/.. .ts-Dateien werden auf die Plattform Crowdin gebracht. Wer macht das?

o Dort können diese Dateien von jedermann, der sich angemeldet hat, editiert werden, dh. Übersetzungen der darin vorgegeben engl. Begriffe in die betreffende Sprache vorgenommen oder geändert werden.
oo Was bedeutet (nicht immer angegeben) <location line = ".."> ? Die Linien-/Zeilen- Nummer im Quelltext ist es nicht.
oo Was bedeuted (nicht immer angegeben) <translations type = "unfinished"> in Fällen, in denen ein beispielsweise deutsches Wort eingetragen ist?
oo Im Beispiel FreeCAD/src/Mod/Part/Gui/Resources/translations/Part_de.ts finde ich unübersetzte Stellen, in ../PartDesign_de.ts aber nicht (nebenbei: <translations type = ...> steht darin nirgends). Ist die Arbeit in Letzterem wirklich (vorläufig) erledigt, oder sind nicht alle zu überseztenden Texte eingetragen (noch nicht, oder wurden vergessen)? Dowload vor etwa 10 Tagen, als nämlich der PartDesign-Balken hier (https://crowdin.com/project/freecad/de#) noch zu etwa 75% weiß war.

Zwischenstand:
Ich weiß wieder etwas mehr (eher für die Übersetzung von Yoriks Manual brauchbar).
Was ich machen soll/kann, weiß ich immer noch nicht, u.a. wegen der genannten Ungereimtheiten bei den .ts-Dateien auf Crowdin.
Das hier angesprochene Standard-Vorgehen geht auf Abwarten und Tee trinken hinaus, was ich eigentlich vermeiden wollte (lieber zunächst in meiner Ecke für dem Eigengebrauch werkeln, und keinen FC-Benutzer stören, womit auch immer).

mfGn holdi
Last edited by holdi on Thu Jan 12, 2017 10:28 pm, edited 1 time in total.
User avatar
bernd
Veteran
Posts: 12849
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Übersetzung ins Deutsche

Post by bernd »

holdi wrote:o Die .. /ranslations/.. .ts-Dateien werden auf die Plattform Crowdin gebracht. Wer macht das?
Yorik
holdi wrote:Was ich machen soll/kann, weiß ich immer noch nicht, u.a. wegen der genannten Ungereimtheiten bei den .ts-Dateien auf Crowdin.
Das hier angesprochene Standard-Vorgehen geht auf Abwarten und Tee trinken hinaus, was ich eigentlich vermeiden wollte (zunächst in meiner Ecke sitzen, und keinen FC-Benutzer stören, womit auch immer).
Jetzt wo Du soviel über Translation gelernt hast könntest Du ja mal Localisation ins deutsche übersetzten. Dann haben es Deine Nachfolger etwas leichter als Du. ;)
wmayer
Founder
Posts: 20243
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: Übersetzung ins Deutsche

Post by wmayer »

holdi wrote:Verstehe ich Dich richtig, dass Du grundsätzlich sprichst, nicht eingeschränkt zu meiner Idee, mir eine persönliche deutschsprachige FreeCAD-Version herzustellen, weil ich glaubte durch Arbeit in einem engeren Rahmen schneller bzw. überhaupt erst vorankommen zu können?
Ich habe nur mal den technischen Ablauf kurz skizziert. Grundsätzlich bin ich der Meinung, dass die grafische Benutzeroberfläche soweit wie möglich übersetzt wird -- also das, was ein Standard-Anwender zu Gesicht bekommt. Alles was drüber hinausgeht, also Scripting und Expressions sollte und darf nicht übersetzt werden.
holdi wrote: zu 1.: ... der zu übersetzende Text im Quellcode ... wäre was? Gib doch bitte ein solches Stück als Beispiel an: eine entsprechende Datei in Quellcode.
Ich dachte Du kennst Dich damit hinreichend gut aus. Also hier ein kurzes Beispiel:

Code: Select all

void MyClass::myMethod()
{
    QLabel* label = ...
    label->setText(tr("Translate this text")); // OK
    label->setText(qApp->translate("MyClass", "Translate this text")); // OK
    const char* text = QT_TRANSLATE_NOOP("MyClass", "Translate this text");
    label->setText(qApp->translate("MyClass", text)); // OK
    
    const char* anothertext = "Translate another text";
    label->setText(qApp->translate("MyClass",anothertext)); // not OK
    label->setText(QString::fromLatin1("Translate another text")); // not OK
}
"Translate this text" und "Translate another text" sind String-Literale, die im Quellcode stehen. Im Beispiel wird C++ verwendet, es trifft aber auch genauso auf Python zu (abgesehen davon, dass die Syntax anders ist).
Zu beachten ist, dass mit QT_TRANSLATE_NOOP der Text nur entsprechend markiert wird, so dass lupdate die Einträge einsammeln kann, während tr() und translate() Funktionen sind, die versuchen die Übersetzung zurückzuliefern.
holdi wrote:zu 2.: ... ein Tool namens lupdate [aus dem Web herunterladen?]... über den Quellcode und die .ui-Dateien ... laufen lässt. Was sind -ui-Dateien (bisher war nur von Quellcode die Rede)?
lupdate gehört zur Bibliothek Qt. Für Windows kann man z.B. eines der LibPacks herunterladen und entpacken.

ui-Dateien sind XML-basiert und können bequem mit dem Qt-Designer erstellt werden. Aus ui-Dateien werden mittels einem anderen Helferlein "uic" (sprich: ui compiler) C++-Code erzeugt.
Was heißt das, ein Tool über einen Code laufen lassen ?
Das Tool wird auf alle .cpp, .ui und .py-Dateien angewandt, so dass es allen zu übersetzenden Text findet und in die .ts-Dateien überträgt.
Geht das automatisch? Diese Datei mus nicht wenigstens von Hand erstellt werden?
Alles funktioniert automatisch. In FreeCAD gibt es zusätzlich ein Python-Script, das das Erstellen der zip-Datei und das Hochladen zu Crowdin automatisiert.
Eine solche FreeCAD_de.ts-Datei ist z.B. src/gui/languages/de/PartDesign.ts, die ich gestern durchgesehen habe, und feststellte, dass darin alles übersetzt ist ? Was könnte denn nun meine Aufgabe sein? Meine Absicht war doch, Übersetzungen zu machen?
.ts-Dateien findest Du in jedem FreeCAD-Modul. Du musst dann halt alle (die mit der Endung _de.ts) durchgehen und schauen, ob noch was übersetzt werden muss.
o Die z.B. in FreeCAD/src/Mod/Part/Gui/Command.cpp zu übersetzenden Texte (Dialog mit Kommandos, Meldungen, Warnungen usw.) sind markiert. Wer macht das?
Der Entwickler.

EDIT:
Siehe auch http://doc.qt.io/qt-5/i18n-source-translation.html und http://doc.qt.io/archives/qq/qq03-swedish-chef.html
Post Reply