Çoklu dil desteği / değişik karakter setleri
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 35
- Kayıt: 24 Tem 2004 09:49
Çoklu dil desteği / değişik karakter setleri
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.
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.
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.
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
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
-
- Üye
- Mesajlar: 35
- Kayıt: 24 Tem 2004 09:49
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.
Ç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.
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.
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
gibi
Components[iComponent].Font.Name := 'Arial Greek'
yunancayı sevmedim

ş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];
........
........


if Components[iComponent] is have Font.Name then

Components[iComponent].Font.Name := 'Arial Greek'



.-.-.-.-.-.-.-. ^_^
olmadıgkimirti yazdı:menu form uzerine yerlestigi icin
formun font ozelliginde charseti ayarlaman yeterli olmalı
bi dene ne olacak ben de merak ettim


.-.-.-.-.-.-.-. ^_^
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ı alabiliyorbirincisi font.name i olmayanlara bu fontu nasıl atarım. (mesela menu itemlerin fontu seçilemiyor)

@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.
sensei @huseyin hocam
yöntem için teşekkürler ama deplhi1 de customondrraw yokki
özel komponentte yok
hatta hiçbişi yok
artık 10-15 kelime ingilizce öğrensin yunanlılarda
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
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
birde önemsiz bi sorun ama is case içinde kullanılamıyormu
denedim olmadı 








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

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;
{---}


.-.-.-.-.-.-.-. ^_^
Delphi 1 i görmedim hiç
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...


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.
bende bu seneye kadar görmemiştim 
case sorusu şu şekilde, yukarıdaki ifli yapı çalışıyor
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 

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


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


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


.-.-.-.-.-.-.-. ^_^
-
- Üye
- Mesajlar: 35
- Kayıt: 24 Tem 2004 09:49
Ben yokken baya bi gelişme olmuş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![]()

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


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