Problem mit Internationalisierung
Problem mit Internationalisierung
Wie kann ich einen QString internationalisieren:
Ich habe einen QString str_A. Diesen möchte ich internationalisiert ausgeben.
Vorgehensweise:
in der Sprachdatei steht
Schlüssel: HELLO
für deutsch: Hallo
für englisch: hello
QString str_A = "HELLO"
Dann stelle ich die Sprache um, das funktioniert für die GUI Elemente auch soweit.
Was ich aber wissen möchte ist wie kann ich den QString übersetzen lassen?
Ich stelle mir etwas in der Art vor wie:
cout (tr(str_A));
ausgegben soll werden nach einer Umstellung auf englisch:
hello
Also nicht die GUI internationalisiern sondern einen String z.B für eine Log message!
Kann mir jemand helfen?
Ich habe einen QString str_A. Diesen möchte ich internationalisiert ausgeben.
Vorgehensweise:
in der Sprachdatei steht
Schlüssel: HELLO
für deutsch: Hallo
für englisch: hello
QString str_A = "HELLO"
Dann stelle ich die Sprache um, das funktioniert für die GUI Elemente auch soweit.
Was ich aber wissen möchte ist wie kann ich den QString übersetzen lassen?
Ich stelle mir etwas in der Art vor wie:
cout (tr(str_A));
ausgegben soll werden nach einer Umstellung auf englisch:
hello
Also nicht die GUI internationalisiern sondern einen String z.B für eine Log message!
Kann mir jemand helfen?
Mein Problem ist:
ich habe eine Tabelle:
1. diese Tabelle hat internationalisiert Header
2. diese Tabelle kann verändert werden , Spalten verschoben, oder entfernt
3. ich habe mir eine Methode geschrieben, die mir zu einem übergebenen Header die Spaltennummer zurückgibt:
Das hat bis zu dem Punkt funktioniert an dem ich das ganze internationalisiern wollte!
Jetzt stimmen die Header nicht mehr mit dem nicht internationalisiertem #define überein!
ich habe eine Tabelle:
1. diese Tabelle hat internationalisiert Header
2. diese Tabelle kann verändert werden , Spalten verschoben, oder entfernt
3. ich habe mir eine Methode geschrieben, die mir zu einem übergebenen Header die Spaltennummer zurückgibt:
Das hat bis zu dem Punkt funktioniert an dem ich das ganze internationalisiern wollte!
Jetzt stimmen die Header nicht mehr mit dem nicht internationalisiertem #define überein!
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
warum denn nicht anstelle des defines einjetzt stimmen die Header nicht mehr mit dem nicht internationalisiertem #define überein!
Code: Alles auswählen
const QString COLUMN_NAME = QObject::tr("spaltenname");
Code: Alles auswählen
#define COLUMN_NAME "spaltenname"
...
int index = getIndexByName(tr(COLUMN_NAME));
ich habe es (meiner Meinung nach) genau so gemacht, es funktioniert bei mir aber nicht:
In der Headerdatei
#define CFG_TABLE_HEADER_ISSUE_STATE "col_SAPState"
Schnittstelle der Funktion
int CdiStandardStatusFrame::getColumnByHeader (QString header)
Aufruf der Funktion
int column4State = getColumnByHeader(tr(CFG_TABLE_HEADER_ISSUE_STATE));
In der Funktion lasse ich mir den Header ausgeben, dieser ist nicht internationalisiert, also schein
getColumnByHeader(tr(CFG_TABLE_HEADER_ISSUE_STATE));
nicht zu funktionieren
In der Headerdatei
#define CFG_TABLE_HEADER_ISSUE_STATE "col_SAPState"
Schnittstelle der Funktion
int CdiStandardStatusFrame::getColumnByHeader (QString header)
Aufruf der Funktion
int column4State = getColumnByHeader(tr(CFG_TABLE_HEADER_ISSUE_STATE));
In der Funktion lasse ich mir den Header ausgeben, dieser ist nicht internationalisiert, also schein
getColumnByHeader(tr(CFG_TABLE_HEADER_ISSUE_STATE));
nicht zu funktionieren
hat jemand eine Idee?grisu1972 hat geschrieben:ich habe es (meiner Meinung nach) genau so gemacht, es funktioniert bei mir aber nicht:
In der Headerdatei
#define CFG_TABLE_HEADER_ISSUE_STATE "col_SAPState"
Schnittstelle der Funktion
int CdiStandardStatusFrame::getColumnByHeader (QString header)
Aufruf der Funktion
int column4State = getColumnByHeader(tr(CFG_TABLE_HEADER_ISSUE_STATE));
In der Funktion lasse ich mir den Header ausgeben, dieser ist nicht internationalisiert, also schein
getColumnByHeader(tr(CFG_TABLE_HEADER_ISSUE_STATE));
nicht zu funktionieren
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Ich würde mal sagen - es ist nicht internationalisiert weil es nicht übersetzt wurde / es von lupdate nicht gefunden wird. lupdate kann ja nicht wissen was Du übersetzen willst - es findet nur strings innerhalb von tr() (und noch ein paar andere denke ich, siehe Doku)
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Hallo Leute,
ganz offiziell:
ich bin eine Knackwurst, Ihr hattet natürlich recht
ich habe ZWEI Dateien:
- einmal die UI Datei mit der GUI und der Tabelle
- meine Klasse
-> daher auch der Fehler das es in der einen internationalisiert wurde und in der andren nicht.
Jetzt habe ich das Problem das ich an zwei Stellen in den Sprachdateien den Key nachpflegen muss, geht das auch einfacher?
Grüsse Carsten
ganz offiziell:
ich bin eine Knackwurst, Ihr hattet natürlich recht
ich habe ZWEI Dateien:
- einmal die UI Datei mit der GUI und der Tabelle
- meine Klasse
-> daher auch der Fehler das es in der einen internationalisiert wurde und in der andren nicht.
Jetzt habe ich das Problem das ich an zwei Stellen in den Sprachdateien den Key nachpflegen muss, geht das auch einfacher?
Grüsse Carsten