Türkçe İngilizce Sözlük Yapmak

Bu yazımızda metin kutusuna İngilizce ve Türkçe kelimeleri eklemek için iki tane Texbox ve ekranda listelemek için iki Listbox nesnesi kullanacağız. Bu bilgileri aynı zamanda TXT uzantılı dosyalara da kaydedeceğiz, program açılınca son eklediklerimiz tekrar geri gelecek.

Sonuç ekranı aşağıdaki gibi olacak.

Programda dosyaya ekleme ve dosyadan okuma işlemleri yapacağımız için önce aşağıdaki kütüphanenin en başta eklenmesi gerekiyor. System.IO kütüphanesi giriş çıkış işlemlerinden sorumlu kütüphane, bu kütüphane en baştaki NameSpace kısmına yazılmazsa kodların altını çizip hata verecektir.

using System.IO;

İngilizce kelimeleri eklemek için kullandığımız metin kutusunun name özelliği txtIngilizce,
Türkçe kelimeleri eklemek için kullandığımız metin kutusunun name özelliği txtTurkce,
Ekle düğmesinin name özelliği btnEkle, Text özelliği Ekle,
Kaydet düğmesinin name özelliği btnKaydet, Text özelliği Ekle,
Türkçe kelimelerin listelendiği Listbox adı lbTurkce,
İngilizce kelimelerin listelendiği Listbox adı lbIngilizce olsun.



Bir listbox'dan bir satır seçildiği zaman diğerini seçilmesi için aşağıdaki kodları yazıyoruz.
SelectIndex özelliği ile seçilen elemanın indeksini buluyoruz ve diğerine atıyoruz.

 private void lbIngilizce_SelectedIndexChanged(object sender, EventArgs e)
        {
            lbTurkce.SelectedIndex = lbIngilizce.SelectedIndex;
        }
 
        private void lbTurkce_SelectedIndexChanged(object sender, EventArgs e)
        {
            lbIngilizce.SelectedIndex = lbTurkce.SelectedIndex;
        }

btnEkle düğmesinin içine aşağıdaki kodları yazıyoruz.


 private void btnEkle_Click(object sender, EventArgs e)
        {
            if(txtIngilizce.Text!="" && txtTurkce.Text !="")
            {
                lbTurkce.Items.Add(txtTurkce.Text);
                lbIngilizce.Items.Add(txtIngilizce.Text);
                txtTurkce.Text = "";
                txtIngilizce.Text = "";
                txtIngilizce.Focus();
            }else
            {
                MessageBox.Show("Lütfen boş geçmeyiniz");
            }
           
        }

btnKaydet düğmesinin içine aşağıdaki kodları yazıyoruz. Burada Türkçe kelimeleri kaydetmek için listeTR.txt, İngilizce kelimeleri kaydetmek için listeEN.txt dosyasını oluşturuyoruz. Foreach döngüsü ile listbox içindeki satırları teker teker okuyup satır sonuna gelene kadar dosyalarımıza yazıyoruz.

 private void btnKaydet_Click(object sender, EventArgs e)
        {
            try
            {
                TextWriter dosyaTR = new StreamWriter("listeTR.txt");
                TextWriter dosyaEN = new StreamWriter("listeEN.txt");
 
                foreach (string i in lbIngilizce.Items)
                {
                    dosyaEN.WriteLine(i);
                }
                foreach (string i in lbTurkce.Items)
                {
                    dosyaTR.WriteLine(i);
                }
                MessageBox.Show("Dosyaya kaydedildi.");
                dosyaEN.Flush(); dosyaTR.Flush();
                dosyaEN.Close();dosyaEN.Close();
                dosyaEN = null; dosyaTR = null;
            }
            catch (IOException hata)
            {
                MessageBox.Show(hata.ToString());
            }
        }

Form açıldığı zaman dosyalardan bilginin okunması ve listbox'lara aktarılması için  aşağıdaki kodları yazıyoruz. Burada yine listeTR.txt ve listeEN.txt  dosyalarından veriler satır satır okunup, Listbox'lar içine yazıyoruz. Try-Catch blok yapısı ile Try bloğu içinde herhangi bir hata meydana gelirse catch kısmında hatayı yakalayıp ekrana basıyoruz.  

 private void Form1_Load(object sender, EventArgs e)
        {
            string satirTR, satirEN = null;
            try
            {
                 TextReader dosyaokuTR = new StreamReader("ListeTR.txt");
                TextReader dosyaokuEN = new StreamReader("ListeEN.txt");
                while (true)
                {
                    satirTR = dosyaokuTR.ReadLine();
                    satirEN = dosyaokuEN.ReadLine();
 
                    if (satirTR == null || satirEN==null )
                    {
                        break;
                    }
 
                    lbTurkce.Items.Add(satirTR);
                    lbIngilizce.Items.Add(satirEN);
                }
                dosyaokuTR.Close();
                dosyaokuEN.Close();
                dosyaokuTR = null;
                dosyaokuEN = null;
 
 
            }
            catch (IOException hata)
            {
               // MessageBox.Show(hata.ToString());
            }
        }


Bu çalışmamızda, gerçekten kullanışlı bir İngilizce-Türkçe sözlük oluşturduk, bu programı daha da geliştirebilirsiniz. Örneğin kelimeleri ekledik ama hiç arama yapmadık. Şimdi İngilizce ve Türkçe kelimeleri arayacağımız bir ekran oluşturalım.

Kelime Arama Ekranı Oluşturmak

Aşağıdaki ekran görüntüsünde yukarıdakinden farklı olarak ARAMA kısmı yer alıyor.  İngilizce kelimeleri aramak için bir textbox nesnesi ekleyip ismine(name) txtENAra ismini verdik, Türkçe kelimeleri arama için de bir textbox nesnesi ekleyip ismine txtTRAra ismini verdik. Arama butonumuzun name özelliğine de btnAra ismini verdik.



 
btnAra üzerine çift tıklayıp içine aşağıdaki kodları yazınız. Burada yaptığımız işlem mantık olarak Listbox nesnelerin içerisini satır satır dolaşıp metin kutularına girilen kelime ile karşılaştırıyoruz. Bulursak selectedIndex özelliğine satır numarasını atayıp o satırı yukarıdaki gibi seçili hale getiriyoruz. İngilizce kelimeleri aramak için lbİngilizce, Türkçe kelimeleri aramak için lbTurkce Listbox nesnelerinde foreach döngüsü ile baştan sona arama yapıyoruz, bulduğumuz zaman break ile döngüyü kesip çıkıyoruz.
 

private void btnAra_Click(object sender, EventArgs e)
        {
            int satirno = 0;
            if (txtENAra.Text != "")
            {
                foreach (string satir in lbIngilizce.Items)
                {
                    if (satir == txtENAra.Text)
                    {
                        lbIngilizce.SelectedIndex = satirno;
                        lbTurkce.SelectedIndex = satirno;
                        break;
                    }
                    satirno++;
                }
            }
 
            int satirno2 = 0;
            if (txtTRAra.Text != "")
            {
                foreach (string satir in lbTurkce.Items)
                {
                    if (satir == txtTRAra.Text)
                    {
                        lbIngilizce.SelectedIndex = satirno2;
                        lbTurkce.SelectedIndex = satirno2;
                        break;
                    }
                    satirno2++;
                }
            }
        }

 
Yukarıdaki kodlarda satirno ve satirno2 değişkenleri aslında bize listbox nesnelerinde kelimelerin hangi sırada olduğunu gösteriyor. Aşağıdaki ekranda da İngilizce sözcükleri aratıyoruz.


Mutlu kodlamalar,
Oğuzhan TAŞ
Kasım 2023

Bookmark and Share