0

我正在维护一个使用 Delphi 5 Professional German 构建的旧 Delphi 5 程序。

问题是创建的可执行文件的所有对话框和错误消息都以德语显示,即使在位置设置为美国或英国之类的英语 Windows 上也是如此。

我需要英文版的 Delphi 5 Pro 还是有配置选项/编译器开关/选项来更改“输出语言”?

我不是在谈论 IDE 语言,我已经知道可以通过删除 Delphi 安装目录中的所有 *.DE 文件将其改回英文。

例子:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

更新:根据评论,我在 Source 目录中查找德语消息 - 我立即找到了几个文件:

Source/Rtl/Sys/comconst.pas
Source/Rtl/Sys/sysconst.pas
Source/Rtl/Sys/comconst.pas
Source/Vcl/bdeconst.pas
Source/Vcl/comstrs.pas
Source/Vcl/consts.pas
Source/Vcl/dbconsts.pas
Source/Vcl/ib.pas
Source/Vcl/oleconst.pas

我希望有一个更简单的方法。不要以为我会走这条路……

4

2 回答 2

5

这些文本内容在单元中定义Consts.pasresourcestring.

这些resourcestring 可以通过一些库即时更改。无需更改 RTL 源代码!

请参阅有关本地化的此问题以获取参考。

我推荐GNU Gettext for Delphi,它适用于您的 Delphi 5 版本,并且有一组用于大多数使用语言的标准 Delphi 字幕的预翻译文本。

编辑:如果您只想恢复到英文 VCL 值,则在原始 Deplhi 5 CD 的Extra\VCLUS文件夹中应该有默认的英文 .pas 和 .dcu 文件。只需用这些覆盖您的本地文件。文件已在预期的子文件夹布局中设置。

于 2013-05-29T09:52:52.333 回答
1

在工具“BDSSetLang.exe”的bin目录下如果你在安装时指定了德语和英语,你可以在那里更改IDE语言、库等语言。

所以应该可以解决问题。

或者

尝试这个。

//...bei einem Message Dialog die Beschriftungen der Buttons ändern
function xMessageDlg(const Msg: string; DlgType : TMsgDlgType;
                     Buttons : TMsgDlgButtons; Captions: array of string) : Integer;
var
  aMsgDlg : TForm;
  CaptionIndex,
  i : integer;
  dlgButton : TButton; // uses stdctrls
begin
  // Dlg erzeugen
  aMsgDlg := CreateMessageDialog(Msg, DlgType, buttons);
  CaptionIndex := 0;
  // alle Objekte des Dialoges testen
  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;
      // Beschriftung entsprechend Captions-array ändern
      dlgButton.Caption := Captions[CaptionIndex];
      Inc(CaptionIndex);
    end;
  end;
  Result := aMsgDlg.ShowModal;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
var
  erg : integer;
begin
  erg := xMessageDlg('Hier steht der gewünschte Text,' + chr($0D) + 'die Buttons sind geändert',
                      mtConfirmation,
                      [mbYes, mbNo, mbCancel], // benutzte Schaltflächen
                      ['Alles', 'Teil','Abbrechen']); // zugehörige Texte
  case erg of // zugehörige Antworten
    mrYes : ShowMessage('"1" clicked');
    mrNo : ShowMessage('"2" clicked');
    mrCancel: ShowMessage('"3" clicked');
  end; // of case
end;

来源: http: //www.delphipraxis.net/3307-caption-der-buttons-yes-no-im-dialog-messagedlg-aendern.html

于 2013-05-29T09:30:10.237 回答