Hallo Aike,
ich habe das bei einem meiner (kleineren) Projekte so gelöst:
1. Für jede Sprache eine Ressource erstellen
Beispiel:
Delphi-Quellcode:
STRINGTABLE
{
100, "&Datei"
101, "&Beenden"
102, "&Info über"
... usw.
}
Speichern unter z.B. DEUTSCH.RS und danach mit brcc32 compilieren
Wie gesagt, das gleiche für alle anderen Sprachen.
2. Für jede Sprache
DLL erstellen:
Beispiel:
Delphi-Quellcode:
library deutsch;
uses
SysUtils;
{$R DEUTSCH.RES}
begin
end.
Speichern unter z.B. deutsch.dpr, danach compilieren
Wiederum für jede Sprache ...
3. Einbinden in dein Programm:
Delphi-Quellcode:
private
sDLLName:
string;
hDLL: THandle;
function GetStringFromRes(iID: integer):
string;
procedure SprachAuswahl;
public
end;
implementation
{$R *.dfm}
function TForm1.GetStringFromRes(iID: integer):
string;
var
iCnt: integer;
szText:
array[0..29]
of char;
begin
iCnt := LoadString(hDLL, iID, szText, SizeOf(szText)-1);
if iCnt > 0
then GetStringFromRes := StrPas(szText)
else GetStringFromRes := '
Kein Eintrag';
end;
procedure TForm1.SprachAuswahl;
begin
// bei Sprache deutsch:
SDLLName := '
DEUTSCH.DLL'
// bei Sprache englisch z.B.: SDLLName := 'ENGLISH.DLL'
hDLL := LoadLibrary(PChar(sDLLName));
// ab hier zuordnen, z.B.:
Datei.Caption := GetStringFromRes(100);
Beenden.Caption := GetStringFromRes(101);
// usw.
end;
// Zum Schluss (ev. im FormDestroy) nicht vergessen, die DLL wieder entladen
if hDLL <> 0
then FreeLibrary(hDLL);
Ich habe das Ganze mal irgendwann irgendwo gefunden und auf meine Bedürfnisse angepasst - funktioniert einwandfrei.
mfg
Herbert