10 Maret 2009

Lokalisasi Message Dialog pada Delphi (Alternatif)

Pada bagian sebelumnya sudah dijelaskan cara untuk lokalisasi Delphi dialog dengan mengedit file “Consts.pas” bawaan dari Delphi. Cara tersebut sebetulnya kurang dianjurkan, dan ada cara lain yang lebih elegan. Misalkan kita ingin mengganti kata-kata pada dialog yang pakai bahasa Inggris tersebut dengan bahasa Jawa seperti yang diingini bos pemilik warung Jawa. Cara ini tidak mengedit file “Consts.pas”, tapi kita membuat unit sendiri dan menerjemahkan kata-kata yang diinginkan. Skrip contoh dibawah ini bisa digunakan.
unit BosoJowo;

interface

implementation

uses Windows, Consts;

procedure HookResourceString(aResStringRec: PResStringRec; aNewStr: PChar);
var
  OldProtect: DWORD;
begin
  VirtualProtect(aResStringRec, SizeOf(aResStringRec^), PAGE_EXECUTE_READWRITE, @OldProtect);
  aResStringRec^.Identifier := Integer(aNewStr);
  VirtualProtect(aResStringRec, SizeOf(aResStringRec^), OldProtect, @OldProtect);
end;

initialization
  HookResourceString(@SMsgDlgConfirm, 'Takon');
  HookResourceS
tring(@SMsgDlgYes, 'Iyo');
  HookResourceString(@SMsgDlgNo, 'Ora');
  HookResourceString(@SMsgDlgCancel, 'Gak Sido');

end.
Unit diatas bisa ditambahkan pada project yang kita buat. Unit tersebut cukup ditambahkan di file .dpr, tidak perlu ditambahkan di tiap form atau unit. Dengan kode diatas jika dari Delphi kita memberikan perintah:
MessageDlg('Simpen setelane?', mtConfirmation, [mbYes, mbNo, mbCancel], 0);
Maka outputnya akan seperti dibawah ini.








Dengan begini bos Suparno pun tidak perlu pusing belajar bahasa asing lagi untuk memakai program komputer yang diinginkannya.

1 komentar:

  1. Apik bangeth tulisane, koe sekolahe neng endhi tho?
    heheh. matur nuwun juragan. :)

    BalasHapus