Microsoft hesabıyla oturum açın
Oturum açın veya hesap oluşturun.
Merhaba,
Farklı bir hesap seçin.
Birden çok hesabınız var
Oturum açmak istediğiniz hesabı seçin.

ses sütununu ASP.NET destekleme

Bu sütunu ihtiyaçlarınıza göre özelleştirmek için sizi ilginizi çekici konular ve gelecekteki Bilgi Bankası makalelerinde ve Destek Sesi sütunlarında ele almak istediğiniz sorunlar hakkındaki fikirlerinizi göndermeye davet ediyoruz. Fikirlerinizi ve geri bildirimlerinizi Göndermek için Sor formunu kullanabilirsiniz. Bu sütunun en altındaki formun bağlantısı da vardır.

Giriş

Hoş geldi -niz! Bu, Microsoft ASP.NET Geliştirici Desteği ekibinden Sukesh Khare. İlk kez bir Destek Sesi sütunu yazıyorum. Önümüzdeki aylarda daha fazla sütun yazmayı dört gözle bekliyorum.

Bu ayın sütununda Active Server Pages (ASP) ve ASP.NET'daki genelleştirme sorunlarını, ASP'de karşılaştığımız sorunları, 1x ASP.NET'da işlerin nasıl değiştiğini ve genelleştirme cephesinde ASP.NET 2.0 ile ilgili neler olduğunu ele alacağım.

Not Anlamadığınız bir terimle karşılaşırsanız bu sütunun altındaki Sözlük bölümüne bakın.

ASP'de genelleştirme sorunları

ASP.NET önce, genel kullanıcılar için uygulamaların geliştirilmesine yönelik yapılandırılmış bir destek yoktu. ASP'nin erken geliştirilmesi sırasında, benim gibi geliştiriciler işletim sistemlerinde, tarayıcılarda, ASP'lerde ve arka uç sistemlerinde genelleştirme için yalnızca dağıtılmış destek buldu. Ancak, bu uygulamalar arasında otomatik bağlantı olduğunu nadiren gözlemledik. Neyse ki, genel kullanıcılara yönelik uygulamaların geliştirilmesi için kullanabileceğimiz karakter kümeleri, kod sayfaları, tarayıcı dilleri ve yazı tipleri gibi kavramları anlıyoruz.

ASP.NET içindekilerin gördüğü tüm genelleştirme sorunlarını kategorilere ayırmak çok zor olacaktır. Bunun yerine, bu sorunların çeşitlileriyle ilgili bir dizi kavramı listeliyorum.

Karakter kümeleri ve kod sayfaları

Bilgisayar ekranımızdaki karakterlerin yalnızca bir bayt serisi olduğunu biliyoruz. Bayt serisi çeşitli yollarla oluşturulabilir ve yorumlanabilir. Yorumlama, bayt dizisinin oluşturulduğu kodlamadan farklı bir kodlama kullanırsa, yorum çöp olarak görüntülenir. Karakter kümeleri (karakter kümeleri), genellikle tarayıcılar tarafından kullanılan kodlama biçimleridir. Sunucu tarafı dönüştürmeleri için daha uygun olan Codepage özelliği, yalnızca karakterlerin nasıl kodlandığını belirten bir dönüştürme tablosudur.

Tarayıcılar, form gönderi verilerini geçerli karakter kümesine göre kodlar. Geçerli karakter kümesi "windows-1256" ise, sunucuya bayt iletimi de "windows-1256" olarak kodlanır.

ASP yorumlanırken, Form ve Querystring koleksiyonları kodda başvurulana kadar oluşturulmaz. Bunlar oluşturulurken, dize verileri geçerli kod sayfasına göre Unicode'a dönüştürülür. (Varsayılan olarak, hem ASP hem de ASP.NET Unicode biçimini kullanarak içeriği işler). Koleksiyonlara başvurmadan önce doğru kod sayfasını ayarlamanız çok önemlidir; aksi takdirde, bellekteki Unicode gösterimi doğru olmaz.

Kod sayfası ayarlamak için Session.Codepage veya Response.Codepage kullanın. Response.Codepage yalnızca Microsoft Internet Information Services (IIS) 5.1 veya sonraki sürümlerde kullanılabilir. Bu özellikleri ayarladığımız tamsayı değerleri (karakter kümesine karşılık gelir) hakkında bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:

Karakter kümesi tanıma
http://msdn2.microsoft.com/en-us/library/Aa752010.aspxÖrneğin, Arapça dilinin kod sayfasını ayarlamak için aşağıdaki kodu kullanın:

Session.Codepage = 1256

Response.Codepage yalnızca geçerli yanıtı etkiler. Ancak, Session.Codepage geçerli kullanıcı tarafından yapılan tüm yanıtları etkiler. Kod sayfası bu özelliklerden biri kullanılarak ayarlandığında ve Form ve Querystring koleksiyonları derlendiğinde, geçerli kod sayfasındaki bu değişiklik Response.Write yönteminin bellekteki Unicode'un geçerli kod sayfasına dönüştürülmesini sağlar. Bu konu hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:

