Asp.net mvc,webform için kolay çoklu dil desteği örneği

Merhabalar. Çoklu dil her uygulamada ihtiyaç duyulabilen bir yapı. Bunun için bir çok yöntem tabi ki mevcut. Yeni keşfettiğim bir nuget paketi ile bu iş çok kolaylaşmış. Ne yapıyor sözel olarak anlatayım.  Biz uygulama içerisindeki yazı ve model açıklamlarını [[[ buraya yazıyoruz ]]] o bize pot dosyası veriyor. Bunu yaparken düz yazı ve türkçe karakter kullanıyoruz. Böylece ana dili kodlar ve geliştirirken zaten giriyoruz. Sonrada locale klasorundeki po mo dosyalarını /fr /ar gibi dosyalarını koyarak anında kazanıyor.  Po mo size tanıdık geldi ise söyleyim WordPress’in de kullandığı gnu unix dunyasından gelen bir yapı. detaylar:https://en.wikipedia.org/wiki/Gettext

Türkçeleştirmek için poEditor (https://poeditor.com/) kullanıyoruz ki bu çok sık kullanılan bir araç olduğu için topluluk projelerinde harika olacaktır. Neyse Hemen nasıl yapıyoruza geçelim.

Ben mvc boş projesi açtım.Konuda da belirttiğim gibi webform içinde kullanabilirsiniz.

PM> Install-Package i18N

ile nuget paketini kuruyoruz. Ardından web.config dosyasına

 <system.webServer> <!-- IIS7 'Integrated Mode'-specific config -->
    <modules>
      <add name="i18n.LocalizingModule"
              type="i18n.LocalizingModule, i18n" />
    </modules>
  </system.webServer>
  <appSettings>
...
    <add key="i18n.DirectoriesToScan" value=".." /> <!-- Rel to web.config file -->
    <add key="i18n.WhiteList" value="*.cs;*.cshtml;*.sitemap" />
...  
</appSettings>

ekliyoruz. Projemize bir adet locale klasoru ekliyoruz. Ardından metinlerimizi [[[ içerisine yazıyoruz]]] bu metinleri default dilde (en ayarlı ancak değiştirilebiliyor) ilk yazdığımız hali çalışıyor. Diğer dillerde ise locale klasorune message.

Şimdi projemiz içindeki dosyaların pot dosyasını oluşturmak için iki yöntemimiz var. Birisi proje dosyamızın post-build içinde kısmına aşağıdaki komutu ekleyerek

    "$(TargetDir)i18n.PostBuild.exe" "$(ProjectDir)\web.config"

İkincisi visual studio extension.(Geliştirici su an vs 2012/2013 için mevcut). Bu ikisini de nuget paketi yüklendikten sonra packages klasoru içerisinde i18n içinde tools klasöründe.ilk seçeneğin çalışması için bin klasorune tools içindekileri kopyalayın. Takılırsanız comment atın elimden geldiğinde yardımcı olmak isterim.

Örnekte githubda

https://github.com/mahmut-gundogdu/aspnetmvc-cokludil-ornegi

Bir cevap yazın