2013-05-29 117 views
0

我正在維護一個使用Delphi 5 Professional German構建的舊的Delphi 5程序。是否有Delphi 5編譯器(dcc32.exe)或IDE開關/選項來更改可執行文件的語言?

問題是,所創建的可執行文件的所有對話框和錯誤消息都以德文顯示,即使在英文版Windows中,位置設置爲美國或英國等。

我是否需要英文版的Delphi 5 Pro或者是否有配置選項/編譯器開關/選項來更改「輸出語言」?

我不是在談論IDE語言,我已經知道我可以通過刪除Delphi安裝目錄中的所有* .DE文件來將其改回英文。

例子:

enter image description here

enter image description here

enter image description here

更新: 基於我去尋找在源目錄德國的消息的評論 - 我立刻發現了幾個文件:

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 

我希望有一個更簡單的方法。不要以爲我要走這條路......

+1

你看到的是可能在'Consts.pas'單元中定義的字符串常量(至少在Delphi 7中是如此)。雖然我不知道是否可以修改此文件並重新構建Delphi 5 VCL。 – TLama

+0

RTL? Consts.pas文件在哪裏存在? – Zalumon

+1

在Delphi5安裝源文件庫中的子庫中。 –

回答

1

在工具的bin目錄中有「BDSSetLang.exe」 如果你在安裝時指定了德文和英文,你可以在那裏更改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

+0

我不想改變對話框標題,我只想有默認的英文文本。 – Zalumon

+0

再次閱讀我的答案。我發佈了2個解決方案第一個將解決你的問題 – Hidden

+0

是的,我跳過你的第一句話,對不起。我會研究它。 – Zalumon

5

這些文本內容以單位Consts.pas定義爲resourcestring

那些resourcestring可以通過一些庫在飛行更改。無需更改RTL源代碼!

查看this question about localization僅供參考。

我推薦GNU Gettext for Delphi,它可以與你的Delphi 5版本一起工作,並且有一套預先翻譯的標準Delphi字幕文本供大多數使用的語言使用。

編輯:如果你只是想恢復到英語VCL值,應該有默認的英語的.pas和.dcu文件在你原來的Deplhi 5張CD,在Extra\VCLUS文件夾中。用這些覆蓋你的本地文件。這些文件已經在預期的子文件夾佈局中設置。

+0

我不想翻譯成其他語言,我想回到默認的英文文本。 – Zalumon

+1

然後從英語Delphi獲取這些* const.pas文件,並替換德語本地化的文件,如果您的程序不使用BPL,而是使用單一的EXE。或者你可以使用可以在運行時更改內存中的'resourcetring'的庫。像VgLib1或GetText一樣,然後添加那些令你煩惱的線條的翻譯。 –

+0

如果我有英文德爾福,我只需要安裝它,我的問題就會解決。我只是想知道,如果我必須去買一個英文德爾福,或者如果有可能以某種方式配置我的德語德爾福回到英語(通常國際化的程序英語仍然在某處)。 – Zalumon

相關問題