Konuyu Oyla:
  • Derecelendirme: 5/5 - 3 oy
  • 1
  • 2
  • 3
  • 4
  • 5
FMX Projelerinize hızlı dil desteği eklemek
#1
Star 
Merhaba,

Geçenlerde yaptığım küçük bir projede deneme fırsatı bulduğum TLang Komponentinin kullanımı ile ilgili çeşitli bilgilendirmelerde bulunmak istiyorum. Öncelikle FMX Projelerinize hızlı dil desteği eklemek için başvuracağınız bu yolun, köklü ve devasa bir projede kullanımında size istediğiniz yanıtı vereceğinden emin değilim. Nitekim yaşadığım sıkıntıları da yazının sonuna doğru sizlere ileteceğim.

Öncelikle nedir bu TLang, ne işimize yarar?

TLang, FMX projelerimizde yer alan string değerlerin çok pratik bir şekilde değiştirilerek, yerelleştirme (localize) yapmamıza olanak sunan bir komponent.

Nasıl oluşturulur, Dil karşılığı nasıl girilir, Dil nereden eklenir ve komponent nasıl kullanılır?

Herhangi bir komponent yerleştirir gibi Tool Palette'in içerisinden alıp form üzerine bırakabilirsiniz. Bu komponent, diğerlerine nazaran tüm projenin içindeki statik olan string değerleri tarayıp toplama kabiliyetine sahip. (Form1'e yerleştirdiğiniz Lang1, Form2..10, kısaca tüm formları tarar.)

Form üzerine yerleştirdiğiniz TLang komponentinin üstüne çift tıklayarak Language Designer'ı aktif edersiniz. Burada üst kısımdan Add language butonuna basarak TR dilini ekleyin. Tüm projenizde yer alan string değerlerin bir listesini altta göreceksiniz. Karşılarına olduğu gibi değerleri aktarın. Ardından yeni dil ekle diyerek EN olarak İngilizce'yi dahil edin. (Örneklem için)

Yukarıda yer alan ComboBox'tan Dil seçimi yaparak string değerlerin o dilde yer alan karşılığını doldurun. Tüm işlem bittiğinde Save file ile dosyanızı projenin kaynak kodlarının olduğu dizinde Language.lang (yada isim ne verirseniz, uzantı lang olmalı) olarak kaydedin. Kullanıma hazırız.

Run-time (Çalışma anında) Dil değişimi nasıl yapılır?

Bu komponentin acemilik döneminde yapılan basit bir yöntem var. Bu yöntem bazı sorunlar oluşturabiliyor. Mesela Android cihazda çok dil desteği hazır bir projenin Combobox nesnelerinde sadece ItemIndex'inde yer alan string değer dil değişimini görüyorken, diğer ön tanımlı değerler ne yazık ki başarısız oluyor. Tüm değerleri mevcut fonksiyon ile aldığınızda bu sorun yaşanmıyor.

//Lang1.Lang := 'en'; // bunu kullanmayın!
LoadLangFromStrings(Lang1.LangStr['en']); // bu sağlıklı yöntem

Köklü ve devasa bir projede neden tercih edilmez?

Bir önceki soruda yaşadığımız statik string değerlerin okunmasındaki problem, dinamik değerlerin dil karşılıklarını da okumamıza engel olacaktır. Bunun yerine çok dil desteği olan projelerde genellikle veritabanı yapılarının çoklu dile uyumlu olması sorunumuzu çözecektir. Kelime tablosunda işaretlemeleri yapacak uygun KEY değerlerini oluşturup, dilleri tanıttıktan sonra aktif dilde bu key'in value'su ne ise onu doğrudan kullanabilirsiniz.

TLang hangi projeler için doğru bir tercih olur?

Üzerinde veritabanı işlemlerini çok yapmayacağınız, yapacaksanız da ortak değerleri muhafaza edecek şekliyle dinamik verilerin çeviri yönetimini manuel yapacağınız her projede kullanılabilir. Statik string değerlere sahip projeler için müthiş hız kazandıracaktır. Tanıtım projelerinde, ürün projelerinde, basit fonksiyonel işlemlerde ve oyunlarda genellikle sabit menü ve  string kullanımı yaygındır. Bu yüzden saydığım proje türlerinde kullanmanız avantajlı olacaktır.


Dip: örnek bir proje oluşturup ekran görüntüleri almak için yeterli zamanım olmadığı için sizlere hazır bir Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.i vereceğim. Örnekte ListBox'ta seçilen dil doğrultusunda string değerlerin değişimini ve kelimenin kullanımını gösteriyor.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#2
Teşekkürler Abdullah bey.
Cevapla
#3
Merhabalar,
Program icerisindeki string ifadeleri nasil alabilirim.
Mesela showmessage('deneme')
"deneme " ifadesi gibi.
Teşekkürler
Cevapla
#4
(03-08-2017, Saat: 16:51)klavye Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhabalar,
Program icerisindeki string ifadeleri nasil alabilirim.
Mesela showmessage('deneme')
"deneme " ifadesi gibi.
Teşekkürler

Merhaba,

TLang nesnenizin üzerine çift tıkladıktan sonra açılan Dil Yönetim Ekranında proje kapsamında geçen sabit statik metin değerleri tespit edebiliyor olsa da, İlave olarak bir "key" değeri girmek için görselde gösterdiğim + butonuna tıkladıktan sonra (örneğinizdeki) 'deneme' ifadesini yazın. Daha sonra ComboBox'tan dilleri değiştirerek alakalı dilde karşılık değerini girebilirsiniz.

vp2nb4.png
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#5
Ek: Sabit değerler oluşturarak onları da taratabilirsiniz. Ancak size tavsiyem üstte gösterdiğim örnekteki şekliyle doğrudan string anahtar kelimeleri tanıtıp dil karşılıklarını girmeniz olacak. Bunu ilk gönderdiğim mesaj (konu anlatım) içinde yer alan linkte inceleme yaparsanız "Hello" kelimesini doğrudan ShowMessage fonksiyonuna string olarak yazıyor ve dil değişiminde Almanca olarak Hallo şeklinde gösteriyor.

Daha amatör ve hızlı çözmek isterseniz bu stringleri muhafaza edeceğiniz gözükmeyen TLabel nesnelerine yazarak oradan çevirisini sağlayabilirsiniz.

İyi günler diliyorum.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#6
Teşekkürler Abdullah bey.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Photo Beni Hatırla Eklemek seydigozegir@gmail.com 7 156 13-08-2019, Saat: 08:58
Son Yorum: Mr.Developer
  FMX Multi-Touch Desteği codder71 2 362 28-02-2019, Saat: 11:57
Son Yorum: codder71
  [Çözüldü] FMX VLC Player Desteği CesuR 9 890 28-01-2019, Saat: 11:59
Son Yorum: Yeliz
  Rio IOS 12 ve Android 9 desteği mcuyan 16 1.131 28-12-2018, Saat: 14:01
Son Yorum: nguzeller
  TatukGIS FireMonkey Desteği DelphiCan 0 910 21-01-2017, Saat: 11:31
Son Yorum: DelphiCan



Konuyu Okuyanlar: 1 Ziyaretçi