7 dakikanı ayır hocam sadece. https://www.youtube.com/watch?v=08mf72wUOwo resx kontrolü ynetimi en basiti. yan yana istediğim kadar diz dilleri. 2-3 ile sınırlı kalmana gerek yok. koca koca projelerde kullanıyoruz aynılarını. hocam bunları inceledim. benim aradığım farklı birşey.. ama sanırsam istediğim gibi bir çzüm bulamayacağım.

resx yada bir json dosyasında değişkenin en, fr, tr vs... değerlerini tutmak olacaktır. ontedi tarafından 12/Eyl/23 14:41 tarihinde düzenlenmiştir Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.

benim bahsetmek istediğim şey form load olurken ekranda yaratılacak nesnelerin text zelliklerine erişipseçili dil hangi dilse ona gre değer ataması yapıp ekranda oluşturmak gibi. load { if } gibi birşey..

https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/y99d1cd3(v=vs.100)?WT. mc_id=DT-MVP-5003235 Resource manager ve culture. Olaylara karışmayın!

Evet butonları dinamik olarak oluşturabilirsin. Veritabaninda bir tabloda butonlarin yer alir. Koordinatları, renkleri, boyutlari vs. O tablodaki verileri çekip dinamik olarak butonlari oluşturup ilgili form a ekleyeceksin. foreach içinde tek tek dolasirsin. Button b1 = new Button ; b1. Text = textini atarsin b1. Click = delegeyi atarsın this. Controls. Add(b1); Ancak tabi tüm programı bu sekilde yazmak yorucu olur. Tüm program için konuşacak olursak mantıklı olan resources kullanmak. İhtiyaç olan yerlerde elbette dinamik olarak kontrolleri oluşturabilirsin.

