Hallo zusammen,
ich versuche gerade erfolglos einen russischen Text auszugeben. Momentan bekomme ich leider nur Fragezeichen
Ich hab schon bei Extras->Einstellungen beim Editor auf UTF-8 umgestellt. Dann hab ich in Foren eine Lösung mit QtextCodec gefunden, funktionniert leider auch nicht
Windows / MSVC speichert die Dateien per default nicht als UTF-8 ab - also ist das Vorgehen falsch.
Das korrekte Vorgehen ist mittels QObject::tr() und ts-Dateien. Im Sourcecode nur ASCII (bzw. Englisch) und den Rest mittels Übersetzungen korrigieren. Dann funktioniert es auf alle Fälle.
Nicht so ganz ich hab im QtCreator die kyrillische Buchstaben als QString eingegeben und konnte nach dem wieder Aufmachen der Datei die Zeichen nicht mehr lesen.
july hat geschrieben:Nicht so ganz ich hab im QtCreator die kyrillische Buchstaben als QString eingegeben und konnte nach dem wieder Aufmachen der Datei die Zeichen nicht mehr lesen.
Sorry aber ich verstehe nicht was Du mir damit sagen willst ... Hast Du nun was im Quellcode kyrillisch geschrieben oder im UI-File oder wo?
Bitte erzeuge ein minimales Beispiel um zu zeigen was Du genau für ein Problem hast!
QString str = "привет, как дела?";
ui->textBrowser->setText(str);
Damit man im Quellcode besser mit dem String arbeiten kann? Weil wenn man in verschiedene Sprache übersetzt, muss man mal die Parameter vertauschen oder die Schriftgröße anpassen. So könnte ich sagen wenn z.B. Chinesisch, mach bitte die Schriftgröße größer und wenn's Französisch ist, splite es auf mehrere Zeilen (max 3 Zeilen und max 8 Zeichen pro zeile) Das kann ich mit Linguist halt nicht machen.
ich habe meine Software in 19 Sprachen verfügbar. Ich bin den Umweg gegangen und habe mir eine eigenes kleines Übersetzungsprogramm programmiert. Die Übersetzungsbüros arbeiten fast immer mit Excel-Tabellen. Denen den Qt-Linguist zur Verfügung zu stellen ist nicht machbar. Eine Export-Option habe ich im Linguist auch nicht gefunden, was nicht heißt dass es das nicht gibt, vielleicht habe ich es nicht gefunden.
Jedenfalls arbeite ich mit QString und tr(""), dann erzeuge ich die .ts Dateien, die ein XML Format haben und erportiere das in Excel. Dann ab zum Übersetzer und dann wieder importiert und eine -qm erzeugt und gut ist. Für Chinesisch mußt du dann beispielsweise einen TrueType-Schriftsatz verwenden der die Zeichen auch darstellen kann. Sonst hast du evtl. alles richtig gemacht, aber der Standard Arial Font oder was weiß ich gibt das halt nicht her. Die Schriftgröße ist ja zur laufzeit schnell verändert. In meinem Übersetzungsprogramm habe ich dann die Mehrzeiligkeit mit drin. Gibt man in dem übersetzten Quellcode ein carriage return ein, dann ist der Text nachher in der Applikation auch zweizeilig.
Ich würde nicht den Text im Quellcode verändern.
Das ist so nicht korrekt. Übersetzungsbüros können direkt mi XML Dateien umgehen. Wir geben die *.ts Dateien direkt so weiter und bekommen die korrekt wieder. Also es ist notwendig was selber zu machen!
Das ist sehr interessant! Bei denen wir angefragt haben, die wollten das alle in Excel. Benutzt das Büro dann den linguist oder wie bekommen sie in die XML die entsprechenden Einträge rein oder raus, z.B. das <translated> oder das <unfinished>. Das werden die ja auch irgendwie automatisiert haben. Ist dann bestimmt auch dementsprechend teuer, oder?
So weit ich weiß haben die spezielle Programme. Ich kann mal bei denen nachfragen, wenn Interesse besteht!?
So weit ich weiß haben die auch normale Preise!
>> wenn ich bei Windows kompiliere und auf qnx rauf spiele kommen nur kommische Zeichen raus...
es ist nicht nur ne Frage von windows ...
sondern es spielt der compiler, der editor auch mit rein ....
versteht dein compiler utf-8 / utf-16 codierte dateien ?
der Msvc bestimmt ned (ANSI kann er sicher) ....
Was macht der Editor / IDE wenn du nicht ASCII im Quelltext eingibts ? wie codiert er die ?
Deswegen, allein um der plattformunabhaengigkeit zuliebe, immer nur ASCII ! Dateien als Header und Quelldateien erzeugen !!!
Das heisst, Stringliterale in einer sprache die man mit ASCII darstellen kann verwenden -> english !!!
dann gibts dafuer tools, die dir deine nicht ASCII texte im Programm erzuegen koennen.
such mal nach i18n
in der GNU welt gibts dafuer gettext
in der Apache welt apr-iconv
das windows-ressourcensystem kann UNICODE (unicode != utf8/utf16)
...
es gibt auch fuer windows libs die utf8/utf16 können
Das qt system basiert auf utf16 glaub ich, kann aber viel konvertieren.
aber nen compiler solltest ausschliesslich mit ascii füttern