Kyrillische Buchstaben ausgeben

Alles rund um die Programmierung mit Qt
july
Beiträge: 21
Registriert: 9. September 2010 13:19

Kyrillische Buchstaben ausgeben

Beitrag von july »

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

Code: Alles auswählen

QTextCodec *codec = QTextCodec::codecForName("UTF-8");
  ui->textBrowser->setText(codec->toUnicode("привет, как дела?");
Danach hab ich noch eine Lösung mit QString::fromLocal8Bit() versucht, ging leider auch nicht. Habt ihr ne Idee wie man das sonst lösen kann?

Grüße July

PS.Kompillieren tue ich's unter Windows XP und danach spiele es auf QNX -Embedded System auf.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Kyrillische Buchstaben ausgeben

Beitrag von Christian81 »

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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
july
Beiträge: 21
Registriert: 9. September 2010 13:19

Re: Kyrillische Buchstaben ausgeben

Beitrag von july »

und wie löse ich das ganze mit Unicode, so dass man in einem Textbrowser verschiedene Strings bauen kann ohne die ganze Zeit iwas zu übersetzen?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Kyrillische Buchstaben ausgeben

Beitrag von Christian81 »

Wenn Du direkt in Qt-Widgets etwas reinschreibst dann geben dir die Widgets die Texte schon korrekt als QString zurück.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
july
Beiträge: 21
Registriert: 9. September 2010 13:19

Re: Kyrillische Buchstaben ausgeben

Beitrag von july »

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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Kyrillische Buchstaben ausgeben

Beitrag von Christian81 »

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!
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

Re: Kyrillische Buchstaben ausgeben

Beitrag von sowas »

ich arbeite unter kubuntu 12.04 und bei mir funktioniert folgender Code:

Code: Alles auswählen

#include <QApplication>
#include <QLabel>

 int main(int argc, char **argv)
 {
    QApplication app(argc, argv);
    QLabel label(QObject::trUtf8("привет, как дела?"));
    label.show();
    
    return app.exec();
 }
Geht es auch unter Windows?
july
Beiträge: 21
Registriert: 9. September 2010 13:19

Re: Kyrillische Buchstaben ausgeben

Beitrag von july »

ok, hab vestanden wo mein Fehler war, geht's denn sonst ohne Linguist? so was z.B.:

Code: Alles auswählen

    
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.
july
Beiträge: 21
Registriert: 9. September 2010 13:19

Re: Kyrillische Buchstaben ausgeben

Beitrag von july »

@sowas

wenn ich bei Windows kompiliere und auf qnx rauf spiele kommen nur kommische Zeichen raus...
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

Re: Kyrillische Buchstaben ausgeben

Beitrag von sowas »

das ist der Unterschied zwischen den Systemen,
bei mir wäre auch kein Problem mit chinesisch, nur utf16 verwenden.
trendyAndy
Beiträge: 54
Registriert: 27. März 2009 15:01

Re: Kyrillische Buchstaben ausgeben

Beitrag von trendyAndy »

Hallo July,

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.

Gruß
Andy
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Re: Kyrillische Buchstaben ausgeben

Beitrag von ScyllaIllciz »

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!
trendyAndy
Beiträge: 54
Registriert: 27. März 2009 15:01

Re: Kyrillische Buchstaben ausgeben

Beitrag von trendyAndy »

Servus,

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?

Gruss
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Re: Kyrillische Buchstaben ausgeben

Beitrag von ScyllaIllciz »

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!
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Kyrillische Buchstaben ausgeben

Beitrag von RHBaum »

>> 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

Ciao ...
Gesperrt