gettext bileşeninin dil desteği???

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ardahan
Üye
Mesajlar: 144
Kayıt: 26 Oca 2004 05:17
Konum: İstanbul - Kocaeli - Ardahan
İletişim:

gettext bileşeninin dil desteği???

Mesaj gönderen ardahan »

merhabalar,

ben gettext bileşeni ile programıma çoklu dil desteği kazandırmaya çalışıyorum fakat bu bileşeni nasıl kullanacağımı çözemedim. sourceforge daki sitelerinde bir örnek var ama çok basit ve anlatılmamış. bilen arkadaşlardan yardım ederlerse sevinirim.

Ardahan Yılmaz
http://www.ardasoft.com
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam.

- Gettext bileşenini tarif eder misiniz ? Ne tip bir fonksiyonu var ?

- Bileşenlein Gettext diye Metod'ları var ama başlıbaşına ilk defa duydum.

- Bir programa çoklu dil deteği vermenin en basit yolu INI dosya formatındaki dil dosyası hazırlama şeklindedir. (Bkz.DivXTurk Programı).

- Formunuzdaki caption / text içerikli bileşenlere vereceğiniz ismi, INI dosya içinde klavuz olarak kullanarak, değerlerini formun create olayında uygulamaya sokarak istenen dilde destek verebilirsiniz.

- Bu şekilde desteği verilmemiş yeni bir dile dönüşüm çocuk oyuncağı olacaktır. Tek yapılması gereken İngilizce veya Türkçe dil dosyasının içindeki eşitlikleri destek verilecek yeni dile uygun bir şekilde güncellemek/değiştirmektir.

- Örneklemek gerekirse...
- Label1, Label2, Label3 bileşenleriniz olsun.
- Programa profesyonel bir hava kazandırmak için bu bileşenlerin isimlerini şu şekilde değiştirin. LB_001, LB_002, LB_003 gibi.

Notepad ile Turkish.INI dosyası oluşturun

Kod: Tümünü seç

...
[TITLES]
LB_001 = Merhaba...
LB_002 = Benim Adım
LB_003 = Muharrem
...
Notepad ile English.INI dosyası oluşturun

Kod: Tümünü seç

...
[TITLES]
LB_001 = Hello...
LB_002 = My name is 
LB_003 = Muharrem
...
- Programınız içinden formun onCreate olayında veya bir dil güncelleme procedure'ü oluşturarak dil değişikliğini hayata geçirin.

Kod: Tümünü seç

Var
  DilDosya : TINIFile;
  Dil : Integer;
Begin
  Dil := 1; // Program tasarımınızda bu şekilde statik değil, dinamik bir şekilde değişikliğini sağlamalısınız. Config.INI dosyası vs. uygulanabilir.
  // Dil = 1 olursa göreceğiniz gibi Türkçe
  // Dil = 2 olursa göreceğiniz gibi İngilizce olacaktır.
  // Dil dosyası bulunamaz veya istenen başlık bulunamazsa, program tasarımında verdiğiniz değer kalacaktır.
  Case Dil of
  1: DilDosya := TINIFile.Create('Turkish.INI');
  2: DilDosya := TINIFile.Create('English.INI');
  end; // case

// Create edildiğini garantileyin. Case'e girmezde hata verir...
  LB_001.Caption := DilDosya.ReadString('TITLES', 'LB_001', LB_001.Caption);  
  LB_002.Caption := DilDosya.ReadString('TITLES', 'LB_002', LB_002.Caption);  
  LB_003.Caption := DilDosya.ReadString('TITLES', 'LB_003', LB_003.Caption);
  DilDosya.Free; 
end;
- Şu anda Delphi kurulu bilgisayar yok, bir Internet Cafe'deyim. Syntax hatalarını düzeltirsiniz.

- Çalışmalarınızda başarılar...
Resim
Resim ....Resim
ardahan
Üye
Mesajlar: 144
Kayıt: 26 Oca 2004 05:17
Konum: İstanbul - Kocaeli - Ardahan
İletişim:

Mesaj gönderen ardahan »

