我正在维护一个使用Delphi 5 Professional German构建的旧Delphi 5程序。
问题是所创建的可执行文件的所有对话框和错误消息都以德语显示,即使在位置设置为美国或英国的英语Windows上也是如此。
我是否需要英文版的Delphi 5 Pro或是否有配置选项/编译器开关/选项来更改“输出语言”?
我不是在谈论IDE语言,我已经了解到我可以通过删除Delphi安装目录中的所有* .DE文件将其更改回英语。
示例:
更新: 根据我在源目录中查找德语消息的评论 - 我立即找到了几个文件:
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
我希望有一种更简单的方法。不要以为我会走这条路......
答案 0 :(得分:5)
这些文字内容在单位Consts.pas
中定义为resourcestring
。
这些resourcestring
可以通过一些库动态更改。无需更改RTL源代码!
请参阅this question about localization以获取参考。
我建议使用适用于您的Delphi 5版本的GNU Gettext for Delphi,并为大多数使用的语言提供一组标准Delphi字幕的预翻译文本。
编辑:如果您只想恢复到英文VCL值,则原始Deplhi 5 CD中的{{1}应该有默认的英文.pas和.dcu文件}文件夹。只需用这些文件覆盖您的本地文件即可。这些文件已在预期的子文件夹布局中设置。
答案 1 :(得分:1)
工具“BDSSetLang.exe”的bin目录中有 如果您在安装德语和英语期间指定了,则可以在那里更改IDE语言,库等语言。
所以应该可以解决问题。
OR
试试这个。
//...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