ASP.NET AJAX Yerelleştirmesini Anlama
tarafından Scott Cate
Yerelleştirme, belirli bir dil ve kültür için desteği bir uygulama veya uygulama bileşeniyle tasarlama ve tümleştirme işlemidir. Microsoft ASP.NET platformu, standart .NET yerelleştirme modelini tümleştirerek standart ASP.NET uygulamaları için yerelleştirme için kapsamlı destek sağlar; Microsoft AJAX Framework, yerelleştirmenin gerçekleştirilebileceği çeşitli senaryoları desteklemek için tümleşik modeli kullanır.
Giriş
Microsoft'un ASP.NET teknolojisi nesne odaklı ve olay odaklı bir programlama modeli getirir ve bunu derlenmiş kodun avantajlarıyla bir araya getirir. Ancak, sunucu tarafı işleme modelinin teknolojinin doğasında çeşitli dezavantajları vardır ve bunların çoğu System.Web.Extensions ad alanında bulunan ve .NET Framework 3.5'teki Microsoft AJAX Hizmetleri'ni kapsülleyen yeni özelliklerle giderilebilir. Bu uzantılar, daha önce ASP.NET 2.0 AJAX Uzantılarının bir parçası olarak kullanılabilen ancak şimdi Framework Temel Sınıf Kitaplığı'nın bir parçası olan birçok zengin istemci özelliğini etkinleştirir. Bu ad alanı içindeki denetimler ve özellikler tam sayfa yenileme gerektirmeden sayfaların kısmi olarak işlenmesini, istemci betiği aracılığıyla Web Hizmetlerine erişme özelliğini (ASP.NET profil oluşturma API'si dahil) ve ASP.NET sunucu tarafı denetim kümesinde görülen denetim düzenlerinin çoğunu yansıtmak için tasarlanmış kapsamlı bir istemci tarafı API'sini içerir.
Bu teknik inceleme, microsoft AJAX Framework ve Microsoft AJAX Betik Kitaplığı'nda bulunan yerelleştirme özelliklerini, yerelleştirme desteği için iş gereksinimi ve .NET Framework tarafından sağlanan web uygulamalarında yerelleştirme için zaten tümleşik desteği gözden geçirme bağlamında inceler. Microsoft AJAX Betik Kitaplığı, tümleşik IDE desteği ve paylaşılabilir bir kaynak türü sağlayan .NET uygulamaları tarafından zaten kullanılan .resx dosya biçimini kullanır.
Bu teknik inceleme, Microsoft Visual Studio 2008'in Beta 2 sürümünü temel alır. Bu teknik inceleme ayrıca Visual Web Developer Express ile değil Visual Studio 2008 ile çalışacağınızı ve Visual Studio'nun kullanıcı arabirimine göre izlenecek yollar sağlayacağınızı varsayar. Bazı kod örnekleri, Visual Web Developer Express'te kullanılamayabilecek proje şablonlarını kullanır.
Yerelleştirme Gereksinimi
Özellikle kurumsal uygulama geliştiricileri ve bileşen geliştiricileri için kültürler ve diller arasındaki farkların farkında olabilecek araçlar oluşturma özelliği giderek daha fazla gerekli hale gelmiştir. İstemcinin yerel ayarına uyum sağlayabilen bileşenler tasarlamak geliştirici üretkenliğini artırır ve bir bileşenin küresel olarak çalışması için gereken çalışma miktarını azaltır.
Yerelleştirme, belirli bir dil ve kültür için desteği bir uygulama veya uygulama bileşeniyle tasarlama ve tümleştirme işlemidir. Microsoft ASP.NET platformu, standart .NET yerelleştirme modelini tümleştirerek standart ASP.NET uygulamaları için yerelleştirme için kapsamlı destek sağlar; Microsoft AJAX Framework, yerelleştirmenin gerçekleştirilebileceği çeşitli senaryoları desteklemek için tümleşik modeli kullanır. Microsoft AJAX Framework ile betikler uydu derlemelerine dağıtılarak veya statik dosya sistemi yapısı kullanılarak yerelleştirilebilir.
Uydu Derlemeleri ile Betikleri Ekleme
Standart .NET Framework yerelleştirme stratejisiyle tutarlı olarak, kaynaklar uydu derlemelerine dahil edilebilir. Uydu derlemeleri, ikili dosyalara geleneksel kaynak eklemeye kıyasla çeşitli avantajlar sağlar. Belirli bir yerelleştirme daha büyük görüntü güncelleştirilmeden güncelleştirilebilir, ek yerelleştirmeler yalnızca proje klasörüne uydu derlemeleri yüklenerek dağıtılabilir ve ana proje derlemesinin yeniden yüklenmesine neden olmadan uydu derlemeleri dağıtılabilir. Özellikle ASP.NET projelerde bu, artımlı güncelleştirmeler tarafından kullanılan sistem kaynaklarının miktarını önemli ölçüde azaltabileceğinden ve üretim web sitesi kullanımını en az düzeyde kesintiye uğratabileceğinden faydalıdır.
Betikler, derleme zamanında derlemeye dahil edilen yönetilen .resx (veya derlenmiş .resources) dosyalarına eklenerek derlemelere eklenir. Daha sonra kaynakları, derleme düzeyi öznitelikler aracılığıyla AJAX çalışma zamanı tarafından oluşturulan kod aracılığıyla betik uygulamasının kullanımına sunulur
Katıştırılmış Betik Dosyaları için Adlandırma Kuralları
Microsoft AJAX Framework betik yönetimi, betiklerin dağıtımında ve testinde kullanılmak üzere çeşitli seçenekleri destekler ve bu seçenekleri kolaylaştırmak için yönergeler sağlanır.
Hata ayıklamayı kolaylaştırmak için:
Yayın (üretim) betikleri dosya adında niteleyiciyi içermemelidir .debug
. Hata ayıklama için tasarlanan betikler dosya adına dahil .debug
edilmelidir.
Yerelleştirmeyi kolaylaştırmak için:
Nötr kültür betikleri, dosyanın adında herhangi bir kültür tanımlayıcısı içermemelidir. Yerelleştirilmiş kaynaklar içeren betikler için, ISO dil kodu dosya adında belirtilmelidir. Örneğin, es-CO
İspanyolca, Columbia anlamına gelir.
Aşağıdaki tabloda, dosya adlandırma kuralları örneklerle özetlemektedir:
Dosyaadı | Anlamı |
---|---|
Script.js | Yayın sürümü kültürüne göre bağımsız betik. |
Script.debug.js | Hata ayıklama sürümü kültürden bağımsız betik. |
Script.en-US.js | İngilizce sürüm, Birleşik Devletler betik. |
Script.debug.es-CO.js | Hata ayıklama sürümü İspanyolca, Columbia betiği. |
İzlenecek yol: Yerelleştirilmiş, Katıştırılmış Betik Oluşturma
Lütfen unutmayın: Visual Web Developer Express sınıf kitaplığı projeleri için bir proje şablonu içermediğinden, bu kılavuz Visual Studio 2008'in kullanılmasını gerektirir.
- ASP.NET AJAX Uzantıları tümleşik olarak yeni bir Web Sitesi projesi oluşturun. Çözüm içinde LocalizingResources adlı bir sınıf kitaplığı projesi olan başka bir proje oluşturun.
- LocalizingResources projesine VerifyDeletion.js adlı bir Jscript dosyasının yanı sıra DeletionResources.resx ve DeletionResources.es.resx adlı .resx kaynak dosyalarını ekleyin. İlki kültürden bağımsız kaynaklar içerecek; İkincisi İspanyolca dil kaynaklarını içerecektir.
- aşağıdaki kodu VerifyDeletion.js ekleyin:
function VerifyDeletion(fileName)
{
if (confirm(Message.VerifyDelete.replace(/FILENAME/, fileName)))
{
Delete(fileName);
return true;
}
return false;
}
function Delete(fileName)
{
alert (Message.Deleted.replace(/FILENAME/, fileName));
}
JavaScript Regex söz dizimini bilmeyenler için, tek eğik çizgi içindeki metinler (önceki örnekte /FILENAME/ bir örnektir) bir RegExp nesnesini belirtir. MSDN Kitaplığı kapsamlı bir JavaScript başvurusu içerir ve JavaScript yerel nesneleri üzerindeki kaynaklar çevrimiçi olarak bulunabilir.
Aşağıdaki kaynak dizelerini DeletionResources.resx'e ekleyin:
VerifyDelete: FILENAME'i silmek istediğinizden emin misiniz?
Silindi: FILENAME silindi.
Aşağıdaki kaynak dizelerini DeletionResources.es.resx'e ekleyin:
VerifyDelete: Est seguro que desee quitar FILENAME?
Silindi: FILENAME se ha quitado.
AssemblyInfo dosyasına aşağıdaki kod satırlarını ekleyin:
[assembly: System.Web.UI.WebResource("LocalizingResources.VerifyDeletion.js",
"text/javascript")]
[assembly: System.Web.UI.ScriptResource("LocalizingResources.VerifyDeletion.js",
"LocalizingResources.DeletionResources", "Message")]
- LocalizingResources projesine System.Web ve System.Web.Extensions başvurularını ekleyin.
- Web Sitesi projesinden LocalizingResources projesine bir başvuru ekleyin.
- default.aspx dosyasında, Web Sitesi projesinin altında ScriptManager denetimini aşağıdaki ek işaretlemeyle güncelleştirin:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptLocalization="true">
<Scripts>
<asp:ScriptReference Assembly="LocalizingResources" Name="LocalizingResources.VerifyDeletion.js"/>
</Scripts>
</asp:ScriptManager>
- default.aspx dosyasında, sayfanın herhangi bir yerinde şu işaretlemeyi ekleyin:
<asp:Button ID="btnDelete" runat="Server" OnClientClick="VerifyDeletion('a.txt');" Text="Delete" />
- F5 tuşuna basın. İstenirse hata ayıklamayı etkinleştirin. Sayfa yüklendiğinde Sil düğmesine basın. Onay için İngilizce (bilgisayarınız varsayılan olarak İspanyolca dil kaynaklarını tercih etmek üzere ayarlanmamışsa) istendiğini unutmayın.
- Tarayıcı penceresini kapatın ve default.aspx adresine dönün. Üst bilgi yönergesinde @Page Culture ve UICulture için auto değerini es-ES ile değiştirin. Web uygulamasını tarayıcıda yeniden başlatmak için F5 tuşuna yeniden basın. Bu kez, dosyayı İspanyolca silmeniz istendiğini unutmayın:
(Tam boyutlu görüntüyü görüntülemek için tıklayın)
(Tam boyutlu görüntüyü görüntülemek için tıklayın)
Bu izlenecek yol için çeşitli varyasyonlar olduğunu unutmayın. Örneğin, betikler sayfa yükleme sırasında program aracılığıyla ScriptManager denetimine kaydedilebilir.
Statik Betik Dosyası Yapısı Ekleme
Dağıtım için statik betik dosyalarını kullanırken, doğal .NET yerelleştirme düzenini kullanmanın bazı avantajlarını kaybedersiniz. Birincil olarak görünen, betik kaynak dosyaları dahil olmak üzere oluşturulan otomatik türü kaybetmenizdir; örneğin, yukarıdaki kılavuzda kaynaklar ScriptManager denetiminden İleti adlı otomatik olarak oluşturulan bir tür tarafından kullanıma sunuldu.
Ancak statik betik dosyası yapısını kullanmanın bazı avantajları vardır. Güncelleştirmeler uydu derlemelerini yeniden derlemeden ve yeniden dağıtmadan gerçekleştirilebilir ve statik bir dosya yapısının kullanılması, ekli betiği geçersiz kılmak ve bir bileşenle birlikte gönderilmemiş olabilecek küçük bir işlev parçasını tümleştirmek için de yapılabilir.
Microsoft, proje derlemesi sırasında betik kaynaklarınızı otomatik olarak oluşturarak sürüm denetimi sorunundan kaçınmanızı önerir. Kapsamlı bir betik kod tabanını korurken, kod değişikliklerinin her yerelleştirilmiş betikte yansıtıldığından emin olmak giderek zor olabilir. Alternatif olarak, projeyi oluştururken dosyaları birleştirerek tek bir mantıksal betiği ve birden çok yerelleştirme betiğini koruyabilirsiniz.
Bildirim temelli olarak dahil edilecek kaynaklar olmadığından, statik betik dosyalarına ScriptManager denetiminin etiketinin <Scripts>
alt öğesi olarak öğeler eklenerek <asp:ScriptElement>
veya çalışma zamanında sayfadaki denetimin ScriptManager
özelliğine Scripts
program aracılığıyla nesneler eklenerek ScriptReference
başvurulmalıdır.
ScriptManager ve Yerelleştirmedeki Rolü
ScriptManager, yerelleştirilmiş uygulamalar için çeşitli otomatik davranışlar sağlar:
- Betik dosyalarını ayarlara ve adlandırma kurallarına göre otomatik olarak bulur; örneğin, hata ayıklama modunda hata ayıklama özellikli betikleri yükler ve tarayıcının kullanıcı arabirimi seçimine göre yerelleştirilmiş betikleri yükler.
- Özel kültürler de dahil olmak üzere kültürlerin tanımını etkinleştirir.
- Betik dosyalarının HTTP üzerinden sıkıştırmasını sağlar.
- Birçok isteği verimli bir şekilde yönetmek için betikleri önbelleğe alır.
- Betikleri şifrelenmiş bir URL aracılığıyla yönlendirerek bir dolaylılık katmanı ekler.
ScriptManager denetimine program aracılığıyla veya bildirim temelli işaretleme yoluyla betik başvuruları eklenebilir. Bildirim temelli işaretleme özellikle web sitesi projesi dışındaki derlemelere katıştırılmış betiklerle çalışırken yararlıdır, aksi takdirde düzeltmeler gönderildiğinde betiğin adı büyük olasılıkla değişmez.
Özet
Web uygulamaları daha geniş bir hedef kitleye ulaşmak için büyüdükçe, daha geniş kültürlere ve topluluklara ulaşabilme ihtiyacı bir iş modelinin temelini oluşturur; e-ticaret web uygulamalarının yabancı para birimleriyle başa çıkabilmesi, içerik yönetimi sistemlerinin yalnızca içeriklerini değil, diğer dillerdeki gezinti ipuçlarını ve form alanlarını da sunabilmesi ve şirketlerin bu ihtiyacın erişilebilir olduğunu bilmesi gerekir.
.NET Framework, kaynak dizelerini ve görüntüleri aramak için tekdüzen bir yol sunmak üzere uydu derlemeleri ve XML kaynağı (.resx) dosyalarını kullanarak zengin bir yerelleştirme çerçevesini destekler. Microsoft AJAX Framework ve Microsoft AJAX Betik Kitaplığı da dahil olmak üzere ASP.NET AJAX Uzantıları, bu programlama modeli için istemci tarafı koduna destek sağlayarak kolay kaynak dizesi aramalarına olanak tanır. Uydu derlemeleri, dosya adları belirli bir adlandırma şemasını izlediği sürece ScriptResource.axd aracılığıyla betik kaynaklarının (gerçek .js dosyaları) otomatik olarak eklenmesini destekler. Bu destekle, ASP.NET AJAX Uzantıları betiklerin yerelleştirilmesini ve uygulamaların genelleştirilmesini basitleştirir.
Biyografi
Scott Cate, 1997'den beri Microsoft Web teknolojileriyle çalışmaktadır ve Bilgi Bankası Yazılımı çözümlerine odaklanan ASP.NET tabanlı uygulamalar yazma konusunda uzmanlaştığı myKB.com (www.myKB.com) Başkanıdır. Scott'a ScottCate.com adresinden scott.cate@myKB.com veya blogundan e-posta yoluyla ulaşabilirsiniz .