Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Wie bekomme ichd die Message Dialoge auf Englisch?


TheNameless - So 04.02.07 16:20
Titel: Wie bekomme ichd die Message Dialoge auf Englisch?
Hab ein Problem, habe Delphi das natürlich auf Deutsch, nun will ich aber englische Programme programmieren, aber Dialoge wie MessageDlg, InputQuery kann ich nicht anpassen. Leider geht Delphi dabei das auch nicht nach der Sprache des Betriebsystems.
Habs bis jetzt dadurch gelöst indem ich nach dem Compilieren, den Part mit einem Resource Editor nachbearbeitet habe, das ist aber ziehmlich nervig, gibts da auch eine andere Lösung?
Suchen half leider nichts :/


Marco D. - So 04.02.07 16:27

Weiß nicht, ob dir das weiterhilft, aber ich bin der Meinung, mal gehört zu haben, dass die Buttons des MessageDialogs in der Sprache von Windows angezeigt werden. So findet man z.B. in englischsprachigen Installationen Dialoge mit englischem Text und deutschen Buttons. ;)


TheNameless - So 04.02.07 16:29

Ja, dachte ich auch, aber es ist leider nicht so :(

Edit: Es steht immer das drin, was in der Resource steht, also man kann mit nem Ressourcen Editor das Ja in ein Jopp ändern...oder so... (Also ist keine typische Delphi Ressource)


HelgeLange - Mo 05.02.07 16:37

Das Problem bei dir ist, dass Du zwar Dein Windows solange auf andere Ländereinstellungen setzen, wie du lustig bist, das ändert aber nichts an den files in Deiner Windows-installation. All Deine Menüeinträge von Windows etc bleiben trotzdem in deutsch...

Ich lebe in Venezuela, habe einen Computer mit englischem Windows, einen mit spanischem und einen mit Finnisch-Englischem Windows (frag lieber ned, hehe)... Meine von Delphi angezeigten Standard-Windows-Messageboxen haben dann ein "yes no cancel", "sí, no, Cancelar" bzw. "kyllä ei .."

Also mach Dir keine Sorgen um Dein späteres Program, diese Sachen werden in der jeweiligen Sprache der Windows-installation angezeigt (nicht der country settings!)

Hoffe, geholfen zu haben


Marco D. - Mo 05.02.07 16:43

Hatte ich doch Recht. :P


crowley - Di 06.02.07 16:43

Hallöli

falls es aber möglich sein soll, auch auf einem englischen windows, niederländische button beschriftungen im MessageDlg zu verwenden, kannst du folgende Funktion verwenden:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
function MessageDlgEx(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; Captions: array of string;
  HelpCtx: Longint) : integer;
var
  aMsgDlg      : TForm;
  i            : integer;
  dlgButton    : TButton;
  CaptionIndex : integer;
begin
                                                 { Dialog erzeugen             }
  aMsgDlg      := CreateMessageDialog(Msg, DlgType, Buttons);

  try
    CaptionIndex := 0;
                                                 { Über alle Objekte auf dem   }
                                                 { Dialog iterieren            }
    for i := 0 to aMsgDlg.ComponentCount - 1 do begin
                                                 { Wenn es ein Button ist,     }
                                                 { dann ...                    }
      if (aMsgDlg.Components[i] is TButton) then begin
        dlgButton := TButton(aMsgDlg.Components[i]);
        if CaptionIndex > High(Captions) then
          break;
                                                 { ... schreibe Beschriftung   }
                                                 { entsprechend Caption- Array }
        dlgButton.Caption := Captions[CaptionIndex];
        inc(CaptionIndex);
      end;
    end;

    aMsgDlg.HelpContext := HelpCtx;
    result              := aMsgDlg.ShowModal;
  finally
    aMsgDlg.Free;
  end;
end;


Gruss,
Crowley


TheNameless - Fr 01.06.07 20:18

@crowley
Danke, könnte ne möglichkeit sein.

Nene, ich hab ja nicht die Ländereinstellungen geändert sondern diesen Fehler hat mir ein User meines Programms gemeldet. Und ich kann es bestätigen, wenn ich im Ressourceneditor (z.B. exescope, ResHack) bei den Strings das Ja in ein blub umänder, steht in der Dialogbox anstatt Ja blub.