Resourcestring

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ylmz
Üye
Mesajlar: 110
Kayıt: 18 Mar 2005 02:32
Konum: Antalya

Resourcestring

Mesaj gönderen ylmz »

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.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

değişik seçenekler çok konuşuldu forumda. :ara Arama yapmayı denediniz mi?

Kolay gelsin.
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

Hocam Ben Bunu tüm dil olarak değişecek nesneler veya şunu bunu farklı bir dll de tutup hangisini seçerlerse onu yüklüyorum...Ama Registery ile de yapılabilir heralde tam bilemiyorum...Ama ben böyle yapıyorum dll ile...sende böle yapabilirsin muhtemelen...Kolay Gelsin
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

yada setup programları gibi dillere göre mesaj ve açıklamaların olduğu farklı dosyaların olur ve formun yüklenmeden önce dosyadan okuttuğun sabitleri etiket ve açıklamalara yazarak değiştirirsin.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

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 :D )

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('太阳姚æ˜&#142;å†&#141;战仇敌å°&#143;æ–¯,å°&#143;æ–¯,1');
        Messages[iLastSectionStartPos]          := sActiveLine;
      end; // for iSatirNo
   end; {with Txt^}

    finally
       FreeAndNil(UnicodeFileTxt);
    end;
Result := True;
end;
{------------------------------------------------------------------------------}
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ı :) )
.-.-.-.-.-.-.-. ^_^
Cevapla