Çoklu dil desteği / değişik karakter setleri

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
YeniCevizci
Üye
Mesajlar: 35
Kayıt: 24 Tem 2004 09:49

Çoklu dil desteği / değişik karakter setleri

Mesaj gönderen YeniCevizci »

Merhaba arkadaşlar.

Hazırlamakta olduğum bir programa çoklu dil desteği koymaya çalışıyorum. Bu konuda bir sorum var.

Çoklu dil desteği veren programları incelerken birşey farkettim. Mesela Flashget programının dil dosyalarında "codepage" isminde bir alan var. Anladığım kadarıyla Japonca, Çince, Rusça gibi değişik karakter setine sahip diller ile ilgili. Bunu görünce "Acaba programımı birisi Japonca'ya çevirse, bir sorun olur muydu" diye düşündüm.

Kısacası, programıma çoklu dil desteği eklerken, değişik karakter setine sahip diller için özel bir ayar yapmalı mıyım, yoksa hangi dil olursa olsun, bir problem olmaz mı?

Teşekküler.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
eğer karakter setlerinide dinamik yapabilirseniz güzel olur. netekim dillere özel karakterler olabiliyor eğer o dilin karekter seti doğru seçilmezse karakterler düzgün görünmeyebilir.
karekter setlerinin sayısal kodlarını bilmiyorum ama label edit vs font.charset leri üzerinden gitmen lazım.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
serk@n
Üye
Mesajlar: 26
Kayıt: 11 Eki 2003 08:05

Mesaj gönderen serk@n »

nasıl bir coklu dil destegi yaptıgını bizimle de paylasırmısın.
bende programlara dil destegi koymak istiyorum da.
YeniCevizci
Üye
Mesajlar: 35
Kayıt: 24 Tem 2004 09:49

Mesaj gönderen YeniCevizci »

Merhaba.

Çoklu dil desteği hakkında daha önceden forumda konuşulmuş, arama yaparak bulabilirsniz. Benim yöntemim de o mesajlarda belirtilenlerden pek farklı değil, "english.ini", "yourlanguage.ini" gibi dosyalarda, çevrilmesi gereken her metnin karşılıkları bulunuyor, ve seçilen dile göre, ilgili "değer" in karşılığı, ilgili alana yükleniyor.

Ancak farklı karakter setlerinin sorunsuz çalışabilmesi için neler yapılması gerekiyor bilemiyorum. Yardımcı olursanız sevinirim.

Teşekkürler.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

bende her formun creatinde labellar vb.. captionlarını (daha önceden text dosyadan yğklenmiş) bir değişkenden alıyorlar.

şimdi bir problem olarak yunnaca ve arapçadakifarklı karakterler çıktı karşıma.

yunanca arial fontu indirdinm 'Arial Greek' diye geçiyor aşağıda.
sonra formu taratıp her bileşenin font.name ine bunu atadım.

Kod: Tümünü seç

  {-- FONT AYARLA - MG--}
  for iComponent:= 0 to (ComponentCount - 1) do
  begin
   if Components[iComponent] is Tlabel then
     Tlabel(Components[iComponent]).Font.Name := 'Arial Greek'
   else if Components[iComponent] is TButton then
     TButton(Components[iComponent]).Font.Name := 'Arial Greek'
   else if Components[iComponent] is TStringGrid then
     TStringGrid(Components[iComponent]).Font.Name := 'Arial Greek'
   else if Components[iComponent] is TMemo then
     TMemo(Components[iComponent]).Font.Name := 'Arial Greek';
  end;
  {---}

with Txt^ do
  begin
  {menu items}
  ItemDosya.Caption := MenuItems[1];
  ItemParola.Caption := MenuItems[2];
  ItemArsiv.Caption := MenuItems[3];
  ItemWorkingMode.Caption := MenuItems[4];
  ........
  ........
karşılaştığım problemler :

:?: birincisi font.name i olmayanlara bu fontu nasıl atarım. (mesela menu itemlerin fontu seçilemiyor)

