MVC – Kaynak Dosyaları (.resx) ile ÇokluDil(MultiLanguage) Desteği Yapılandırması

Merhabalar,

Bu yazımızda web siteleri için çoklu dil desteğinin oluşturulmasına ilişkin xml tabanlı veri tutan resource file ları kullanıyor olacağız.

.resx dosyaları içerisinde verileri key-value şeklinde tutarız.Oluşturacağımız Key değeri bizim uygulamamızda çağıracağımız parametre görevini görecektir. Projemize ekleyeceğimiz ilk .resx dosyası bizim default culture yani uygulama ayağa kalktığında sitenin son kullanıcıya göstereceği dile sahip verileri tutacak olan dosya olacaktır. Daha sonra ekleyeceğimiz .resx dosyalarına ekleyeceğimiz dile ait culture değerlerini ingilizce ise “.en-US”,fransızca ise “.fr-FR”,almanca ise “.de-DE” ispanyolca için “.es-MX” şeklinde uzantılar hazırlayarak isimlendiririz.

Örneğin ;

  • Türkçe        -> Resource.resx
  • İngilizce     -> Resource.en.resx
  • Fransızca   -> Resource.fr.resx
  • Almanca    -> Resource.de.resx
  • İspanyolca -> Resource.es.resx

Şimdi örneğimize başlayalım.

1-) Visual studio da bir mvc projesi açıyoruz.

OK dedikten sonra gelen ekranda template olarak Basic seçerek devam edelim.

2-) Projemizin ana dll leri ve klasörüleri oluşmuş durumda.Herhangi bir veritabanı bağlantısı yapmadan normal bir şekilde siteyi ayağa kaldırmak için hazırlıyoruz. Bunun için öncelikle controller ekleyelim.

(Sıfırdan gelenler için; controller klasörüne sağ tık add controller diyerek ilerliyoruz)

2.PNG

Index action ı sonuçlarını görüntülemek için bir view ekliyoruz. (view sağ tık add view)

3.PNG

view için layout u da seçtiğimize göre dil seçimine uygun küçük bir tasarım yapalım.

4

3-) Şimdi dil değişimleri için kullanacağımız modellerimizi yazıyoruz. Yazılacak olan tüm controller larda geçerli olması için controller dan türeyen bir başka controller yazıyoruz.

6.PNG

SiteBaseController sınıfı sayesinde controller lar ilk çalıştıklarında cookie de olan dil bilgisini referans alarak sitenin dilini değiştirmeye yardımcı olacaktır.

Birde SiteLanguage sınıfı oluşturuyoruz,burada cookie ye gönderilecek olan değerleri belirliyor olacağız. Language isimli sınıfta dile ait olan isim ve culture da tutulacak olan değerini tutacak property ler vardır.

7


8.PNG


9.PNG

4-) Controller ımızda da gerekli değişiklikleri yapalım.

10.PNG

Home controller ımız burada referans olarak SiteBaseController ı almış oldu. Sitedeki dil değiştirme işlemi başlatacak olan Action ımızda ChangeLanguage olacak. Buraya gönderilecek olan parametrelere göre resources tan okuma yapılacak.

5-) _Layout ta methodları çalıştıracak olan anchor ları ve gönderecekleri parametreleri de aşağıdaki gibi düzenliyoruz.

11.PNG

6-) Sıra geldi resourse dosyalarını kullanmaya.

Projeye öncelikle Resource isminde bir klasör ekleyelim. .resx dosyalarını bunun altına toplayacağız. Daha sonrada 4 tane resource file ekleyelim.

12.PNG

Ekledikten sonra da key ve value larını belirliyoruz ;

Almanca için;

14.PNG

Fransızca için;

15.PNG

Resources dosyalarının access modifier larını PUBLIC olarak işaretliyoruz. Şimdi de ara yüzümüzde bu key leri olması gereken yerlere yazıyoruz;

13.PNG

Projemizi tekrar debug ediyoruz ;

P_20170924_030724.gif

projemizde çoklu dil desteğini sağlamış bulunuyoruz. iyi çalışmalar herkese.

MVC – Kaynak Dosyaları (.resx) ile ÇokluDil(MultiLanguage) Desteği Yapılandırması” için 20 yorum

  1. Merhabalar öncelikle makale için teşekkür ederim.
    Uygulamaya çalıştım ancak problem yaşıyorum, yardım ederseniz sevinirim.

    1. “Birde ‘SiteLanguage’ sınıfı oluşturuyoruz” demişsiniz = acaba SiteLanguages mi olacaktı.

    2. foreach (var item in xxxApp.Models.Language.SiteLanguages.AvailableLanguage) bu kullanım için hata alıyorum. language içinde site languages yok vs.

    Örnek kod gönderirseniz daha yardım cı olacak sanırım.

    Beğen

    1. yorumlarınızı yeni gördüm Ahmet hocam, onaya düşüyor önce, ben görünce aktif oluyor yorumlar. o projeyi silmişim direkt onu gönderecektim yoksa, yazdığınız projeyi gönderin isterseniz bakayım ya da team viewer verin bağlanıp bakayım hocam.

      Beğen

    1. Arkadaşlar vakit bulabildim, vs 2015 te yazdığım kodu yazıyı tekrar okuyarak vs 2019 da dotnet versiyon 4.7.2 seçili iken tekrar yazdım.

      Mail adresinizi paylaşırsanız projeyi olduğu gibi gönderebilirim.

      Beğen

  2. Bir konu bu kadar karışık anlatılabilir 😦 Yaptıklarınızı göstermişsiniz sadece anlatmamışsınız maalesef. Biraz bilgim olduğu için bir noktaya kadar geldim fakat foreachteki MVCResources kısmını bile aynı şekilde yazmaya çalışan olacaktır. Projeyi ekleseniz ziyaret edenler için daha verimli bir kaynak olabilir. Emeğinize sağlık buarada. Kötülemiyorum yaptığınız işi eleştiriyorum sadece, yanlış anlamayın.

    Beğen

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s