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.