Dize Dönüştürmeleri (ASP) için Kod Sayfasını Ayarlama http://msdn2.microsoft.com/en-us/library/ms525789.aspxKarakter kümeleri ve kod sayfalarıyla ilgili sorunlar söz konusu olduğunda alt satır, istemci karakter kümesi ve sunucu kod sayfasının eşleşmesi gerektiğidir.

Dilleri kabul etme

Bir ASP geliştiricisi, kullanıcının tarayıcısında hangi dilleri ayarladığını öğrenmek isterse, kullanıcının yanıtı okumak istediği dillerin (İngilizce, Almanca veya Hint gibi) listesini ve kullanıcının bu dilleri görmek istediği tercih sırasını bulmak için Request.ServerVariables ("HTTP_ACCEPT_LANGUAGE") değişkenini kullanabilir. ASP.NET'de, Request.UserLanguages özelliğinde dizi olarak benzer bilgiler bulunur.
Asp kodunda bu bilgilerin nasıl kullanılacağı hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:

229690 Tarayıcının dil ayarlarına göre ASP Yerel Ayar Kimliğini ayarlama
 

Internet Explorer'da çok baytlı karakter kümelerini görüntüleme

Çok baytlı karakter kümesini gösterebilen tek kodlama biçimi Unicode'dur (UTF-8). UTF-8 ile Kiril, Hint ve Japonca'yı aynı sayfada görüntüleyebiliriz. UTF-8 kullanmıyorsak, aynı anda bu dillerden yalnızca birini gösterebiliriz. Tarayıcının karakter kümesini ayarlamak için Response.CharSet özelliğini kullanın.

Sayfadaki statik çok baytlı karakterler

Doğrudan sayfada depolanan çok baytlı karakterleri görüntülemek için önce sayfayı belirli bir kodlamayla kaydetmemiz gerekir. UTF-8 en iyisi olacaktır, ancak belirli bir kod sayfası (karakterlerin kod sayfasıyla eşleştirilir) de çalışır.

Visual InterDev yalnızca ANSI İngilizce veya Unicode olarak kaydedilebildiğinden, Microsoft Visual InterDev kullanarak ASP dosyasını kaydetmek burada işe yaramaz. Unicode olarak kaydedilen herhangi bir ASP sayfası ASP tarafından desteklenmez.

Microsoft Visual Studio .NET'te bir dosyayı herhangi bir kodlamaya kaydedebilirsiniz. Bunu yapmanın iki yolu vardır. Varsayılan yol, kullanıcının geçerli kod sayfasını kullanarak dosyayı kaydetmektir. Bir dosyayı kodlamayla kaydetmenin ek bir yolu aşağıdaki gibidir:
Dosya menüsünde Dosyayı Farklı Kaydet'e tıklayın.
Dosyayı Farklı Kaydet iletişim kutusundaKaydet düğmesindeki açılan oka
tıklayın. Oka tıkladığınızda, seçeneklerKaydet ve Kodlama ile Kaydet'tır
. Kodlama ile Kaydet'e tıkladığınızda
, bilgisayarda yüklü olan kod sayfalarının listesinden uygulamak istediğiniz kodlama türünü seçebileceğiniz Gelişmiş Kaydetme Seçenekleri iletişim kutusu görüntülenir.


Not Bu, kaydetme işleminin kodlamasını değiştirir, ancak yalnızca bir kez geçerlidir. Sonraki kaydetme varsayılana geri ayarlanır.

Varsayılan kod sayfasını değiştirmek için, Dosya menüsünde Gelişmiş Kaydetme Seçenekleri'ne
tıklayın. Gelişmiş Kaydetme Seçenekleri iletişim kutusunda, kaydetme işlemleri için varsayılan kodlamayı istediğiniz kod sayfasına ayarlayabilirsiniz.

Bu yöntemler, dosyanın diske nasıl kaydedildiği ile ilgilidir. Ancak, daha önce açıklandığı gibi ASP çıkışını denetlemek için Session.CodePage ve Response.CharSet özelliklerini ayarlamamız gerekir. IIS 5.1 ve sonraki sürümleriyle, Response.CodePage özelliğini de kullanabiliriz.

Sunucuda varsayılan CODEPAGE

Sayfanın varsayılan yerel ayarı ve varsayılan kod sayfası, için kayıt defteri ayarlarına bağlıdır. VARSAYıLAN kullanıcı. Uluslararası anahtarı kayıt defteri hive HKEY_USERS\.DEFAULT\Control Panel\Internationalkonumunda bulabiliriz. IIS tarafından seçilen yerel ayarın davranışını da değiştirebiliriz.

