Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
ADO.NET/SQL
C / Sys Prog.
Genel
Mono ve .NET
Silverlight
XML / Web Serv.
X86 Assembly
C++ / C++.NET
J#.NET / Java
.NET 3.x
UML / Analiz
Yazılım Müh.
ASP.NET
C# / VC#/.NET
Mobil Prog.
PHP 5
YAZAR HAKKINDA
Ali Hıdımoğlu
http://www.csharpnedir.com/
İletişme geçmek için
tıklayın
.
7
Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için
tıklayın
.
Yayınlanan diğer makaleleri için
tıklayın
.
İlgili etiketler:
burada
diyerek
dizayn
explorer
ingilizce
istediginiz
kaynak
kismina
oluyor
otomatik
projemize
resource
sayesinde
solution
tiklayarak
ASP.NET
Ali Hıdımoğlu
YAZI HAKKINDA
Türü
:
Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi
:
Orta
Kategori
:
ASP.NET
Yayınlanma Tarihi
:
11.4.2006
Okunma Sayısı
:
46583
Yorum Sayısı
:
12
yorum yaz
SİTE İÇİ ARAMA
Üye
GİRİŞİ
Üye girişi için
tıklayın
.
Kullanıcı Adı
Şifre
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
Şifremi / Kullanıcı Adımı unuttum.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
Serbest KÖŞE
(?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Turhal Temizer
Conda install environment.yml Package
26.12.2024
Turhal Temizer
Mac OS/X Removing CUDA
26.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak
26.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi
26.12.2024
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
ASP.NET
/
ASP.NET 2.0 ve Visual Studio 2005 ile Localization
ASP.NET 2.0 ve Visual Studio 2005 ile Localization
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
İnternete gezinirken dikkat ettiğimiz bir husus gezdiğimiz sitenin bizim dilimizde olup olmadığı. Bu sorun bir yana dursun biz sitemizde çoklu dil kullanmak istediğimizde ne yapmalıyız işte bu soru kafalarımızı karıştırırken Framework 2.0 ın Localization desteği sayesinde bu işlemi ne kadar kolay yapabileceğimizi fark edeceğiz. İsterseniz fazla uzatmadan başlayalım.
Öncelikle yeni bir Web Site açalım ve bu site üzerinde bir örnekle anlatmaya başlayalım.
Whidbey de File>New>Web Site yolunu izleyelim ve "Localization" adında bir proje yaratalım.
Sayfanın sol altı kısmındaki Design(dizayn) butonuna basarak dizayn kısmına geçiyoruz ve sayfamızı tasarlamaya başlıyoruz aklıma benim anket sayfası tasarlamak geldi fakat siz istediğiniz şeyi yapabilirsiniz.
Evet basitçe bir sayfa tasarladıktan sonra şimdi lokalize etmeye başlayabiliriz. Sayfamıza tıkladıktan sonra Tools> Generate Local Resource ye tıklıyoruz.
Bu işlem sayesinde projemize App_LocalResources klasörü eklenmiş oluyor. Solution Explorer sayesinde görebiliriz. ( eğer yoksa Ctrl+W tuş kombinasyonu sayesinde ulaşabilirsiniz )
Eğer bir .resx dosyası yada başka bir deyişle başka dil dosyaları eklemek istersek bu klasörün altına ekleyeceğiz.
Default.aspx.resx : bu dosyaya çift tıklarsanız bizim projemizdeki PageTitle, ButtonText gibi String değerlerin otomatik eklendiğini göreceksiniz. Bu dosyayı yeniden adlandıralım "Default.aspx.resx"
Şimdi sayfamızı İngilizce hale çevirmek için neler yapabileceğimize bakalım. Öncelikle Solution Explorer a geri dönelim ve Default.aspx.resx i kopyalayalım ve App_Local… klasörüne yapıştıralım ve yeniden adlandıralım “Default.aspx.en.resx”. Farklı bir yol izlemek gerekirse App_Local… klasörüne sağ tıklayalım ve Add New Item diyerek yeni dosya ekleme ye gelelim ve Default.aspx.en.resx diye yeni bir Resource File(Kaynak dosyası) oluşturalım.
Bunu yaptıktan sonra Default.aspx.resx deki tabloları kopyalayıp Default.aspx.en.resx e yapıştırırsak İngilizce dosyamız neredeyse hazır olmuş oluyor sadece oradaki yazılarımızı İngilizceye adapte etmemiz gerekecek.
Not:
eğer İngilizce değil de farklı bir dilde yapmak isterseniz Default.aspx.[kodu].resx şeklinde yapabilirsiniz.
Dil kodlamalarını
buradan
bakarak görebilirsiniz.
Örnek: Default.aspx.de-DE.resx (Almanya Almancası), Default.aspx.ar-EG.resx (Mısır Arapçası ), Default.aspx.de-CH.resx ( İsviçre Almancası ), Default.aspx.tr-TR.resx ( Türkiye Türkçesi)(fakat biz default tr kullandığımızdan bunu yapmamız gerekmez.)
Sistem otomatikman bu dosyaları bulup sizin verilerinizi çekecektir.
Bu kadarını yaptık şimdi Default.aspx dosyasını açalım ve sol alt köşeden Source ye tıklayarak kod kısmına geçelim ne yaptık bir bakalım burada hangi component in Resource dan çekileceğini ayarlayan bir kod ekleniyor.
<asp:Label ID="Label1" runat="server" Font-Bold="True"
meta:resourcekey="Label1Resource1"
Text="En kullanışlı bilgisayar dili ?">
</asp:Label>
Projemizde gerekli işlemleri yaptıktan sonra nasıl dil seçtireceğiz onun için InitializeCulture(); fonksiyonunu kullanacağız. Solution Explorer’a sağ tıklayıp View Code diyerek kod ekranına geçelim
protected override void InitializeCulture()
{
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
base.InitializeCulture();
}
Diyerek istediğiniz dili ekletebilirsiniz “en-US” kısmı değişecek. Fakat biz bunu kullanmayacağız ben ToolBox dan bir DropDownList(Açılır Liste) ekleyeceğiz ve onu ekledikten sonra Enable AutoPostBack i seçelim ve boş bir yere tıklayalım bu sayede listeden bir şey seçtiğimizde otomatik fonksiyonu çalıştıracak.
Bunu yaptıkdan sonra DropDownList1 de Edit Items diyerek yeni liste elemanları ekleyelim
Burada Text e dilin ismini yazdık Value yani değer kısmına da tr-TR Türkçe için İngilizce için en-US (en-UK İngiliz İngilizcesi için) Fransızca için fr-FR Arapça için ar-EG ekledik.
Bu dilleri ekledik ama bunlar için Resource neden oluşturmadık
diye soracaksanız buna ilerde değineceğiz. Sonra OK diyerek diyalog penceresini kapatalım. Ve kod ekranına geçelim fonkisyonumuzu şöyle değiştirelim.
protected override void InitializeCulture()
{
string Kultur = Request.Form["DropDownList1"];
if (string.IsNullOrEmpty(Kultur)) Kultur = "Auto";
//Bunu kullanym
this.UICulture = Kultur;
this.Culture = Kultur;
//Yada ?u kodu kullanabilirsiniz
//if (Kultur != "Auto")
//{
// System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(Kultur);
// System.Threading.Thread.CurrentThread.CurrentCulture = ci;
// System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
//}
base.InitializeCulture();
}
Ekledikten sonra DropDownList1 e çift tıklayarak SelectedIndexChanged fonksiyonun içine girelim ve InitializeCulture(); ekleyelim
Evet sitemiz de Default.aspx e geçip son ayarları yapacağız dizayn kısmına geçelim ve tüm radio butonları seçip Events kısmına geçelim ve Checked_Changed fonksiyonunu Checked_Changed’e sağ tıklayarak sıfırlayalım(Aşağıdaki resim daha açıklayıcıdır.) Ctrl+F5 kuş kombinasyonunu izleyelim ve çalıştıralım.
Şekilde de görüldüğü gibi projemiz çalıştığında her şey normal gibi görülebilir ama listeden elemanları seçince sitemizin dili hemen değişmiş bulunacaktır. Şimdi olayı biraz daha fantastik hale getirelim ve projemize derleme anında değilken bir Calendar(Takvim) sürükleyip bırakalım ve çalıştıralım. Listeden İngilizce yi seçince İngilizce oluyor tamam ama takvim için bir düzenleme eklemedik burası otomatikman oluyor peki diğer dillerde ne olacak resimde de görüldüğü gibi tüm dillerde aynı etkiyi yapıyor Calendar componenti için otomatik olarak Framework 2.0 da dil özellikleri tanımlanmış durumda.
Bir de Türkçe sayfada butonumuz kırmızı gözüksün İngilizce sayfada mavi gözüksün isteyebiliriz bununla ilgili özellikleri de nasıl ele alabileceğimize değinmek istiyorum.
Öncelikle projemizin Solution Explorer’ını açalım ve http://localhost/Localization yazan yere sağ tıklayalıım ve Add Folder seçeneğinden projemize bir App_GlobalResources klasörü ekleyelim bu klasör, altına eklenecek olan Resource yani kaynak dosyalarının global değişkenler içeriyor olduğunu ifade ediyor.
App_GlobalResources klasörüne sağ tıklayarak Add New Item diyelim ve Resource.resx adında bir Resource File oluşturalım. Bu kaynak dosyasının içine Name(ismi) i Renk olan ve Value(değer)’si Red olan bir değer atayalım Ctrl+S ile kaydedip Solution Explorer a geri dönelim ve Resource.resx dosyasını kopyalayayıp App_GlobalResources klasörüne yapıştıralım ve ismini Resource.en.resx yapalım. Çift tıklayarak açalım ve içindeki Red değerini Blue olarak atayalım ve kaydedelim.
Buradan devam etmek gerekirse pek fazla bir değişiklik yapmayacağız ama şimdi Default.aspx sayfasının dizayn görünümüne geçelim ve oradan bir buton sürükleyelim ve buton un Properties (özellikler) penceresine girelim oradan Expressions u bulalım ve resimdeki gibi özelliklerine girelim.
Buradan BackColor yerine istediğimiz bir değişkeni seçebiliriz tabiî ki buton’a bağlı olan özelliklerden. Seçtikten sonra Expression Type (Yükleme Tipi) başlığının altından Resources i seçelim ve alttan ClassKey kısmına Resource.aspx deki Resource ana başlığını ekleyelim eğer buraya istediğiniz bir adı vermişseniz bu adı da görecektir. ResourceKey kısmına iste belirttiğimiz kaynak dosya içerisindeki Name i yazmamız gerekecek (tabiî ki Renk başlığı). Ok diyerek çıkalım o ekrandan sonra da Source diyerek kaynak görünüme bir bakalım burada buton a şöyle bir tag eklenmiş oluyor :
<asp:Button ID="Button1" runat="server" BackColor="<%$ Resources:Resource, Renk %>" Text="Ekle" /></div>
Eğer istersek buton u ekledikten sonra Expressions kısmına gelmeden html kod görünümüne girip şu kodu eklersek BackColor="<%$ Resources:Kaynak kod başlığı, Değerin ismi %>" buton için otomatik çekilecektir burada BackColor yerine istediğimiz bir değeri de ele alabilirdik. Gerekli değişiklikleri yaptıktan sonra sitemizi Ctrl+F5 ile çalıştıralım eğer F5 e basarsanız size Web.Config dosyasını ekleyip eklemeyeceğinizi soracaktır biz hatalara daha hakim olmak için şimdilik eklememeyi tercih ediyoruz ama eklerseniz de hiçbir sakıncası olmaz.
Resim de de görüleceği üzere İngilizceyi seçtiğimizde düğmemiz mavi Türkçe de ise kırmızı.
Biraz daha işi biraz daha eğlenceli hale getirelim ve bir label atalım ismi Label2 olan ve hiçbir şey yapmadan sayfanın boş bir kısmına çift tıklayalım ve otomatikman Page_Load fonksiyonuna gelelim burada double cinsten bir sayı tanımlayalım ve aşağıdaki kodu yazalım.
double sa = 2342232.232;
Label2.Text = String.Format("{0:c}", sa);
Bu kodu yazdıktan sonra programımızı çalıştıralım dikkat ettiniz mi girilen sayı TL olarak dizildi. Listemizde olan tüm dillere göre yeniden düzenlenip ekrana basılıyor.
İşte işin basitlik kısmı biraz zorlandıktan sonra ortaya çıkıyor. Tabiî ki eliniz alıştıkça daha hızlı ve daha kolay olacaktır. İşinize yarayacak bir konuya daha değinmiş olduk umarım hoşunuza gitmiştir üzerinde biraz daha çalışında fark ediceksiniz ki aslında daha basit bir işlem. Örnek kodlar ekte gönderilmiştir.
Not:
Bu makaleyi yazarken bana yardımcı olan arkadaşlarıma teşekkürü borç bilirim. İyi çalışmalar.
Kaynak kodu indirmek için yıklayın.
Ali HIDIMOĞLU
[email protected]
Kaynaklar :
MSDN Dökümanları
Makale:
ASP.NET 2.0 ve Visual Studio 2005 ile Localization ASP.NET Ali Hıdımoğlu
Yazılan Yorumlar
Yorum Yaz
KAS
3
2010
Mehmet Özdemir
/
üye hakkında
Hocam simdi oldu ugrasdım ugrastım tam anlamıyla yaptım sonunda.gerçekten cok tskler makaleniz baya yardımcı oldu bana
KAS
3
2010
Mehmet Özdemir
/
üye hakkında
Hocam session atamasını nasıl yapabilirim bir türlü çıkamadım da bu işin içinden yardımcı olabilir misiniz?
KAS
3
2010
Ali Hıdımoğlu
/
üye hakkında
Mantığı düzgün kuruyorsun, fakat yine de Request.Form'dan gelen verilerin değişken olma ihtimalleri var. Onun yerine basitçe Session kullanabilirsin, daha kesin sonuç almanı sağlar...
KAS
2
2010
Mehmet Özdemir
/
üye hakkında
peki hocam normalde auto olarak geliyor ya bunu tr veya en yapsam ve diger sayfalarda direk request.form dan gelen veriyi koydugum zaman otomatik olarak benim en basta seçtiğim neyse o dil çıkar değil mi?yoksa ben mi mantıgı yanlıs kuruyorum
KAS
2
2010
Ali Hıdımoğlu
/
üye hakkında
Merhaba Mehmet, Başka sayfaların da etkilenmeleri için onlar da kültür parametresi belirtilmelidir (örnk: en-EN kültürü). Bunun için en kolay yol, öncelikle kişinin seçtiği parametreyi bir yere kaydet (veritabanı, session, cookie, querystring herhangi biri işini görür), sonrasında da diğer sayfa da kültür parametresi çağrılırken oradan pametreyi alarak çağır. İşini görecektir...
KAS
2
2010
Mehmet Özdemir
/
üye hakkında
Hocam makaleniz tam aradıgım seydi ve işime yaradı fakat bir sorunum var.mesela ingilizce yi sectim tamam calıstı.fakat baska bir sayfaya gidince ingilizce olarak gitmiyor veya aynı sayfanın linkine tıklayınca yine aynı sorun oluyor sayfa türkçe oluyor :)
EYL
27
2010
haci kisi
/
üye hakkında
makalenizi okudum. güzel bir makale. şunu sormak istiyorum, sitemizdeki makale kısmını düşünelim .veritabanından çektiğimiz. tüm makaleyi ayrıca ingilizce mi yazacağız. yada o veritabanına türkçe yazdığımız makale otomotik ilgilizceye yada arapçaya dönüşecekmi, dönüşecekse nasıl ?
ŞUB
1
2010
Ali Hıdımoğlu
/
üye hakkında
Bunun için tavsiye edebileceğim en güzel yöntem, veritabanında kayıtları hem ing. hem de türkçe tutmak ve o an kişinin seçtiği dile göre getirmektir. Başka bir yöntem de dictionary mantığı kullanmak...
ŞUB
1
2010
Halil ibrahim Nuroğlu
/
üye hakkında
ufak bi sorum olacak. Mesela sitemde dinamik kategoriler var. Yeni eklenen kategorilere nasıl dil desteği vereceğim?
NİS
27
2006
Gökhan Mutlu
/
üye hakkında
Datagridin headerını multilang yapmak için onitemcreate gibi bir eventinde GetString(SOMEHEADERKEY) gibi bir metod kullanmıştık. Kısaca manuel olarak. Ama bu işi basitleştirmeleri (nasıl yapılacağını bulamasamda) iyi bir şey. Ama datagrid le inline editing yapmayacaksan neden ihtiyacın olsun ki..Repeater veya xml-xslt kullanmak çok daha iyi fikir bence.. Tamam, tamam basitlik ve projeyi hızlı yapman gerektiğini söyleyeceksin..Kolay gelsin.
NİS
26
2006
Ali Hıdımoğlu
/
üye hakkında
Yöntemi denedim datagrid nesneinde grid deki kolon başlıklarını düzenleye biliyosun misal Ad adı verilen bir sütununda onun ismini localization ile çağırabiliyorsun. Bunun için localization yapmadan önce gridi tamamlaman gerek ondan sonra Generate Localization ile onun dosyalarını .resx dosyasından yapabilirsin.
NİS
23
2006
Tolga yikilmaz
/
üye hakkında
bu yöntemi bir süre kullandım ama sonunda kaldıdım çünkü griddeki kolonları nasıl turkçe yapacağımı bulamadım böle bir deneme yaptınızmı
Sayfalar :
1
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için
tıklayın
.
Üye değilseniz
Üyel Ol
linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
Bu Konuda Son 10
Eklenen Son 10
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl