ASP.NET GLOBAL ve LOCAL RESOURCE KULLANIMI VE FARKLARI

Uygulamalarımızda çoklu dil desteği yapmak için global ve local resource dosyalarından faydalarınız.

Genelde uygulamalarda çoklu dil desteği yapmak için bir dropdowndanda dil değiştiğinde uygulamadaki buton,label vs alanların text kısımlarıda değişeceği bir yapı kurulur.

Aşağıdaki gibi örnek bir form oluşturalım.

Daha sonra local resource dosyasını oluşturmak için

Toolsdan — >Generate Local Resource seçeneğine basalım bu sayede otomatik olarak sayfamıza ait resource dosyası oluşacaktır.Bu şekilde generate ettiğimizde otomatik olarak controllere meta:resourcekey eklenerek localizasyon kullanımına hazır hale gelecektir

Bunun yerine asp.net folderlarından App_LocalResources dosyasını ekleyerek içine add new item diyip resource dosyasını manuel de oluşturabiliriz.

Biz default olarak Türkçe kullanacağız ancak İngilizce desteğide istiyoruz bunun için generate dediğimizde oluşan local resource file kopyasını alarak default.aspx.en-Us.resx  şeklinde ismini değiştiriyoruz.en-Us yazan yer her dil için farklı bir kod olacaktır ,İngilizce için bu şekildedir.Daha sonra kontrollerimizin text alanlarını bu dosyada değiştiriyoruz

Bu işlemi yaptıktan sonra istediğimiz dropdown listen seçtiğimiz dile göre sayfanın İngilizce veya Türkçe olması bunun için ise sayfamıza aşağıdaki gibi kodlarımızı eklememiz lazım.

Buradaki kod bloğu msndede mevcuttur.İngilizce olması için ddlDilin ingilizce seçeneğinin valuesu en-Us şeklindedir.

 protected override void InitializeCulture()

    {

        if (Request.Form[“ddlDil”] != null)

        {

            String selectedLanguage = Request.Form[“ddlDil”];

            UICulture = selectedLanguage;

            Culture = selectedLanguage;

            Thread.CurrentThread.CurrentCulture =

                 CultureInfo.CreateSpecificCulture(selectedLanguage);

            Thread.CurrentThread.CurrentUICulture = new

                CultureInfo(selectedLanguage);

            base.InitializeCulture();

        }

    }

Aşağıdaki resimlerdede görüldüğü gibi web sayfasının title özelliğine kadar bile bu yöntemle değiştirebiliyoruz.

Global Resources ise local resource benzemekle beraber aralarındaki fark local resources sayfa bazında kullanılırken global resources birden fazla sayfa için kullanabilirsiniz.Örnek sadece ad,tip,yaratılma zamanı gibi aynı alanları içeren ama farklı formlara sahip yapılarda tek bir global resource dosyası tanımlamak işinize yarayabilir

Bunun içinse projemize asp.net folderlarından App_GlobalResources dosyasını ekliyoruz ve bu dosyanın içine resource dosyamızı oluşturuyoruz.

Ve Butonumuzun değerinin local resource dosyası değilde global dosyadan okunmasını istiyoruz bunun içinse  Texti global dosyadaki değerden okuyacak şekilde ayarlıyoruz

<asp:Button ID=”btnTopla” runat=”server” Text=”<%$Resources:globalResource,ToplaButton %>”

/>

Not:aşağıdaki kod bloğu local resourceden okunacak şekilde meta:resourcekey attribute içerir.Eğer localden değil globalden okuyacak bu attribute olmamalıdır.

<asp:Button ID=”btnTopla” runat=”server” Text=”topla”

                    meta:resourcekey=”btnToplaResource1″  />

 Tabi yine globalresource kullanarak ingilizce yapmak istiyorsak

globalResource.en-Us.resx şeklinde aynı dosyamızın ingilizce değerlerini içerecek en-Us uzantılı resource dosyasını yaratmamız gerekiyor

protected override void InitializeCulture() yine bu metod içindeki kodların olması gerekiyor.

Resimdede görüldüğü üzere aynı sayfada hem global resourceden hem local resourcedan değerler okutmak mümkündür

Not:Local resource otomatik generate ettiğimizde sayfamızın özelliklerinede aşağıdaki gibi eklemeler gelmektedir

<%@ Page Language=”C#” AutoEventWireup=”true”  CodeFile=”Default.aspx.cs” Inherits=”_Default” culture=”auto” meta:resourcekey=”PageResource1″ uiculture=”auto” %>

Bu yazı .NET kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

ASP.NET GLOBAL ve LOCAL RESOURCE KULLANIMI VE FARKLARI için 2 cevap

  1. Elif der ki:

    Merhaba, Yaziniz cok guzel fakat eksik gibi. protected override void InitializeCulture() metodunu hangi sayfaya eklemeliyiz? ve ddlDil bunu nerde olusturduk? Umarim cevap alabilirm. Iyi calismalar..

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>