messagebox: englische texte
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
messagebox: englische texte
Bei der messagebox sind in der Windows-Version (=WIN8) die Buttons englisch beschriftet: Yes und No. Obwohl es eine deutsche WIN-Installation ist.
(in der Linux-Variante ist es korrekt auf deutsch)
Kann man das irgendwo einstellen ?
(in der Linux-Variante ist es korrekt auf deutsch)
Kann man das irgendwo einstellen ?
-
- Beiträge: 6910
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: messagebox: englische texte
So was wurde da auch diskutiert, scheint ein etwa kompliziertere Sache zu sein.
http://www.lazarusforum.de/viewtopic.ph ... sch#p76018
Folgendes, kommt bei mir in deutsch, unter WinXP Lazarus 1.6
http://www.lazarusforum.de/viewtopic.ph ... sch#p76018
Folgendes, kommt bei mir in deutsch, unter WinXP Lazarus 1.6
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
MessageBox(0, 'Leider ein Fehler' + LineEnding +
'Programm wird beendet !', 'Fehler !', MB_ICONSTOP or MB_YESNO);
end;
Wie hast du dies unter Linux hingekriegt, dafür wird bei mir die Unit windows verlangt.(in der Linux-Variante ist es korrekt auf deutsch)
Zuletzt geändert von Mathias am Fr 19. Aug 2016, 20:37, insgesamt 1-mal geändert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: messagebox: englische texte
Eigentlich gibt es genügend Einträge über Translations hier im Forum. Wie auch immer, verkürzt geht das so:
Du erstellst ein Unterverzeichnis in deinem Projektverzeichnis mit dem Namen "languages". Dieses kannst du auch für eigene Resourcestrings nutzen (Google: i18n).
In dieses Verzeichnis kopierst du entweder das komplette languages - Verzeichnis der lcl oder aber mindestens die Dateien: von z.B. C:\lazarus\lcl\languages.
Achtung, dieses Verzeichnis mit allen zu unterstützenden Sprachen (.po - Files) musst du so mit deinem Programm verteilen.
Nun noch folgender Code
Siehe:
http://www.lazarusforum.de/viewtopic.php?f=5&t=182
Du erstellst ein Unterverzeichnis in deinem Projektverzeichnis mit dem Namen "languages". Dieses kannst du auch für eigene Resourcestrings nutzen (Google: i18n).
In dieses Verzeichnis kopierst du entweder das komplette languages - Verzeichnis der lcl oder aber mindestens die Dateien:
Code: Alles auswählen
lclstrconsts.po
lclstrconsts.de.po
Achtung, dieses Verzeichnis mit allen zu unterstützenden Sprachen (.po - Files) musst du so mit deinem Programm verteilen.
Nun noch folgender Code
Code: Alles auswählen
uses ..., Translations;
...
procedure TForm1.FormCreate(Sender: TObject);
var
PODirectory: String;
begin
PODirectory := Application.Location + 'languages' + DirectorySeparator;
TranslateUnitResourceStrings('LCLStrConsts', PODirectory + 'lclstrconsts.%s.po', 'de', '');
MessageDlg('Title', 'Text', mtInformation, [mbOk, mbCancel, mbYes], 0); // sollte jetzt deutsche Beschriftungen haben
end;
http://www.lazarusforum.de/viewtopic.php?f=5&t=182
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 6910
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: messagebox: englische texte
Jetzt sehe ich vielleicht durch, der Thread-Ersteller meinte wahrscheinlich Application.MessageBox, dann sieht dies einiges anders aus, da dies auch unter Linux geht.
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject); // Braucht zwingend die Unit Windows, dafür kommt es in der Spache des Betriebsystemes.
begin
MessageBox(0, 'Leider ein Fehler' + LineEnding +
'Programm wird beendet !', 'Fehler !', MB_ICONSTOP or MB_YESNO or MB_HELP);
end;
procedure TForm1.Button1Click(Sender: TObject); // Ist Systemunabhängig, dafür aber englisch.
begin
Application.MessageBox('Leider ein Fehler' + LineEnding +
'Programm wird beendet !', 'Fehler !', MB_ICONSTOP or MB_YESNO or MB_HELP);
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: messagebox: englische texte
Zum einen: ich habe application.messagebox gemeint. Dass es noch eine andere messagebox gibt, wusste ich nicht.
Das Ganze scheint mir etwas komplizierter zu sein, das hatte ich nicht erwartet.
Da mache ich lieber einen modalen Dialog, welcher den Text für die Frage und die beiden Buttons "Ja" und "Nein" enthält.
Das Ganze scheint mir etwas komplizierter zu sein, das hatte ich nicht erwartet.
Da mache ich lieber einen modalen Dialog, welcher den Text für die Frage und die beiden Buttons "Ja" und "Nein" enthält.
Re: messagebox: englische texte
Ist eigentlich egal, da das oben geschriebene Vorgehen für alle in den in den .po- Files vorhandenen ResourceStrings funktioniert.malabarista hat geschrieben:ich habe application.messagebox gemeint
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 99
- Registriert: Do 23. Dez 2010, 19:10
- OS, Lazarus, FPC: Windows 10/11 32/64bit, L 3.2.0 32/64bit, FPC 3.2.2 32/64bit
Re: messagebox: englische texte
Hallo,
falls du keine Lokalisierung brauchst, kannst du es auch mit QuestionDLG machen.
mit Frage und Antwort:
nur als Message
So habe ich es gelöst.
falls du keine Lokalisierung brauchst, kannst du es auch mit QuestionDLG machen.
mit Frage und Antwort:
Code: Alles auswählen
if QuestionDlg('Wartungen Datum ändern', 'Sollen alle angezeigten Wartungen zurückgemeldet und das Datum entsprechend dem Intervall angepasst werden?', mtConfirmation, [mrYes, 'Ja', mrNo, 'Nein'], 0) = mrYes then
Code: Alles auswählen
QuestionDlg('Wartung löschen', 'Es gibt keine Daten zu löschen.', mtWarning, [mrYes, 'Ok'], 0);
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: messagebox: englische texte
QuestionDLG ist ein guter Tipp. Ich brauche keine Lokalisierung, nur unbedingt alles auf deutsch.
Dankeschön.
Dankeschön.
-
- Beiträge: 6910
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: messagebox: englische texte
Den kannte ich nicht, das muss ich mir merken.
Damit kann man den Anwender zur Verzweiflung bringen:

Damit kann man den Anwender zur Verzweiflung bringen:

Code: Alles auswählen
QuestionDlg('Wartungen Datum ändern', 'Sollen alle angezeigten Wartungen zurückgemeldet und das Datum entsprechend dem Intervall angepasst werden?',
mtConfirmation, [mrLast, 'Letzte', mrYes, 'Ja', mrNo, 'Nein', mrOk, 'Ok', mrCancel, 'Abbruch', mrIgnore, 'Ingnorieren', mrAbort, 'Fort', mrNoToAll, 'Nein-Alle', mrYesToAll, 'Ja-Alle'], 0);
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot