




Değişken İçerisinde Bir Başka Değişkenin Değerinin Gelmesini Nasıl Yapabilirim?
-
Şimdi şöyle bir değerler kümem mevcut.
string strDil_Kod_Tr = "tr";
string strDil_Kod_En = "en";
string strDil_Kod_Ru = "ru";
string strDil_Kod_Fr = "fr";
diye değişkenlerim mevcut. Aslında dillere ait onun kısa kodu. Bir de şu şekilde değişkenlerim var
string strUyari_Tr = $"{dilSettings.lutfen_ad_soyad_giriniz_tr}";
string strUyari_En = $"{dilSettings.lutfen_ad_soyad_giriniz_en}";
string strUyari_Ru = $"{dilSettings.lutfen_ad_soyad_giriniz_ru}";
string strUyari_Fr = $"{dilSettings.lutfen_ad_soyad_giriniz_fr}";
gibi bir yerlerden aldığım sabitler var, dil koduna göre değişkenlerin değeri değişiyor.
Yapmak istediğim şu, tek tek strUyari_Tr, strUyari_En... yazmak yerine
string strUyari = $"{dilSettings.lutfen_ad_soyad_giriniz_BURAYA_DIL_KOD_DEGERININ_GELMESI}";
Yani
şöyle bir şey olması
tring strUyari = $"{dilSettings.lutfen_ad_soyad_giriniz_|strDil_Kod_Tr|}"; gibi tanımlı değişkenlerimi içerisine tanımlayıp değerini oraya yazdırmak. Açıkcası yol yordam vs.. merak ettim. -
mesela php de söyle yapıyoruz.
$strUyari = "{dilSettings.lutfen_ad_soyad_giriniz_" . $strDil_Kod_Tr . "}";
bu da c#
string strUyari = $"{dilSettings.lutfen_ad_soyad_giriniz_" + strDil_Kod_Tr + "}";
https://learn.microsoft.com/en-us/dotnet/csharp/how-to/concatenate-multiple-strings
-
dilSettings['lutfen_ad_soyad_giriniz_tr']
diger dillerin genelinde bu şekil oluyo
-
Apocan sağolasın, biraz ben anlatamadım.
Bir yerlerde benim şöyle bir değişkenim var
dilSettings.lutfen_ad_soyad_giriniz_tr = "Lütfen ad soyad giriniz.";Olaya gelirsek
string strUyari1 = $"dilSettings.lutfen_ad_soyad_giriniz_" + strDil_Kod_Tr;
bunun sonucu
strUyari1 = "dilSettings.lutfen_ad_soyad_giriniz_tr";
şeklinde oluyor. Şimdi bunun sonucunda ise içerisinde oluşan değer aslında bir değişken. Ben o değişkenin değerinin gelmesini istiyorum.en sonunda
strUyari1 ram üzerinde "Lütfen ad soyad giriniz." şeklnde olmalı. Bilmem anlatabildim mi?
-
string strDil_Kod_Tr = "tr";
string strDil_Kod_En = "en";
string strDil_Kod_Ru = "ru";
string strDil_Kod_Fr = "fr";string strUyari_Tr = $"{strDil_Kod_Tr}";
string strUyari_En = $"{strDil_Kod_En}";
string strUyari_Ru = $"{strDil_Kod_Ru}";
string strUyari_Fr = $"{strDil_Kod_Fr}";string dilSettings_lutfen_ad_soyad_giriniz_tr = "Lütfen ad ve soyadınızı giriniz.";
string dilSettings_lutfen_ad_soyad_giriniz_en = "Please enter your first and last name.";
string dilSettings_lutfen_ad_soyad_giriniz_ru = "Пожалуйста, введите ваше имя и фамилию.";
string dilSettings_lutfen_ad_soyad_giriniz_fr = "Veuillez entrer votre nom et prénom.";string strUyari = string.Format(dilSettings_lutfen_ad_soyad_giriniz_tr, strDil_Kod_Tr);
Console.WriteLine(strUyari); -
Bi ek daha yapayım.
string dilSettings_lutfen_ad_soyad_giriniz = "";
string strUyari = nameof(dilSettings_lutfen_ad_soyad_giriniz) + "_" + strDil_Kod_Ru;strUyari değeri bu oldu. Şimdi ise bu çıkan değerin (aslında bi değişkeni elde etmiş oldum) karşılığı olan değeri almam gerekli. Yani "Пожалуйста, введите ваше имя и фамилию." şeklinde. Biraz zor oldu ama anlatabilmişimdir umarım.
-
Dostum hiçbir programala dilinde çeviri işleri bu şekilde farklı değikenlere atanarak yapılmaz. Normalde çeviri için kütüphane ve dil dosyaları kullanırsın ama en basitinden sen manuel olarak yapmak istiyorsan array kullanmalısın. Her dilde ayı array key kullanılıp degeri okunur.
Mantık şu şekilde olur (php için)
ceviriler$ceviriler = [ 'en' => [ 'merhaba_dunya' => 'Hello Wolrd', 'selam' => 'Hi' ], 'tr' => [ 'merhaba_dunya' => 'Merhaba Dünya', 'selam' => 'Selam' ], ]; $istenilenDil = 'en'; echo $ceviriler[$istenilenDil]['merhaba_dunya']; echo $ceviriler[$istenilenDil]['selam'];
-
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { Dictionary<string, string> dilUyarilari = new Dictionary<string, string> { { "tr", "lutfen_ad_soyad_giriniz_tr" }, { "en", "lutfen_ad_soyad_giriniz_en" }, { "ru", "lutfen_ad_soyad_giriniz_ru" }, { "fr", "lutfen_ad_soyad_giriniz_fr" } }; string secilenDil = "tr"; // Örneğin seçilen dil kodu if (dilUyarilari.ContainsKey(secilenDil)) { string uyariAnahtar = dilUyarilari[secilenDil]; string strUyari = $"{dilSettings.{uyariAnahtar}}"; Console.WriteLine(strUyari); } else { Console.WriteLine("Bu dil kodu için bir uyarı metni bulunamadı."); } } }
yapay amca veriyor ama istediğin mi bilmiorum illa sormussundur ama :)
using System; using System.Collections.Generic; class DilSettings { public string lutfen_ad_soyad_giriniz_tr { get; set; } public string lutfen_ad_soyad_giriniz_en { get; set; } public string lutfen_ad_soyad_giriniz_ru { get; set; } public string lutfen_ad_soyad_giriniz_fr { get; set; } } class Program { static string GetValueFromDilSettings(DilSettings settings, string dilKod, string anahtar) { string propertyName = anahtar + "_" + dilKod; var property = settings.GetType().GetProperty(propertyName); if (property != null) { return (string)property.GetValue(settings); } return "Belirtilen dil ve anahtar için bir değer bulunamadı."; } static void Main(string[] args) { DilSettings dilSettings = new DilSettings(); dilSettings.lutfen_ad_soyad_giriniz_tr = "Lütfen ad ve soyadınızı giriniz."; dilSettings.lutfen_ad_soyad_giriniz_en = "Please enter your full name."; dilSettings.lutfen_ad_soyad_giriniz_ru = "Пожалуйста, введите ваше имя и фамилию."; dilSettings.lutfen_ad_soyad_giriniz_fr = "Veuillez entrer votre nom complet."; string strDil_Kod_Ru = "ru"; string anahtar = "dilSettings_lutfen_ad_soyad_giriniz"; string strUyari = GetValueFromDilSettings(dilSettings, strDil_Kod_Ru, anahtar); Console.WriteLine(strUyari); } }
cybermole tarafından 15/Ağu/23 00:25 tarihinde düzenlenmiştir -
C#'ta Dictionary kullanabilirsin. Anahtar ve değer çiftlerine ihtiyacına göre türleri verirsin.