tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
2388
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    jupp2oo8 jupp2oo8 ist offline Mitglied Bronze
    Registriert seit
    Jan 2008
    Beiträge
    43
    Hey Leute,
    mein Programm soll eher für englischsprachige Personen sein. Wenn ich aber "Fehlermeldungs-Fenster" (MessageDialogs) verwende o.ä. dann ist die Überschrift ja immer noch auf deutsch, was natürlich so nicht sein soll.

    Oder ist es automatisch so, dass zB auf einer englischen Windows-Version die Hilfe-/Fehlermeldungsfenster dann in englischer Sprache erscheinen?

    Oder kann ich meinem Main Formular irgendwie "sagen", dass es bitte auf Englisch sein soll
    Geändert von jupp2oo8 (26.03.08 um 13:31 Uhr)
     

  2. #2
    Registriert seit
    Mar 2004
    Beiträge
    441
    Also diesbezüglich habe ich da was in meinem Delphi-Projekt, sollte aber adaptierbar sein, da der CBuilder ja auch die VCL nutzt. Genau da liegt nämlich die Crux. In der VCL sind solche Resourcestrings fest verdrahtet und werden auch bei Lokalisierungen nicht ersetzt. Die Lösung, die ich hier habe (ich glaube, die habe ich damals von Torris Delphiseiten übernommen), besteht darin, das entsprechende Message-Fenster "manuell" zu bauen und noch vor der Anzeige die Komponenten des Fensters abzugrasen und die Beschriftungen entsprechend zu verändern:

    Code :
    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
    37
    38
    39
    40
    41
    42
    43
    
    {*-----------------------------------------------------------------------------
      Eigene MessageDlg-Routine
     
      Warum eine eigene MessageDlg-Routine? Die normale Delphi-Routine compiliert
      die Buttons der dynamischen Dialogfenster mit FESTEN Strings. Diese sind
      auch nicht mit dem Ressourcenmanager anpassbar, da sie in den VCL-Klassen
      liegen und nicht in irgendeiner Komponente. Leider werden die Button-
      Beschriftungen auch nicht vom Betriebssystem und dessen Sprache beein-
      flusst. Deswegen erzeugt diese Routine auch ein Dialogfeld, schreibt jedoch
      die Beschriftung der Buttons mit Resourcestrings, die in der Data.Globals
      hinterlegt sind => Lokalisierung dynamischer Dialogfenter.
     
      @param Msg Text, der innerhalb des Dialogfensters angezeigt werden soll
      @param Typ Art des Meldungsfensters (Information, Warning etc.)
      @param Buttons Die Buttons, die im Fenster angezeigt werden sollen
      @param HelpCtx Kontext für eine eventuell angebundene Hilfe
      @return Der Wert des angeklickten Buttons 
    -----------------------------------------------------------------------------*}
    function TMain.Message(const Msg: String; Typ: TMsgDlgType; Buttons:TMsgDlgButtons; HelpCtx: Longint): Word;
    var
      lComponent: TComponent;
      k: Integer;
    begin
      with CreateMessageDialog(Msg, Typ, Buttons) do
      begin
        // Alle Komponenten des Dialogs werden auf der Suche nach den Buttons durchlaufen
        for k := 0 to ComponentCount - 1 do
        begin
          lComponent := Components[k];
          // Jeder gefundene Button wird überprüft
          if lComponent is TButton then with TButton(lComponent) do
          // Zuweisung der jeweiligen Captions
          begin
            if UpperCase(Name) = 'YES' then Caption := rs_MAIN_DLG_YES;
            if UpperCase(Name) = 'NO' then Caption := rs_MAIN_DLG_NO;
            if UpperCase(Name) = 'OK' then Caption := rs_MAIN_DLG_OK;
            if UpperCase(Name) = 'CANCEL' then Caption := rs_MAIN_DLG_CANCEL;
          end;
        end;
     
        Result := ShowModal;
      end;
    end;

    Und in den rs_MAIN_DLG_... habe ich eben als Strings die jeweiligen Captions für die entsprechende Sprache hinterlegt.
     

  3. #3
    jupp2oo8 jupp2oo8 ist offline Mitglied Bronze
    Registriert seit
    Jan 2008
    Beiträge
    43
    Hm, danke für den Tipp, das muss ich mir mal genauer ansehen.
    Aber es könnte ja trotzdem ein Fehler im Programm auftreten, mit dem ich nicht rechne. Dann öffnet (bei mir der Borland C++ Builder 2007) ein Fenster mit einer Meldung, wo aber in der Titelzeile "Fehler" steht. Also er würde immer deutsch sprechen.

    Weiß jemand, ob auf einem englischen System dort "Error" stehen würde? Und bei allgemein gültigen Windows-Fehlermeldungen auch automatisch ein englischer Text?
    Ich glaub, jeder Fehler hat nämlich eine Nummer, und das System ordnet dann erst eine entsprechende Meldung zu.
     

  4. #4
    Registriert seit
    Mar 2004
    Beiträge
    441
    Ausprobiert habe ich es nicht, aber hast du evtl. ein XP, bei dem du das englische Sprachpaket installieren und aktivieren kannst? Vielleicht lässt sich so rauskriegern, ob Exceptions dann auch in Englisch angezeigt werden. Ansonsten schau ich mal, ob ich ein englisches System auftreibe und teste es.
     

  5. #5
    jupp2oo8 jupp2oo8 ist offline Mitglied Bronze
    Registriert seit
    Jan 2008
    Beiträge
    43
    Also ich wüsste nicht, wo ich so was her kriegen sollte.
    Aber eigentlich müsste man so was doch irgendwo mal nachlesen können!
    AUßerdem kann ich mir auch nicht vorstellen, dass ich die erste bin, die dieses Problem hat...
     

Ähnliche Themen

  1. Sprache von Deutsch auf Englisch umstellen
    Von antiautomatic im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 9
    Letzter Beitrag: 23.01.09, 21:17
  2. InDesign 2.0 Sprache umstellen
    Von Pixel-Schubser im Forum Desktop Publishing (DTP)
    Antworten: 0
    Letzter Beitrag: 11.06.07, 09:53
  3. Seite in Sprache umstellen
    Von Lenox im Forum PHP
    Antworten: 12
    Letzter Beitrag: 23.05.07, 18:26
  4. Photoshop von Englisch auf Deutsch umstellen?
    Von fabi9the9real im Forum Photoshop
    Antworten: 4
    Letzter Beitrag: 25.09.05, 15:02
  5. Sprache umstellen?
    Von Sicaim im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 1
    Letzter Beitrag: 18.01.05, 10:21