Zaman ayırıp bunları yazdığın için teşekkür ederim. Ben daha önceden ini ve database file larlar bu işi yapmıştım fakat kullanıcı tarafından da genişletilebiliri bir multi language desteği için uğraşıyorum. Bahsettiğim bir bileşen herhangi bir property değil. Bileşeni http://dybdahl.dk/dxgettext/ adresinden indirebilirsin.

Eğer keşfedebilirsen yardımlarını beklerim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Ha. Anladım. Binary Patch ile dil değişkliği yapacaksınız. :idea:

- Verdiğiniz likten screenshot'lara baktım. Son kullanıcıya gönderilmek üzere Patch file oluşturma ile ilgili bir bilgiye de rastlamadım. Siz gördünüz mü. :?:

- Sanıyorum mevcut Executabe program içinden (Delphi ve C+ gibi programlama dilleriyle yapılnalara göre hazırlanmış) Resource String değerlerini okuyup, PopUp, Listeler, Hint vs. herşeyi DelphiIDE gibi karşınıza getiriyor. Siz de her dil için farklılığı giriyorsunuz, bu da PO şeklinde bu farklılığı kaydedip, istenen anda bunun exe'ye işlenmesini sağlıyor. :idea:

- Son kullanıcıya sadece bu değişikliği içeren bir dosya batch işlem vs. bahsedilmiyor. Ankara'ya dönünce tekrar bakarım ama ben şahsen beğenmedim. :?
Resim
Resim ....Resim
ardahan
Üye
Mesajlar: 144
Kayıt: 26 Oca 2004 05:17
Konum: İstanbul - Kocaeli - Ardahan
İletişim:

Mesaj gönderen ardahan »

ya da tüm dillerin bittiğinden emin iseniz onları exe file içine bind ediyor. Dediğiniz gibi POEdit diye bir programla tanımlıyorsunuz. Yalnız bir bakışta beğenmemenize şaşırdım. Çöl gördüğünüz yerde bir orman yatıyor olabilir. Hüsn-i zan :)

Bi de Delphi community deki tüm elemanlar bayılıyo :)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Ben bir ExePacth hazırlıyor olabilir mi diye heveslendim. Onun için hayalkırıklığı sonucu bir beğenmeme diyebiliriz. :lol:

- Bahsettiğim şekilde bir çözüm sunan program bulamadığımdan, ben kendi projemde multilanguage desteğini INI file kullanaraj devam ediyorum. 8)
Resim
Resim ....Resim
ardahan
Üye
Mesajlar: 144
Kayıt: 26 Oca 2004 05:17
Konum: İstanbul - Kocaeli - Ardahan
İletişim:

Mesaj gönderen ardahan »

Şu an çoğu kısmını anladım. Genel anlamda çalışan bir uygulama bile yaptım. Şu an sadece UTF-8 de bazı karakterlerde ISO-8859-9 yüzünden problem çıkartıyor. Onu da aşarsam değme keyfime :)

Ben bir denemeni tavsiye ederim. + Ini file kullanmaya devam etmek istersen şöyle bir mantıkta kullanabilirsin! (Orta ölçekli yazılımlar için)

Neyse ya ukalalık sayarsın şimdi :) çaylağa bak falan diye :)

Selametle
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

ardahan yazdı:Neyse ya ukalalık sayarsın şimdi :) çaylağa bak falan diye :)
yeni olduğunuz için böyle düşünüyorsunuz, ama öyle değil. bildiklerinizi çekinmeden paylaşabilirsiniz. Burda kimsenin size o gözel bakmayacağını yakında göreceksiniz :wink:

İyi günler.
ardahan
Üye
Mesajlar: 144
Kayıt: 26 Oca 2004 05:17
Konum: İstanbul - Kocaeli - Ardahan
İletişim:

Mesaj gönderen ardahan »

:) Küçük bir püf noktası varmış. Uygulamayı önce ingilizce hazırlamak gerekiyormuş o zaman dil karakter problemi falan kalmıyo :) Ve gerçekten tavsiye ederim. Çok basitmiş :)
Cevapla