cybermole bunu yazdı tr. txt içerisine ; Save=KaydetDelete=SilCustomers=Müşteriler de. txt içerisine; Kaydet=SpeichernSil=LschenMüşteriler=Kunden! şeklinde kaydet private Dictionary<string, string> translations = new Dictionary<string, string> ; private void LoadTranslations { string lines = File. ReadAllLines ; foreach { string parts = line. Split ; if (parts. Length 2) } buttonSave. Text = GetTranslation ; buttonDelete. Text = GetTranslation ; labelCustomers. Text = GetTranslation ; } private string GetTranslation { if (translations. TryGetValue return key; } bu şekilde txtde tutabilirsin en kolay bu gibi. peki buttonSave. Text = GetTranslation ; gibi atama operatrü kullanmak yerineform daki nesneleri bir dngüye sokup eğer çevirileri varsa text properties lerini değiştirsek bu mümkün mü?sanırım tam olarak istediğim bu formdaki tüm kontrol nesnelerini dolaşan ve çevirileri uygulayan bir işlev yapabilirsin private void TranslateControls { foreach { if else if // Diğer kontrol türleri için de aynı işlemi yapabilirsiniz . if }} private void MainForm_Load dil seçimini değiştirdiğinde yeniden yüklemek için: private void comboBoxLanguage_SelectedIndexChanged

tr. txt içerisine ; Save=KaydetDelete=SilCustomers=Müşteriler de. txt içerisine; Kaydet=SpeichernSil=LschenMüşteriler=Kunden! şeklinde kaydet private Dictionary<string, string> translations = new Dictionary<string, string> ; private void LoadTranslations { string lines = File. ReadAllLines ; foreach { string parts = line. Split ; if (parts. Length 2) } buttonSave. Text = GetTranslation ; buttonDelete. Text = GetTranslation ; labelCustomers. Text = GetTranslation ; } private string GetTranslation { if (translations. TryGetValue return key; } bu şekilde txtde tutabilirsin en kolay bu gibi. peki buttonSave. Text = GetTranslation ; gibi atama operatrü kullanmak yerineform daki nesneleri bir dngüye sokup eğer çevirileri varsa text properties lerini değiştirsek bu mümkün mü?sanırım tam olarak istediğim bu

tr. txt içerisine ; Save=KaydetDelete=SilCustomers=Müşteriler de. txt içerisine; Kaydet=SpeichernSil=LschenMüşteriler=Kunden! şeklinde kaydet private Dictionary<string, string> translations = new Dictionary<string, string> ; private void LoadTranslations { string lines = File. ReadAllLines ; foreach { string parts = line. Split ; if (parts. Length 2) } buttonSave. Text = GetTranslation ; buttonDelete. Text = GetTranslation ; labelCustomers. Text = GetTranslation ; } private string GetTranslation { if (translations. TryGetValue return key; } bu şekilde txtde tutabilirsin en kolay bu gibi.

Devexpress gridcontrol için aşağıdaki gibi bir çzümle işi kestirmeden bitirmiştik.. public class GridLibrary : GridLocalizer { public override string Language { get } public override string GetLocalizedString { switch { case GridStringId. MenuColumnAutoFilterRowHide: return "Otomatik Filitrelemeyi Gizle"; case GridStringId. MenuColumnRemoveColumn: return "Sütunu Kaldır"; case GridStringId. MenuGroupPanelClearGrouping: return "Gruplamayı Temizle"; case GridStringId. MenuGroupPanelFullCollapse: return "Gruplanan Alanları Kapat"; case GridStringId. MenuGroupPanelFullExpand: return "Gruplanan Alanları Aç"; case GridStringId. MenuColumnAutoFilterRowShow: return "Otomatik Filitrelemeyi Gster"; case GridStringId. MenuColumnClearSorting: return "Sıralamayı Kaldır"; case GridStringId. MenuColumnColumnCustomization: return "Grüntülenecek Alanları Seçin"; case GridStringId. MenuGroupPanelHide: return "Gruplama Panelini Gizle"; case GridStringId. MenuFooterSumFormat: return "Toplam: "; case GridStringId. MenuColumnUnGroup: return "Gruplamayı Kaldır"; case GridStringId. MenuGroupPanelShow: return "Gruplama Panelini Gster"; case GridStringId. MenuColumnFilter: return "Sütunu Filitrele"; case GridStringId. MenuColumnSortAscending: return "A-Z Sırala"; case GridStringId. MenuColumnSortDescending: return "Z-A Sırala"; case GridStringId. MenuColumnShowColumn: return "Sütunu gsterxxx"; case GridStringId. MenuColumnClearFilter: return "Filitrelemeyi Temizle"; case GridStringId. MenuColumnBestFit: return "Kolonu En İyi Boyuta Getir"; case GridStringId. MenuColumnBestFitAllColumns: return "Tüm Kolonları En İyi Boyuta Getir"; case GridStringId. MenuColumnFindFilterShow: return "Grid Üzerinde Arama Yap"; case GridStringId. MenuColumnFindFilterHide: return "Grid Üzerinde Aramayı Gizle"; case GridStringId. MenuColumnExpressionEditor: return "Sütun Düzenleme Editrü"; case GridStringId. FindControlClearButton: return "Temizle"; case GridStringId. FindControlFindButton: return "Bul"; case GridStringId. GridGroupPanelText: return "Gruplanmasını İstediğiniz Sütunu Sürükleyip Bırakın"; case GridStringId. FilterPanelCustomizeButton: return "Sorgulama Editrü"; case GridStringId. GroupSummaryEditorFormCaption: return "Sorgulama Editrü"; case GridStringId. MenuColumnGroup: return "Bu Sütunu Grupla"; case GridStringId. PopupFilterAll: return "Popup Filitrele"; case GridStringId. PopupFilterCustom: return "Hızlı Filitrele"; case GridStringId. MenuColumnFilterEditor: return "Filitreleme Sihirbazı"; case GridStringId. MenuColumnFilterModeDisplayText: return "Filitreleme Sihirbazı"; case GridStringId. FilterBuilderApplyButton: return "Filitrele"; case GridStringId. FilterBuilderCancelButton: return "Vazgeç"; case GridStringId. FilterBuilderCaption: return "Filitreleme Sihirbazı"; case GridStringId. FilterBuilderOkButton: return "Tamam"; case GridStringId. GroupSummaryEditorSummaryCount: return "Otomatik Say"; case GridStringId. MenuColumnGroupSummaryEditor: return "Gruplama Sihirbazı"; case GridStringId. MenuFooterCount: return "Otomatik Say"; case GridStringId. MenuFooterMax: return "Maksimum"; case GridStringId. MenuFooterMin: return "Minimum"; case GridStringId. MenuFooterSum: return "Otomatik Topla"; case GridStringId. MenuFooterAverage: return "Ortalamasını Al"; case GridStringId. MenuFooterNone: return "Hiçbiri"; case GridStringId. MenuColumnCountSummaryTypeDescription: return "Adet"; case GridStringId. MenuFooterAddSummaryItem: return "Yeni Fonksiyon Ekle"; } return base. GetLocalizedString ; } }

Asayisci bunu yazdı cybermole bunu yazdı tr. txt içerisine ; Save=KaydetDelete=SilCustomers=Müşteriler de. txt içerisine; Kaydet=SpeichernSil=LschenMüşteriler=Kunden! şeklinde kaydet private Dictionary<string, string> translations = new Dictionary<string, string> ; private void LoadTranslations { string lines = File. ReadAllLines ; foreach { string parts = line. Split ; if (parts. Length 2) } buttonSave. Text = GetTranslation ; buttonDelete. Text = GetTranslation ; labelCustomers. Text = GetTranslation ; } private string GetTranslation { if (translations. TryGetValue return key; } bu şekilde txtde tutabilirsin en kolay bu gibi. peki buttonSave. Text = GetTranslation ; gibi atama operatrü kullanmak yerineform daki nesneleri bir dngüye sokup eğer çevirileri varsa text properties lerini değiştirsek bu mümkün mü?sanırım tam olarak istediğim bu formdaki tüm kontrol nesnelerini dolaşan ve çevirileri uygulayan bir işlev yapabilirsin private void TranslateControls { foreach { if else if // Diğer kontrol türleri için de aynı işlemi yapabilirsiniz . if }} private void MainForm_Load dil seçimini değiştirdiğinde yeniden yüklemek için: private void comboBoxLanguage_SelectedIndexChanged tam düşündüğüm şey buydu deniyeceğim. Teşekkürler..

ResX ile dil desteği eklemek kolay ama ileride bişeyleri ekleyip değiştirince onları bulup takip etmek çok zor onun için bazı extensionlarla yapıyorlar o işi. Bu arada ben her dilde her platformda Gettext kullanıyorum ve en sevdiğim librarylerden biri. C# winformsda denemedim ama delphide falan çok bayılarak kullanıyordum Poedit + gettext buna bi gz atacağım fakat çalışma mantığı nasıl acaba nerilen çzümlerin hepsi uğraştırıcı ve ileride karmaşık hale gelebiliyor..

Merhaba arkadaşlar uzun süre nce geliştirmeye başladığım çok modüllü bir projem var. Programın Almanca ve ingilice versiyonlarını çıkarmak istiyoruz. Buttonların, Label'ların tek tek adını değiştirmek istemiyorum. hadi bunu bi seferlik yapsam bile ileride elimde üç ayrı versiyon olacak. Üzerine yaptığım tüm ilaveleri bu üç ayrı proje de de uygulama gibi saçma bir hammallık çıkacak. Bunun nüne geçmek için bir dil kütüphanesi oluşturup her form load olurken kontrol sağlayıp değiştirme olanağım var mı?Kaydet = SaveSil = DeleteMüşterleriler = Customers gibi gibibu konuda tecrübesi yada fikri olan arkadaşlardan yardımcı olmalarını talep ediyorum.

7 dakikanı ayır hocam sadece. https://www.youtube.com/watch?v=08mf72wUOwo resx kontrolü ynetimi en basiti. yan yana istediğim kadar diz dilleri. 2-3 ile sınırlı kalmana gerek yok. koca koca projelerde kullanıyoruz aynılarını. http://www.leyladansonra.com/

ResX ile dil desteği eklemek kolay ama ileride bişeyleri ekleyip değiştirince onları bulup takip etmek çok zor onun için bazı extensionlarla yapıyorlar o işi. Bu arada ben her dilde her platformda Gettext kullanıyorum ve en sevdiğim librarylerden biri. C# winformsda denemedim ama delphide falan çok bayılarak kullanıyordum Poedit + gettext HolyOne tarafından 12/Eyl/23 15:21 tarihinde düzenlenmiştir Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı ktektir!