Programa çoklu dil seçeneği eklemek istiıyorum.Bunun için internetten araştırma yaptım.Bu konuda bir tavsiyeniz var mı?Programın tek exe olarak çalışması gerekiyor.mesela bir kullanıcı aynı exe nin türkçesini kullanırken ağdaki diğer bir kullanıcı ingilizce seçeneğini seçerek aynı exe yi ingilizce olarak kullanabilmeli.
Yada aşağıdaki konuda yardımcı olursanız belki en doğru yolu bulmam daha basit olabilir.
Resourcestring hakkında detaylı bilgiye ihtiyacım var.ama resourcestring hakkında herşeyi bilmem gerekiyor.
Yada Delphideki project\option version info tabındaki language seçeneği hakkında bilgiye ihtiyacım var.Yani bu değeri runtime bilirmiyiz. Değiştirince ne olur.Aslında adı üstünde info ama oradaki Local Id beni kuşkulandırdı.
Teşekkürler.
Resourcestring
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
cevap yazıcaktım ama pek vakit bulamadım.
bizim programlarda açılışta bir ini dosyasından dil dosyasının adını okuyor, english.lng, turkce.lng gibi sonra bunu kendi içinde parse edip her formun createinde artık nerede kullanılacak ise orada caption ise caption atama yapılıyor. geçenlerde tüm bu textleri unicode a çevirdim biraz uğraştırdı
tüm vcl bileşenleri tnt bileşenleri ile değiştirdim (notepad ile find replace
)
ortalık biraz karışık olduğu için kodda kimi yerleri sildim, manasız şeyler olabilir.
eğer unicode değilse fazla bir probleminiz yok sadece her formda caption yazılarını atayan fonksiyonlar yazacaksınız.
mesajları düzenliyeceksiniz.
vt de bol miktarda calculated alan kullanacaksınız. (ben firebirdde computed kullandım epey kolaylaştırdı
)
bizim programlarda açılışta bir ini dosyasından dil dosyasının adını okuyor, english.lng, turkce.lng gibi sonra bunu kendi içinde parse edip her formun createinde artık nerede kullanılacak ise orada caption ise caption atama yapılıyor. geçenlerde tüm bu textleri unicode a çevirdim biraz uğraştırdı

tüm vcl bileşenleri tnt bileşenleri ile değiştirdim (notepad ile find replace

Kod: Tümünü seç
with Txt^ do
begin
{menu items}
ItemDosya.Caption := Messages[1];
ItemParola.Caption := Messages[2];
ItemArsiv.Caption := Messages[3];
Kod: Tümünü seç
WideMessageDlg(Txt^.Messages[59], mtError,[mbOK], 0);
ortalık biraz karışık olduğu için kodda kimi yerleri sildim, manasız şeyler olabilir.
Kod: Tümünü seç
function TLanguageForm.ReadTextFile(LangFileName : widestring): Boolean;
var sActiveLine :widestring;
iSatirNo,iErr : integer;
iLastSection : integer;
iLastSectionStartPos :integer;
UnicodeFileTxt: TTntStrings;
begin
Result := False;
UnicodeFileTxt := TTntStringList.Create;
UnicodeFileTxt.Clear;
try
if FileExists(LangFileName) then
UnicodeFileTxt.LoadFromFile(LangFileName)
else
begin
MessageDlg('Cannot Find Language File!!!',mtError,[mbOk],0);
Exit;
end;
with LocalTxt^ do
begin
for iSatirNo:= 0 to UnicodeFileTxt.Count-1 do
begin
sActiveLine := UnicodeFileTxt[iSatirNo];
if (Utf8Encode(sActiveLine)='') OR
(Utf8Encode(sActiveLine)=' ') OR
(Copy(Utf8Encode(sActiveLine),1,2) = '//') then
System.Continue;
Val((Copy(Utf8Encode(sActiveLine),1,3)),iLastSectionStartPos,iErr);
if iErr<>0 then System.Continue;
Delete(sActiveLine,1,5);
// TUM TEXTLERI KARISIK BISEYLER YAP
//sActiveLine:= UTF8Decode('太阳姚明再战仇敌小斯,小斯,1');
Messages[iLastSectionStartPos] := sActiveLine;
end; // for iSatirNo
end; {with Txt^}
finally
FreeAndNil(UnicodeFileTxt);
end;
Result := True;
end;
{------------------------------------------------------------------------------}
mesajları düzenliyeceksiniz.
vt de bol miktarda calculated alan kullanacaksınız. (ben firebirdde computed kullandım epey kolaylaştırdı

.-.-.-.-.-.-.-. ^_^