http://www.delphiturkiye.com/index.php?page=mltool.htm
şu sayfada bulunan çoklu dil desteği açıklamasını geliştirmek istiyorum.
2 saat uğraştıktan sonra programımda çoklu dil desteğini yapılandırmış bulunuyorum.
Bunun için ilk önce dil.rc dosyası oluşturup içine;
Kod: Tümünü seç
STRINGTABLE
{
100, "Türkçe"
101, "İşlem Tarihi"
102, "Makbuz No"
103, "Kasa İşlemi"
104, "Cari Hesap"
105, "C. Hes. Ekle"
10100, "English"
10101, "Date"
10102, "Number"
10103, "Manage"
10104, "Create"
10105, "Add"
}
rc dosyamızı bu tool ile RES dosyası yapmak zorundayız. Onuda şu şekilde yapıyoruz;
yine komut satırında;
Kod: Tümünü seç
brcc32 c:\dil.rc -32
sonra projemizde bulunan caption özellikli componentlere sırasıyla TAG özelliklerini 100 ile başlıyarak sayı veriyoruz. (Ben 100 ile başladım stringtable hazırlarken. İstediğiniz sayıdan başlıyabilirsiniz, tabi bunun içinde stringtable ona göre yazmanız lazım),, forum1 e 100, label1 e 101 vs.
sonra uses satırına "typinfo" ekliyoruz;
{$R *.dfm} satırının altına {$R dil.res} ekliyoruz;
bununda altına şu prosedürleri eklioyruz;
Kod: Tümünü seç
procedure SetupComponentLanguage(hComponent:TComponent);
var
hBuffer : Array[1..512] of Char ;
PropInfo: PPropInfo ;
lang:integer;
begin
[b]lang:=0;[/b] [color=blue]{bu sayıyı değiştirirseniz dil değişir.}[/color]
if (hComponent.tag > 0) then begin { is it ready for translation ? }
PropInfo := GetPropInfo(hComponent.ClassInfo, 'Caption');
if Assigned(PropInfo) then begin
LoadString(hInstance, hComponent.tag + (lang * 10000),@hBuffer,sizeof(hBuffer)) ;
SetStrProp(hComponent,PropInfo,string(hBuffer)) ;
end;
end ;
end;
procedure SetupLanguage(hRootComponent: TComponent);
var
cCount : Integer ;
begin
for cCount:=0 to hRootComponent.ComponentCount -1 do begin
if (hRootComponent.Components[cCount].ComponentCount > 0) then begin
SetupComponentLanguage(hRootComponent) ;
SetupLanguage(hRootComponent.Components[cCount]);
end
else begin
SetupComponentLanguage(hRootComponent.Components[cCount]) ;
end ;
end ;
end ;
en son olarak da formun create eventına
SetupLanguage(Application);
SetupLanguage(self);
ekliyoruz. Lang değişkenini 1 yaparsanız ingilizce, 0 yaparsanız türkçe olur.
özellik olarak stringtable da 100 ile başlıyanlar türkçe 10000 ile başlıyanlar ingilizce olur. Yeni bir dil eklemek isterseniz 20000 ile başlaması gerekir.
Hepinize kolay gelsin,,
yLmZ
Not: Yazı tamamen bana aittir, başka forumlarda ismimin yazılması halinde eklenebilir.