:?: bir nesnenin font.name özelliği olduğunu nasıl anlarım
if Components[iComponent] is have Font.Name then :P gibi
Components[iComponent].Font.Name := 'Arial Greek'

:!: yunancayı sevmedim :mrgreen: :duvar:
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

menu form uzerine yerlestigi icin
formun font ozelliginde charseti ayarlaman yeterli olmalı
bi dene ne olacak ben de merak ettim
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

gkimirti yazdı:menu form uzerine yerlestigi icin
formun font ozelliginde charseti ayarlaman yeterli olmalı
bi dene ne olacak ben de merak ettim
olmadı :( artık yarın denicem :) iyi akşamlar
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

birincisi font.name i olmayanlara bu fontu nasıl atarım. (mesela menu itemlerin fontu seçilemiyor)
Bak bunu TCanvas sınıfından yararlanarak yapabilirsin ama çok vaktini alabilir. Ben bu sınıftan yararlanarak biraz vaktimide alsa Font gibi özellikleri değiştirebiliyorum ama dediğim gibi bazen çok zamanımı alabiliyor :(


@Metin Dostum Daha önce buna benzer bir yanıt vermiştim Menu itemlerin Font'u nu değiştirmeyle ilgili bak bakalım işini görürmü.

viewtopic.php?p=12401#12401

Kolay Gelsin.....

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

sensei @huseyin hocam :) yöntem için teşekkürler ama deplhi1 de customondrraw yokki :) özel komponentte yok :mrgreen: hatta hiçbişi yok :lol: artık 10-15 kelime ingilizce öğrensin yunanlılarda 8)

:?: yeni problemim ise messagedlg ler. fontunu bir türlü windowsda değiştiremedim. arial greek yüklü ama wdenetim masası-görüntü-görünüm-gelişmiş- de mesaj fontu listesinde bu font gözükmüyor :cry: artık ben yazacam herhalde bi mesaj dialog penceresi :)
veya belki yunanca xp de tüm fontlar yunanca olacağı için problem olmayabilir. bunuda bir sorayım. yunan programcı tanıyan varmı, ben bi nette http://www.delphiatheen.com/forum a bakayım :lol:

Kod: Tümünü seç

  {-- FONT AYARLA - MG--}
  Font.Name   := Txt^.sFontName[0];
  Canvas.Font := Font;
  for iComponent:= 0 to (ComponentCount - 1) do
  begin
        if Components[iComponent] is Tlabel      then Tlabel(Components[iComponent]).Font.Name      := Txt^.sFontName[1]
   else if Components[iComponent] is TButton     then TButton(Components[iComponent]).Font.Name     := Txt^.sFontName[2]
   else if Components[iComponent] is TStringGrid then TStringGrid(Components[iComponent]).Font.Name := Txt^.sFontName[3]
   else if Components[iComponent] is TPanel      then TPanel(Components[iComponent]).Font.Name      := Txt^.sFontName[4]
   else if Components[iComponent] is TMemo       then TMemo(Components[iComponent]).Font.Name       := Txt^.sFontName[5]
   else if Components[iComponent] is TComboBox   then TComboBox(Components[iComponent]).Font.Name   := Txt^.sFontName[6]
   else if Components[iComponent] is TBitBtn     then TBitBtn(Components[iComponent]).Font.Name     := Txt^.sFontName[7]
   else if Components[iComponent] is TCheckBox   then TCheckBox(Components[iComponent]).Font.Name   := Txt^.sFontName[8]
   else if Components[iComponent] is TGroupBox   then TGroupBox(Components[iComponent]).Font.Name   := Txt^.sFontName[9]
  {else if Components[iComponent] is TDBGrid     then TDBGrid(Components[iComponent]).Font.Name     := Txt^.sFontName[10]
   else if Components[iComponent] is TBiSwitch   then TBiSwitch(Components[iComponent]).Font.Name   := Txt^.sFontName[11]}
  end;
  {---}
birde önemsiz bi sorun ama is case içinde kullanılamıyormu :?: denedim olmadı :!:
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Delphi 1 i görmedim hiç :oops: customondrraw sınıfını türetme onağın olabilir belki birtane Delphi 7 aç bak bakalım sınıf nerden nasıl türemiş belki kopyala yapıştır yapman bile yetebilir sadece bir Fikir.:)

is mi? if mi?

if kullanabilirsin is'i bilmiyorum.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

bende bu seneye kadar görmemiştim :)

case sorusu şu şekilde, yukarıdaki ifli yapı çalışıyor

Kod: Tümünü seç

case Components[iComponent] of 
 TLabel : Tlabel(Components[iComponent]).Font.Name      := Txt^.sFontName[1];
 TButton : TButton(Components[iComponent]).Font.Name    := Txt^.sFontName[2];
....
gibi ama olmuyor. önemsiz bi soru, önemli olan şu messagedlg olayı. dur şimdi yunanlılara soruyorum :) ama foruma giriş bile yapamadım daha. hiç bişyey anlaşılmıyor. bende bizim forumdaki butonların yerine bakıp orada tıklıyorum :)
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

evreka :)

yukarıda verdiğim tüm kodları programdan kaldırdın gerek yok.. xp nin dil kodlamasını türkçeden yunancaya getirince, ascii tabloyu değiştiriyor. böylece menülerdede diğer tüm form bileşenlerindede yunanca görülebiliyor.

Denetim masası - bölge ve dil seçenekleri - gelişmiş -
kulanmak istediğiniz unicode olmayan bir dil seçin : Yunanca
kod sayfasıdönüştürme tablolaro : yunancaları seçin..

tamam. xp sidisini istiyor, yeniden başlatıyor. sonra tamam :)

delphiyunanistan.com dan bi arkadaş söyledi :) :lol:
.-.-.-.-.-.-.-. ^_^
YeniCevizci
Üye
Mesajlar: 35
Kayıt: 24 Tem 2004 09:49

Mesaj gönderen YeniCevizci »

mege yazdı:evreka :)

yukarıda verdiğim tüm kodları programdan kaldırdın gerek yok.. xp nin dil kodlamasını türkçeden yunancaya getirince, ascii tabloyu değiştiriyor. böylece menülerdede diğer tüm form bileşenlerindede yunanca görülebiliyor.

Denetim masası - bölge ve dil seçenekleri - gelişmiş -
kulanmak istediğiniz unicode olmayan bir dil seçin : Yunanca
kod sayfasıdönüştürme tablolaro : yunancaları seçin..

tamam. xp sidisini istiyor, yeniden başlatıyor. sonra tamam :)

delphiyunanistan.com dan bi arkadaş söyledi :) :lol:
Ben yokken baya bi gelişme olmuş :)

Şimdi şunu anlamadım. Sonuç olarak, yazdığımız programın bahsettiğim gibi basit bir dil dosyası olursa, ve bir kullanıcı Yunanca dil dosyasını yüklerse herşey sorunsuz şekilde gözükecek mi?

Teşekkürler.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

YeniCevizci yazdı: Ben yokken baya bi gelişme olmuş :)

Şimdi şunu anlamadım. Sonuç olarak, yazdığımız programın bahsettiğim gibi basit bir dil dosyası olursa, ve bir kullanıcı Yunanca dil dosyasını yüklerse herşey sorunsuz şekilde gözükecek mi?

Teşekkürler.
valla ekim ayında yunanca bu ay arapça hepsi bu yöntemle çözülebiliyor. :D :mrgreen:
ama kaytdettiğiniz text dosyanın ANSI olması lazım.
veya tüm bileşenleri unicode kullannaları seçip de unicode text dosyada kullanabilirsiniz. benim böyle bir şansım yoktu. oyüzden bu yöntemi kullandım
.-.-.-.-.-.-.-. ^_^
Cevapla