gettext bileşeninin dil desteği???
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
gettext bileşeninin dil desteği???
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
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
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
Notepad ile English.INI dosyası oluşturun
- 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.
- Şu anda Delphi kurulu bilgisayar yok, bir Internet Cafe'deyim. Syntax hatalarını düzeltirsiniz.
- Çalışmalarınızda başarılar...
- 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
...
Kod: Tümünü seç
...
[TITLES]
LB_001 = Hello...
LB_002 = My name is
LB_003 = Muharrem
...
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;
- Çalışmalarınızda başarılar...
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
Eğer keşfedebilirsen yardımlarını beklerim
- Ha. Anladım. Binary Patch ile dil değişkliği yapacaksınız.
- 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.
- 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.

- 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.

- 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.

Ş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

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


Selametle