Oturum açan kullanıcı, yukarıdaki anahtar veya sistem varsayılanı ile aynı yerel ayara sahipse, kullanıcı ayarı önceliklidir.

Örnek: Varsayılan yerel ayarın tarih biçimi 11.1.2004 olarak ayarlanırken, oturum açan kullanıcının (aynı yerel ayar kümesiyle) tarih biçimi 11/1/2004 olarak belirlenmiştir. 11/1/2004 ayarı ASP için geçerli olacaktır.

(ASP.NET için bu değişiklik gösterebilir. Bazı yüklemelerde, ASPNET kullanıcısı yüklendiğinde HKEY_USERS altında gösterilecek kendi profiline sahip olur. Diğerlerinde ise kullanır. VARSAYıLAN profil. <%@ %> bildiriminde codepage özniteliğini de kullanabiliriz. Bu, dosya farklı bir kodlamayla kaydedildiğinde ve kod sayfası 932 (Japonca) gibi varsayılan değerle kaydedildiğinde kullanılmalıdır.

Kod sayfası sorunları ve yazı tipi dönüştürme sorunları: hangisi?

Bazen, bir soru işareti (?) karakteri veya bir karakterin görünmesi gereken bir kutu görebilirsiniz.

Kod sayfası dönüştürme sorunları

Bir karakter soru işareti (?) karakteriyle değiştirildiğinde, bu bir kod sayfası dönüştürme sorununun oluştuğunun göstergesidir. Soru işareti (?), kod sayfası dönüştürmesi için varsayılan bir karakterdir ve temelde işletim sisteminin karakter değerini nasıl işleyip dönüştürdüğünü bilmediği anlamına gelir. Karakter değerini soru işareti (?) ile değiştirir. Bu, karakterin kod sayfası için geçersiz bir değere sahip olduğu veya dönüştürme için gereken kod sayfasının yüklenmediği anlamına gelebilir.

Yazı tipi dönüştürme sorunları

Bir karakter bir kutuyla değiştirildiğinde, bu bir yazı tipi dönüştürme sorununun oluştuğuna dair bir göstergedir. Bu, istemci tarafında, istemcinin bu karakteri doğru görüntülemek için doğru yazı tipi yüklü olmadığında oluşur. Örneğin, bir karakter Japonca karakter kümesinden geldiğinde ve istemcide Japonca yazı tipleri yüklü değilse, Japonca karakter kutu olarak görüntülenir.

Şimdi ASP.NET 1.x'te işlerin nasıl değiştiğinden ve bu değişikliklerin ASP.NET bağlamında genelleştirme sorunlarını nasıl etkilediğinden bahsedeceğim.

ASP.NET 1.x'te genelleştirme sorunları:

ASP.NET ile üç harika şey tanıtıldı:

  • web.config dosyasındaki
    <genelleştirme> etiketi <genelleştirme> etiketi, kod sayfalarının ve karakter kümelerinin tutarsız kavramlarından bizi uzaklaştırır ve ASP.NET içindeki değişkenlerin çoğunu denetlememize olanak tanır.

  • System.Globalization ad alanı
    Genelleştirme ad alanı, genelleştirmeyi işlemenin programlama gücünü sağlar.

  • Kaynak dosyaları kavramı büyük ölçüde geliştirilmiştir.
    Kaynak dosyalarıyla ASP'de kullandığımız şekilde ilgilenmeyiz. Şimdi, kaynak dosyaları tasarlayıp geliştirdiğimizde XML dosyaları biçimindedir ve çalışma zamanında birleştirilmiş olarak bulunurlar.

Genelleştirme yapılandırma etiketi:

Etiketteki iki önemli ayar şunlardır:

<globalization 
            requestEncoding="utf-8" 
            responseEncoding="utf-8"  />

Diğer olası ayarlar alanları şunlardır:

Fileencoding

.aspx, .asmx ve .asax dosya ayrıştırma için varsayılan kodlamayı belirtir. Bayt sırası işareti ön eki (imzalı) ile kaydedilen Unicode ve UTF-8 dosyaları fileEncoding değerinden bağımsız olarak otomatik olarak tanınır.

Kültür

Gelen Web isteklerini işlemek için varsayılan kültürü belirtir (System.Globalization ad alanından sınıf yöntemleri için geçerlidir).

Uıculture

Yerel ayara bağımlı kaynak aramalarını (uydu derlemeleri) işlemek için varsayılan kültürü belirtir.

Kültür dizeleri (kültür ve uiculture değerleri) hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:

System.Globalization.CultureInfoClass
http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspxBu ayarlar, yanıt tamamlandıktan sonra ve istek uygulamanıza teslim edilene kadar ASP.NET tarafından uygulanır. responseEncoding için, çıkışı depolamak için oluşturulan arabellek bu kodlamaya ayarlanır. Bu arabelleğe giren her şey arabelleğe eklendiği için ayara göre kodlanır.

requestEncoding için çalışma zamanı isteği okur ve bu bölümdeki ayara göre yorumlar. Ancak bu, sorunlara neden olabilecek bir ayardır. Aşağıdaki tabloda geçerli bir UTF-8 bayt dizisinin bit düzeni gösterilmektedir.

Karakter değeri ASCII 7 bit standardında yer alırsa bayt değeri değiştirilmez. Değer 127'nin üzerindeyse aşağıdaki kurallara uyması gerekir. Baştaki bit kümesi, dizide kaç karakter olduğunu gösterir. İlk bitin ardından her bayt, ilk bit 1 olarak ayarlanarak başlamalıdır.

UTF-8 bayt düzeni:

Bayt

Bit

Gösterimi

1

7

0vvvvvvv

2

11

110vvvvv 10vvvvvvv

3

16

1110vvvv 10vvvvvv 10vvvvv

4

21

11110vvvv 10vvvvvv 10v 10vvv

Sorun burada ortaya çıkıyor. Tarayıcı isteği tek bir bayt kodlamasına göre kodlarsa (iso-8859-1 gibi), yukarıdaki düzende 127'nin üzerindeki değerler geçerli olmaz. UTF-8 arabelleğine okunduklarında, geçersiz karakterler yalnızca çıkıştan bırakılır.

Çalışma zamanı kodlama değişiklikleri

Application_BeginRequest olayında requestEncoding değerini değiştirebilir ve istek işlenmeden önce geçerlilik kazanır. Yanıt için Page_PreRender olayı çıkışın kodlamasını değiştirmenin son şansıdır. Ayrıca, Response.Write'ın biz çağırdığımız anda bu arabelleğe karakterler yerleştireceğini unutmayın, bu nedenle Response.Write'ı kullanmadan önce doğru kodlamanın ayarlandığından emin olun.

Özgün veriler Unicode değil: Internet Explorer'ın çok baytlı karakter kümelerini yorumlamasını sağlama

Gerekirse ASP.NET ASP gibi davranmasını da sağlayabiliriz. Bunun gerçekleşmesi için responseEncoding ve requestEncoding değerini windows-1252 olarak ayarlamamız (iso-8859-1'den daha eksiksiz bir kodlama) ve metni doğru görüntülemek için Response.Charset özelliğini kullanmamız gerekir. Bunun nedeni windows-1252'nin tek bayt kodlama düzeni olması ve arabelleğe eklenen baytları değiştirmemesidir. Bu nedenle, çift baytlı karakterler tek baytlık bir dizi olarak gönderilir. Ardından, Response.Charset özelliğini kullanarak Internet Explorer'a baytları nasıl yorumlayabileceğinizi söyleyebiliriz. Özgün veriler UNICODE veya UTF-8 olarak depolanmamışsa (com nesnesinden dönüş değeri gibi) veya veriler Microsoft SQL Server N olmayan bir alanda (varchar gibi) depolanıyorsa bu senaryo gerekli olabilir.

SQL Server ve ASP.NET genelleştirme sorunları

SQL Server unicode veri girişi

Verileri SQL Server depolamanın en iyi yolu Unicode kullanmaktır. INSERT, UPDATE vb.'yi her kullandığımızda, Unicode verilerinin en düşük olasılığı bile varsa, değerden önce bir N eklememiz gerekir. Bu, veritabanına değerin Unicode olduğunu bildirir. Bunun iyi bir örneği ADO nesneleridir. Yeni kayıtlar eklemek için Recordset nesnesini kullanırsak bunu otomatik olarak yapar.

Aşağıda bir örnek verilmiştir:

INSERT INTO MusicAlbum (Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'Abida', 4653, 403)
Or:
Dim t As String = "INSERT INTO MusicAlbum(Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'" & TextBox1.Text & "', 4653, 403)"
SQL Server tarih/saat girişi

Genellikle ASP.NET uygulamamızda yorumlanan tarih/saatin kültürü ve yerel ayarı hakkında bilgi sahibiyiz. Ancak, tarih/saat verilerini dış kaynaklara göndererek ve dış kaynaklardan çekerken, tarih/saat biçimlerini yanlış yorumlama riskiyle karşı karşıyayız. Bunun nedeni, dış kaynağın kültürünün ve yerel ayarının uygulamamızdakiyle aynı olmasını her zaman garanti edemememizdir. SQL Server bu, SQL veritabanına kurulan bağlantı dizesinde 'geçerli dil' özniteliği kullanılarak çözülebilir. Connectionstring'de uygulamamızdaki kültürle aynı dil ayarını sağlayabiliriz. Bu bizi yanlış yorumlama riskinden korur çünkü SQL Server her zaman yukarıda belirtilen ayarı onaylayarak tarih/saat verilerini kabul eder ve gönderir.

System.Globalization ad alanı

Bu ad alanı, .NET Framework genelleştirme ve yerelleştirmenin temelidir. Bu ad alanında kullanılan ana sınıf CultureInfo sınıfıdır. Tarih/saat biçimi, sayı biçimleri, karşılaştırma bilgileri ve metin bilgileri gibi kültüre özgü bilgileri barındırır. CultureInfo sınıfı hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:

http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspxCultureInfo

Nötr kültürler ve belirli kültürler karşılaştırması

Tarafsız bir kültür, bir dille ilişkili olan ancak belirli bir ülke/bölgeyle ilişkili olmayan bir kültürdür. Belirli bir kültür hem bir dil hem de belirli bir ülke/bölgeyle ilişkilendirilir.

Örnek: "DE" (nötr kültür) Almanca dili içindir, "de-AT" (belirli kültür) ise Avusturya'da konuşulan Almanca dili içindir. Nötr kültürler biçimlendirme için kullanılamaz.

.NET Framework sınıfların güncel iş parçacığı ve kültür farkındalığı

Çıktının kültüre bağımlı olmasını beklediğimiz .NET Framework kitaplığındaki tüm sınıflar ve yöntemler iki yerleşik davranışa sahiptir:

  • Çıktının belirtilen kültüre dayalı olması için bağımsız değişkenleri sağlarken kültür kodunu belirtmemize izin verir. Bu isteğe bağlıdır.

  • Bu yanıtsızsa (genellikle böyledir), sınıflar Thread.CurrentThread.CurrentCulture özelliğini denetleyebilecek ve buna göre çalışacak kadar akıllıdır.

Bu özelliğin değerini aşağıdakine benzer bir kodla değiştirebiliriz:

    Dim ci As CultureInfo
        ci = New CultureInfo("de-AT")
        Thread.CurrentThread.CurrentCulture = ci

Bu kod örneğinde, "de" Almanca dilini, "AT" ise Avusturya'yı temsil eder. Bu örnekte DateTime.Now(). ToString yöntemi, tarih ve saati Avusturya'da Almanca dilinde ifade edilen tarih ve saat biçimine karşılık gelen bir biçimde döndürür.

Çerçeve, CurrentCulture özelliğinin her zaman başlatılmasını sağlar (aşağıdaki gibi):

  1. Program aracılığıyla her ne olarak ayarlanırsa ayarlansın.

  2. Programcı tarafından açıkça ayarlanmaması durumunda, özellik yapılandırma dosyalarından (<genelleştirme> etiketi) seçilir.

  3. Özelliği orada eksikse, Web sunucusunun üzerinde çalıştığı kültürdür. Bu genellikle işletim sisteminin diline karşılık gelen nötr kültürdür.

Kaynak dosyaları

Visual Studio .NET'te bir ASP.NET projesine eklenen Ekli Kaynak olarak ayarlanmış Derleme Eylemi özniteliğine sahip tüm .resx, .resource dosyaları ve dosyalar, bildiriminin bir parçası olarak otomatik olarak derlenir ve uygulama derlemesine eklenir. Bu, Visual Studio .NET komut istemi aracılığıyla Kaynak Dosya Oluşturucu (RESGEN) yardımcı programı kullanılarak bile el ile yapılabilir. Daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:

http://msdn2.microsoft.com/en-us/library/ccec7sz1(vs.71).aspxBu, genelleştirmeyle ilgisi olmayan uygulama kaynaklarını yönetmemiz gerektiğinde geçerli olan genel bir kavramdır. Ancak genelleştirmeyi uygularken uydu derlemelerini kullanmalıyız.

Uydu derlemeleri

Uydu derlemeleri, aşağıdakilerin doğru olduğundan emin olduğunuzda bir ASP.NET projesinde kullanılabilir:

  1. Tüm aspx dosyalarındaki tüm kullanıcı arabirimi öğelerinin id ve runat=server öznitelikleriyle donatılmış olması gerekir.

  2. Ayrı .resx dosyaları oluşturuyoruz. Her biri, uygulamamızın desteklemesini istediğimiz her kültüre karşılık gelir.

  3. Tüm bu dosyalar için ortak bir ad belirlememiz gerekir. 'Dizeler'.

  4. Ayrı .resx dosyalarını aşağıdaki commonfirstname adlandırma kuralıyla adlandırıyoruz. languagecode-regioncode.resx (örneğin: Strings.de-AT.resx, Strings.en-GB.resx ).

  5. Varsayılan örnekte görüntülenmesini istediğimiz tüm dizeleri içerencommonfirstname.resx (Strings.resx) kaynak dosyasına
    sahip olmamız gerekir.

  6. Kullanıcının kültürünü algılamak için kod yazın ve Thread.CurrentThread.CurrentUICulture özelliğini bununla eşleşecek şekilde ayarlayın.

  7. ResourceManager sınıfını kullanarak kaynakları yüklemek için kod yazın.

  8. Yüklenen nesneden dizeleri ayıklamak için kod yazın ve bunları kullanıcı arabirimi öğelerine atayın.

Bu adımları gerçekleştirdiğinizde Visual Studio.NET Strings.resx'i derler ve uygulama derlemesine (MyGlobalizationTestProjectName.dll) ekler. Ancak, diğer tüm .resx dosyaları için yürütülebilir kodu olmayan ancak yalnızca kaynak verileri olan ayrı dll dosyaları oluşturur. Bunlar aslında uydu derlemeleri olarak adlandırılır. Ayrıca, Visual Studio .NET bunları aşağıdakine benzer bir klasör yapısına yerleştirir:MyGlobalizationTestProjectName
|------- kutusu
|------en-US

MyGlobalizationTestProjectName.resources.dll |------ja-JP

MyGlobalizationTestProjectName.resources.dll |------de-AT
MyGlobalizationTestProjectName.resources.dll

CurrentCulture ile CurrentUICulture arasındaki fark

System.Globalization ad alanında sınıfların yöntemleri, çıktılarını vermek için Thread.CurrentThread.CurrentCulture özelliğine bağımlı olsa da, kaynak derlemesini yükleyen ResourceManager sınıfı uygun uydu derlemesini yüklemek için Thread.CurrentThread.CurrentUICulture özelliğine bağlıdır. Aşağıda C# kodu örneği verilmiştir:

using System.Globalization;
using System.Threading;
using System.Resources;

//Load resources. 
protected ResourceManager gStrings = new ResourceManager("MyGlobalizationTestProjectName.strings", typeof(MyTestWebFormName).Assembly);

// Get the user's preferred language.
string sLang = Request.UserLanguages[0];
// Set the thread's culture for formatting, comparisons, etc.   
Thread.CurrentThread.CurrentCulture =  CultureInfo.CreateSpecificCulture(sLang);
// Set the thread's UICulture to load resources
// from satellite assembly.
Thread.CurrentThread.CurrentUICulture = new CultureInfo(sLang);

private void Page_Load(object sender, System.EventArgs e) 

{ 

 if (!IsPostBack)  

 {      
// Get strings from resource file and assign to UI elements.
head1.InnerHtml = gStrings.GetString("satellite.head1");
p1.InnerHtml = gStrings.GetString("satellite.p1");
sp1.InnerHtml = gStrings.GetString("satellite.sp1");
sp2.InnerHtml = gStrings.GetString("satellite.sp2");
butOK.Text = gStrings.GetString("satellite.butOK");
butCancel.Value = gStrings.GetString("satellite.butCancel");
   }

 }

ASP.NET uydu derlemelerini seçme sırası:

İş parçacığının CurrentUICulture değerini ayarladığınızda ASP.NET aşağıdaki sırayla eşleşen kaynakları otomatik olarak seçer:

  • Eşleşen bir kültüre sahip bir uydu derlemesi bulunursa, bu derlemedeki kaynaklar kullanılır.

  • CurrentUICulture ile eşleşen nötr bir kültüre sahip bir uydu derlemesi bulunursa, bu derlemedeki kaynaklar kullanılır.

  • CurrentUICulture için bir eşleşme bulunmazsa yürütülebilir derlemede depolanan geri dönüş kaynakları kullanılır.

Not Bu, daha genel Kaynak Geri Dönüş İşlemi'ni temel alır. Daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:

http://msdn2.microsoft.com/en-us/library/sb6a8618(vs.71).aspx

El ile uydu derlemeleri oluşturma:

Uydu derlemelerinin bu kullanımı, Visual Studio .NET'in derlemelerin kendisini oluşturduğu yerdir. Ancak Visual Studio .NET, uydu derlemelerini varsayılan olarak kesin olarak adlandırmaz. Bu seçenekleri değiştirmek istiyorsanız uydu derlemelerini el ile oluşturmanız gerekir. Daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:

http://msdn2.microsoft.com/en-us/library/21a15yht(vs.71).aspx .

Küreselleştirme cephesinde ASP.NET 2.0'ın nesi var?

ASP.NET yaygın kullanımı ve ASP.NET 2.0'daki küreselleştirme özellikleriyle ilgili olarak göreceğimiz sorunların türleri hala biraz ileridedir. Ancak, genelleştirme metodolojisinin web uygulamalarına yönelik yönüne kısaca göz atmak iyi olacaktır.

ASP.NET 2.0'daki genelleştirme desteği radikal bir değişiklik geçirdi ve Web geliştiricilerine Web uygulamalarının yerelleştirilmesini Windows tabanlı uygulamalar için olduğu kadar kolay hale getirme olanağı verildi. ASP.NET 2.0'da genelleştirme metodolojisinin temelini oluşturan özelliklerin listesi aşağıdadır:

Kesin yazılan kaynaklar .NET Framework 2.0 sürümünün merkezinde, geliştiricilere Intellisense sağlayan ve çalışma zamanında kaynaklara erişmek için gereken kodu basitleştiren kesin türdeki kaynaklar için destek sağlanır.

Yönetilen Kaynak Düzenleyicisi Visual Studio .NET 2.0, dizeler, görüntüler, dış dosyalar ve diğer karmaşık türler dahil olmak üzere kaynak girdileri oluşturmak ve yönetmek için daha iyi desteğe sahip yeni bir kaynak düzenleyicisi içerir.

Web Forms Windows Forms geliştiriciler için kaynak oluşturma, otomatik uluslararasılaştırmanın avantajlarından zaten yararlanmış durumda. Visual Studio .NET 2005 artık Web Forms, kullanıcı denetimleri ve ana sayfalar için otomatik olarak kaynak oluşturarak hızlı uluslararasılaştırmayı destekleyecektir.

Geliştirilmiş çalışma zamanı desteği ResourceManager örnekleri çalışma zamanı tarafından yönetilir ve sunucu koduna daha erişilebilir programlama arabirimleri aracılığıyla kolayca erişilebilir.

Yerelleştirme ifadeleri Web sayfaları için modern bildirim temelli ifadeler, özellikleri, HTML özelliklerini veya statik içerik bölgelerini denetlemek için kaynak girişlerinin eşlenmesine yardımcı olur. Bu ifadeler ayrıca genişletilebilir olduğundan, HTML çıkışına yerelleştirilmiş içerik ekleme işlemini denetlemenin ek yollarını sağlar.

Otomatik kültür seçimi Her Web isteği için kültür seçimini yönetme, tarayıcı tercihlerine otomatik olarak bağlanabilir.

Kaynak sağlayıcısı modeli Yeni bir kaynak sağlayıcısı modeli, geliştiricilerin düz dosyalar ve veritabanı tabloları gibi alternatif veri kaynaklarında kaynakları barındırmasına olanak tanırken, bu kaynaklara erişmeye yönelik programlama modeli tutarlı kalır.

ASP.NET 2.0'daki genelleştirme metodolojisi hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:

ASP.NET 2.0 Yerelleştirme Özellikleri: Web Uygulamalarını
Yerelleştirmeye Yeni Bir Yaklaşımhttp://msdn2.microsoft.com/en-us/library/ms379546(VS.80).aspx

Sonuç

Asp ve ASP.NET genelleştirme sorunlarıyla ilgili şimdilik bu kadar. Umarım bu makale, birkaç müşterinin Microsoft Desteği başvurmadan önce ASP ve ASP.NET genelleştirme sorunlarını gidermesine yardımcı olur. Ben şu düşünceyle sona ererim:

"Nerede ve ne zaman gelişiyorsanız, dünyanın dört bir yanında güçlendirebileceğiniz milyonlarca insanı düşünün. Çözümlerinizi Dünya'ya Hazır Hale Getirin! Microsoft araçları ve teknolojileri uluslararasılaşmayı kolaylaştırır."

Önümüzdeki ay başka bir ilginç konu ile tekrar yakalayacağız.

Zaman ayırdığınız için teşekkür ederim.

ASP ve ASP.NET genelleştirme sorunları hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitelerine bakın:

Vbscript'te
SetLocale ve GetLocale http://msdn2.microsoft.com/en-us/library/5xf99h19.aspx

Genelleştirme Adım Adım
http://msdn.microsoft.com/en-us/goglobal/bb688110

Genel Git: Dinamik Web Apps IIS 5.0 ve SQL Server
ile Yerelleştirme http://msdn.microsoft.com/msdnmag/issues/01/05/global/default.aspx

Genele Git: Genelleştirmeyi
Desteklemek için ASP Tabanlı Web SiteniziTasarlama http://msdn.microsoft.com/msdnmag/issues/0700/localize/default.aspx

315616 IIS
http://support.microsoft.com/?id=315616 Etkin Sunucu Sayfaları Sayfasında İstemci Dilini Algılama

Yerel Ayar Kimliği (LCID) grafiği
http://msdn2.microsoft.com/en-us/library/0h88fahh.aspx

System.Globalization Ad Alanı
http://msdn2.microsoft.com/en-us/library/system.globalization(vs.71).aspx

Kaynaklar ve Yerelleştirme .NET FrameworkSDK'sını kullanarak http://msdn2.microsoft.com/en-us/library/aa309421(VS.71).aspx

ASP.NET Uygulamalarında
Kaynaklarhttp://msdn2.microsoft.com/en-us/library/1ztca10y(vs.71).aspx

ASP.NET <genelleştirme> yapılandırma öğesi
http://msdn2.microsoft.com/en-us/library/hy4kkhe0(vs.71).aspx

Web İstemcileri için Tasarım ve Uygulama Yönergeleri - Genelleştirme ve Yerelleştirme
http://msdn2.microsoft.com/en-us/library/ms978628.aspx

Resmi Microsoft sitesi – Küresel Geliştirme ve Bilgi İşlem Portalı
http://msdn.microsoft.com/en-us/goglobal/bb688096

Http://msdn2.microsoft.com/en-us/library/h6270d0z(vs.71).aspx Için Dünya'ya Hazır Uygulamalar
Geliştirme

ASP.NET http://msdn2.microsoft.com/en-us/library/aa478974.aspx
için Genelleştirme Mimarisi

Kurumsal Yerelleştirme Araç Seti - Yerelleştirilmiş Microsoft ASP.NET Uygulamaları
geliştirme http://msdn2.microsoft.com/en-us/library/aa479334.aspx

Microsoft tipografi
http://www.microsoft.com/typography/default.mspx

Sözlük

ANSI Amerikan Ulusal Standartlar Enstitüsü anlamına gelir. Bu bağlamda, belirli bir dil/karakter kümesi için belirli bir kod sayfasını temsil eder. Çoğu zaman İngilizce kod sayfasını (windows-1252) ifade eder.

ASCII A 1 bayt (veya 7 bit) kodlama düzeni. Yalnızca 0-127 aralığındaki karakterler standartlaştırılır. 128-255 aralığı, standardın bir parçası değil ASCII'nin uzantılarıdır. Oem ASCII grafiğinin üst aralığı ile VB ASCII grafiği arasındaki fark buna örnek olarak verilmiştir.

CharSet Ayarı çoğunlukla Internet Explorer ve tarayıcılara karakter verilerinin nasıl yorumlandığını bildiren tarayıcılar için kullanılır. Örnek: Response.charSet = "iso-8859-1."

Codepage Karakterlerin nasıl kodlandığını belirten bir dönüştürme tablosu (genellikle sunucular için kullanılır).

Küreselleştirme Küreselleştirme, bir kültür, bölge veya ulusal/bölgesel ve dil gereksinimlerinin benzersiz gereksinimlerinin karşılanması için bir uygulama tasarlama ve oluşturma işlemidir. Başka bir deyişle, bir uygulamayı daha sonra yerelleştirilecek şekilde tasarlamak genelleştirmedir.

Yerel Ayar/Kültür Dil ve tarih ve takvim biçimleri, saat biçimleri, para birimi biçimleri, büyük/küçük harf, sıralama ve dize karşılaştırması, adres biçimleri, telefon numarası biçimleri, kağıt boyutları, ölçü birimi, yazma yönü gibi bölgelere özgü biçimler/tercihler.

LocaleID (LCID) Dil tanımlayıcısını ve sıralama kimliğini belirten bir DWORD değeri. Eski tarih/saat vb. için belirli bölge biçimlerini belirtmek için kullanılabilir ve buna göre biçimlendirilmelidir.

Yerelleştirilebilirlik Bir uygulamanın istenen dil/yerel ayar için içerik sunabilmesi.

Yerelleştirme Yerelleştirme, kullanıcı arabirimini belirli dillere ve/veya yerel ayarlara çevirme işlemidir.

Çok baytlı karakter kümesi Karakterlerin Japonca gibi iki veya daha fazla bayttan oluştuğu bir karakter kümesi. UTF-8 de bu kategoriye girer. (Unicode teknik olarak bu kategoridedir, ancak Windows'ta kendi kategorisi vardır.)

Unicode A 2 baytlık kodlama düzeni. Windows dahili olarak Unicode kullanır. Unicode için özel olarak tüm API'ler, işlev adının sonundaki "W" ile belirtilir. Geniş karakter olarak da bilinir; web uygulamalarından doğrudan kullanılamaz.

UTF-8 Bir karakterin 1-6 bayt ile temsil edilebileceği bir karakter kodlaması. Windows'ta aralık 1-3 bayttır. Web uygulamaları için NT4 altında desteklenmez.



Geniş karakter kümesi Unicode için diğer ad. DBCS (çift bayt karakter kümesi), UCS-2, UTF-16 olarak da bilinir.

Her zaman olduğu gibi, gelecekte sütunlarda veya Bilgi Bankası'nda İste formunu kullanarak ele almak istediğiniz konularla ilgili fikirlerinizi gönderebilirsiniz.

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.

Topluluklar, soru sormanıza ve soruları yanıtlamanıza, geri bildirimde bulunmanıza ve zengin bilgiye sahip uzmanlardan bilgi almanıza yardımcı olur.

Bu bilgi yararlı oldu mu?

Dil kalitesinden ne kadar memnunsunuz?
Deneyiminizi ne etkiledi?
Gönder’e bastığınızda, geri bildiriminiz Microsoft ürün ve hizmetlerini geliştirmek için kullanılır. BT yöneticiniz bu verileri toplayabilecek. Gizlilik Bildirimi.

Geri bildiriminiz için teşekkürler!

×