C# programa Türkçe ve İngilizce dil seçeneği ekleme

Katılım
19 Nisan 2020
Mesajlar
1.506
Çözümler
18
Merhabalar, ben programıma Türkçe ve İngilizce dil seçeneği eklemek istiyorum. Bunu nasıl yapabilirim?
Benim şahsen aklıma bir şey geldi. Bir tane Combobox'a ayarlar textini yazıp aşağıya Türkçe İngilizce seçenekleri ekleyeceğim. İngilizceyi seçtiği zaman yazıları ingilizceye.

C#:
if(comboBox1.SelectedIndex == 1)
{
label1.Text = "Select"
}

Komutuyla çevirecek (üstteki sadece kısa bir örnek anlamanız için). Benim dediğim gibi mi yapılıyor yoksa başka türlü mü?
 
Son düzenleyen: Moderatör:
Merhabalar, ben programıma Türkçe ve İngilizce dil seçeneği eklemek istiyorum. Bunu nasıl yapabilirim?
Benim şahsen aklıma bir şey geldi. Bir tane Combobox'a ayarlar textini yazıp aşağıya Türkçe İngilizce seçenekleri ekleyeceğim. İngilizceyi seçtiği zaman yazıları ingilizceye.

C#:
if(comboBox1.SelectedIndex == 1)
{
label1.Text = "Select"
}

Komutuyla çevirecek (üstteki sadece kısa bir örnek anlamanız için). Benim dediğim gibi mi yapılıyor yoksa başka türlü mü?

Dediğiniz gibi yapabilirsiniz başka bir yolu yok gibi.
 
Valla hocam benim de çok bir fikrim yok ama kendi uğraştığım program için ResourceDictionary'de stringler ekleyip daha sonra bu oluşturmuş olduğum ResourceDictionary'i programa entegre etmeyi düşünüyorum.

Örneğin:
[CODE lang="xml" title="Turkish.xaml"] <x:String x:Key="Web">Tarayıcı</x:String>
<x:String x:Key="Files">Dosyalar</x:String>
<x:String x:Key="Contacts">Kişiler</x:String>
<x:String x:Key="Messages">Mesajlar</x:String>
<x:String x:Key="Notes">Notlar</x:String>
<x:String x:Key="Calendar">Takvim</x:String>
<x:String x:Key="Musics">Müzikler</x:String>
<x:String x:Key="Photos">Fotoğraflar</x:String>
<x:String x:Key="Videos">Videolar</x:String>
<x:String x:Key="Preferences">Tercihler</x:String>
<x:String x:Key="AppCenter">Uygulama Merkezi</x:String>
<x:String x:Key="Terminal">Uçbirim</x:String>
<x:String x:Key="Code">Geliştirici</x:String>
<x:String x:Key="Updates">Güncellemeler</x:String>[/CODE]
[CODE lang="xml" title="English.xaml"] <x:String x:Key="Web">Web</x:String>
<x:String x:Key="Files">Files</x:String>
<x:String x:Key="Contacts">Contacts</x:String>
<x:String x:Key="Messages">Messages</x:String>
<x:String x:Key="Notes">Notes</x:String>
<x:String x:Key="Calendar">Calendar</x:String>
<x:String x:Key="Musics">Musics</x:String>
<x:String x:Key="Photos">Photos</x:String>
<x:String x:Key="Videos">Videos</x:String>
<x:String x:Key="Preferences">Preferences</x:String>
<x:String x:Key="AppCenter">App Center</x:String>
<x:String x:Key="Terminal">Terminal</x:String>
<x:String x:Key="Code">Code</x:String>
<x:String x:Key="Updates">Updates</x:String>[/CODE]

[CODE lang="csharp" title="Function.cs"] private static void Localization(string Language)
{
ResourceDictionary rd = new ResourceDictionary
{
Source = new Uri("ms-appx:///Languages/" + Language + ".xaml")
};

Application.Current.Resources.MergedDictionaries.Add(rd);[/CODE]
Dediğim yöntem ile çalıştırabildim hocam ama bunun mutlaka daha iyi bir yöntemi vardır. O yöntemi bulursanız konuya yazında bizde öğrenelim.
 

Dosya Ekleri

  • english.png
    english.png
    30,2 KB · Görüntüleme: 142
  • turkish.png
    turkish.png
    30,7 KB · Görüntüleme: 135
Son düzenleyen: Moderatör:
Ana bir language Sınıfımız olsun. Bu sınıftan türetilmiş alt Dil sınıfları bulunsun. Ana sınıfımızda Bir Verileri tutacagımız bir veri yapımız olsun. (Ben dictionary kullandım.) Alt Dil Sınıfları Bu veri yapısını kullanarak kendi dilinde değerleri eklesin. Umarım açıklayıcı olmuşumdur. Gerçi bu yazıyı okumaya bile gerek yok kod herşeyi anlatıyor. Kod iyileştirilebilir.

C#:
public abstract class ILanguage
    {
        public Dictionary<string, string> LanguageData = new Dictionary<string, string>();
    }
    public class Language_TR : ILanguage
    {
        public Language_TR()
        {
            LanguageData.Add("lang", "Tr");
            LanguageData.Add("cpp", "C++ Programlama Dili");
            LanguageData.Add("game", "Oyun");
        }
    }

    public class Language_EN : ILanguage
    {
        public Language_EN()
        {
            LanguageData.Add("lang", "En");
            LanguageData.Add("cpp", "C++ programming Language");
            LanguageData.Add("game", "Game");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ILanguage language = new Language_TR();
            Console.WriteLine(language.LanguageData["lang"]);
            Console.WriteLine(language.LanguageData["cpp"]);
            Console.WriteLine(language.LanguageData["game"]);

            language = new Language_EN();
            Console.WriteLine(language.LanguageData["lang"]);
            Console.WriteLine(language.LanguageData["cpp"]);
            Console.WriteLine(language.LanguageData["game"]);


            Console.ReadLine();
        }
    }



Çıktı;
 

Dosya Ekleri

  • Ekran Alıntısı3.PNG
    Ekran Alıntısı3.PNG
    2,9 KB · Görüntüleme: 140
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı