Udostępnij za pośrednictwem


Objaśnienie lokalizacji kodu ASP.NET AJAX

Autor : Scott Cate

Lokalizacja to proces projektowania i integrowania obsługi określonego języka i kultury w aplikacji lub składniku aplikacji. Platforma Microsoft ASP.NET zapewnia szeroką obsługę lokalizacji standardowych aplikacji ASP.NET dzięki integracji standardowego modelu lokalizacji platformy .NET; Platforma Microsoft AJAX Framework wykorzystuje zintegrowany model do obsługi różnych scenariuszy, w których można przeprowadzić lokalizację.

Wprowadzenie

Technologia ASP.NET firmy Microsoft oferuje zorientowany obiektowo i oparty na zdarzeniach model programowania i łączy go z zaletami skompilowanego kodu. Jednak jego model przetwarzania po stronie serwera ma kilka wad związanych z technologią, z których wiele może być rozwiązanych przez nowe funkcje zawarte w przestrzeni nazw System.Web.Extensions, która hermetyzuje usługi Microsoft AJAX w .NET Framework 3.5. Rozszerzenia te umożliwiają korzystanie z wielu zaawansowanych funkcji klienta, które były wcześniej dostępne w ramach rozszerzeń AJAX ASP.NET 2.0, ale teraz są częścią biblioteki klas bazowych platformy. Kontrolki i funkcje w tej przestrzeni nazw obejmują częściowe renderowanie stron bez konieczności odświeżania pełnej strony, możliwość dostępu do usług sieci Web za pośrednictwem skryptu klienta (w tym interfejs API profilowania ASP.NET) oraz rozbudowany interfejs API po stronie klienta zaprojektowany do dublowania wielu schematów kontroli widocznych w zestawie kontroli po stronie serwera ASP.NET.

Ten oficjalny dokument analizuje funkcje lokalizacji obecne w programie Microsoft AJAX Framework i bibliotece skryptów Microsoft AJAX w kontekście potrzeby biznesowej obsługi lokalizacji i przeglądania już zintegrowanej obsługi lokalizacji w aplikacjach internetowych udostępnianych przez .NET Framework. Biblioteka skryptów AJAX firmy Microsoft korzysta z formatu pliku resx używanego już przez aplikacje platformy .NET, który zapewnia zintegrowaną obsługę środowiska IDE i typ zasobu z możliwością udostępniania.

Ten oficjalny dokument jest oparty na wersji Beta 2 programu Microsoft Visual Studio 2008. W tym oficjalnym dokumencie założono również, że będziesz pracować z programem Visual Studio 2008, a nie Visual Web Developer Express, i udostępnisz przewodniki zgodnie z interfejsem użytkownika programu Visual Studio. Niektóre przykłady kodu będą korzystać z szablonów projektów, które mogą być niedostępne w programie Visual Web Developer Express.

Potrzeba lokalizacji

Szczególnie w przypadku deweloperów aplikacji dla przedsiębiorstw i deweloperów składników możliwość tworzenia narzędzi, które mogą być świadome różnic między kulturami i językami, staje się coraz bardziej konieczna. Projektowanie składników z możliwością dostosowania do ustawień regionalnych klienta zwiększa produktywność deweloperów i zmniejsza ilość pracy wymaganej do dostosowania składnika do działania na całym świecie.

Lokalizacja to proces projektowania i integrowania obsługi określonego języka i kultury w aplikacji lub składniku aplikacji. Platforma Microsoft ASP.NET zapewnia szeroką obsługę lokalizacji standardowych aplikacji ASP.NET dzięki integracji standardowego modelu lokalizacji platformy .NET; Platforma Microsoft AJAX Framework wykorzystuje zintegrowany model do obsługi różnych scenariuszy, w których można przeprowadzić lokalizację. Dzięki platformie Microsoft AJAX Framework skrypty mogą być zlokalizowane przez wdrożenie ich w zestawach satelickich lub przy użyciu statycznej struktury systemu plików.

Osadzanie skryptów za pomocą zestawów satelickich

Zgodnie ze standardową strategią lokalizacji .NET Framework zasoby mogą być uwzględniane w zestawach satelitarnych. Zestawy satelitarne zapewniają kilka zalet w porównaniu z tradycyjnym dołączeniem zasobów w plikach binarnych — wszystkie lokalizacje można zaktualizować bez aktualizowania większego obrazu, dodatkowe lokalizacje można wdrożyć po prostu poprzez zainstalowanie zestawów satelickich w folderze projektu, a zestawy satelitarne można wdrożyć bez powodowania ponownego ładowania głównego zestawu projektu. Szczególnie w ASP.NET projektach jest to korzystne, ponieważ może znacznie zmniejszyć ilość zasobów systemowych używanych przez aktualizacje przyrostowe i co najmniej zakłóca użycie produkcyjnej witryny internetowej.

Skrypty są osadzone w zestawach przez dołączenie ich do zarządzanych plików resx (lub skompilowanych zasobów), które są dołączane do zestawu w czasie kompilacji. Ich zasoby są następnie udostępniane aplikacji skryptu za pośrednictwem kodu generowanego przez środowisko uruchomieniowe AJAX za pośrednictwem atrybutów na poziomie zestawu

Konwencje nazewnictwa dla plików skryptów osadzonych

Zarządzanie skryptami platformy Microsoft AJAX Framework obsługuje różne opcje do użycia podczas wdrażania i testowania skryptów, a wskazówki są udostępniane w celu ułatwienia tych opcji.

Aby ułatwić debugowanie:

Skrypty wydania (produkcyjnego) nie powinny zawierać .debug kwalifikatora w nazwie pliku. Skrypty przeznaczone do debugowania powinny zawierać .debug nazwę pliku.

Aby ułatwić lokalizację:

Skrypty neutralnej kultury nie powinny zawierać żadnego identyfikatora kultury w nazwie pliku. W przypadku skryptów zawierających zlokalizowane zasoby należy określić kod języka ISO w nazwie pliku. Na przykład es-CO oznacza hiszpański, Kolumbia.

Poniższa tabela zawiera podsumowanie konwencji nazewnictwa plików z przykładami:

Pod nazwą Znaczenie
Script.js Skrypt neutralny pod względem kultury wersji wydania.
Script.debug.js Skrypt neutralny pod względem kultury debugowania.
Script.en-US.js Wersja wydania w języku angielskim, Stany Zjednoczone skrypt.
Script.debug.es-CO.js Skrypt w języku hiszpańskim, Columbia w wersji debugowania.

Przewodnik: tworzenie zlokalizowanego, osadzonego skryptu

Uwaga: ten przewodnik wymaga użycia programu Visual Studio 2008, ponieważ visual Web Developer Express nie zawiera szablonu projektu dla projektów bibliotek klas.

  1. Utwórz nowy projekt witryny sieci Web ze zintegrowanymi rozszerzeniami AJAX ASP.NET. Utwórz inny projekt, projekt Biblioteka klas, w ramach rozwiązania o nazwie LocalizingResources.
  2. Dodaj plik Jscript o nazwie VerifyDeletion.js do projektu LocalizingResources, a także pliki zasobów resx o nazwie DeletionResources.resx i DeletionResources.es.resx. Pierwsza będzie zawierać zasoby neutralne od kultury; ten ostatni będzie zawierać zasoby w języku hiszpańskim.
  3. Dodaj następujący kod do VerifyDeletion.js:
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));
}

W przypadku niezaznajomionych ze składnią wyrażenia regularnego języka JavaScript tekst w obrębie pojedynczych ukośników (w poprzednim przykładzie /FILENAME/ jest przykładem) oznacza obiekt RegExp. Biblioteka MSDN zawiera obszerną dokumentację języka JavaScript, a zasoby dotyczące obiektów natywnych języka JavaScript można znaleźć w trybie online.

  1. Dodaj następujące ciągi zasobów do pliku DeletionResources.resx:

    VerifyDelete: Czy na pewno chcesz usunąć nazwę PLIKU?

    Usunięto: NAZWA PLIKU została usunięta.

  2. Dodaj następujące ciągi zasobów do polecenia DeletionResources.es.resx:

    VerifyDelete: Est seguro que desee quitar FILENAME?

    Usunięte: NAZWA PLIKU se ha quitado.

  3. Dodaj następujące wiersze kodu do pliku AssemblyInfo:

[assembly: System.Web.UI.WebResource("LocalizingResources.VerifyDeletion.js",
 "text/javascript")]
[assembly: System.Web.UI.ScriptResource("LocalizingResources.VerifyDeletion.js",
 "LocalizingResources.DeletionResources", "Message")]
  1. Dodaj odwołania do projektu System.Web i System.Web.Extensions do projektu LocalizingResources.
  2. Dodaj odwołanie do projektu LocalizingResources z projektu witryny sieci Web.
  3. W pliku default.aspx w projekcie witryny sieci Web zaktualizuj kontrolkę ScriptManager przy użyciu następujących dodatkowych znaczników:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptLocalization="true">
 <Scripts>
 <asp:ScriptReference Assembly="LocalizingResources" Name="LocalizingResources.VerifyDeletion.js"/>
 </Scripts>
</asp:ScriptManager>
  1. W pliku default.aspx w dowolnym miejscu na stronie dołącz ten znacznik:
<asp:Button ID="btnDelete" runat="Server" OnClientClick="VerifyDeletion('a.txt');" Text="Delete" />
  1. Naciśnij F5. Jeśli zostanie wyświetlony monit, włącz debugowanie. Po załadowaniu strony naciśnij przycisk Usuń. Pamiętaj, że zostanie wyświetlony monit w języku angielskim (chyba że komputer jest domyślnie ustawiony na preferowanie zasobów w języku hiszpańskim) w celu potwierdzenia.
  2. Zamknij okno przeglądarki i wróć do pliku default.aspx. W dyrektywie nagłówka zastąp @Page wartość auto dla wartości Culture and UICulture wartością es-ES. Ponownie naciśnij klawisz F5, aby ponownie uruchomić aplikację internetową w przeglądarce. Tym razem zwróć uwagę, że zostanie wyświetlony monit o usunięcie pliku w języku hiszpańskim:

Zrzut ekranu przedstawiający okno dialogowe programu Windows Internet Explorer z monitem o kliknięcie przycisku Ok w języku hiszpańskim.

(Kliknij, aby wyświetlić obraz w pełnym rozmiarze)

Zrzut ekranu przedstawiający monit o usunięcie pliku w języku hiszpańskim.

(Kliknij, aby wyświetlić obraz w pełnym rozmiarze)

Należy pamiętać, że w tym przewodniku istnieje kilka odmian. Na przykład skrypty można zarejestrować za pomocą kontrolki ScriptManager programowo podczas ładowania strony.

Dołączanie struktury pliku skryptu statycznego

W przypadku korzystania z plików skryptów statycznych do wdrożenia niektóre korzyści wynikające z używania z natury schematu lokalizacji platformy .NET. Jest to przede wszystkim widoczne, że utracisz typ automatyczny wygenerowany na podstawie plików zasobów skryptu; w powyższym przewodniku, na przykład zasoby zostały uwidocznione przez automatycznie wygenerowany typ o nazwie Message z kontrolki ScriptManager.

Istnieją jednak pewne korzyści wynikające z używania statycznej struktury plików skryptu. Aktualizacje można wykonać bez ponownego komponowania i ponownego wdrażania zestawów satelickich, a użycie statycznej struktury plików można również wykonać w celu zastąpienia osadzonego skryptu w celu zintegrowania drobnej funkcji, która mogła nie zostać dostarczona ze składnikiem.

Firma Microsoft zaleca unikanie problemu z kontrolą wersji przez automatyczne generowanie zasobów skryptu podczas kompilacji projektu. W przypadku obsługi rozbudowanej bazy kodu skryptu coraz trudniej jest zapewnić, że zmiany kodu są odzwierciedlane w każdym zlokalizowanym skry skrycie. Alternatywnie można po prostu zachować jeden skrypt logiki i wiele skryptów lokalizacji, scalając pliki podczas kompilowania projektu.

Ponieważ nie ma zasobów do deklaratywnego uwzględnienia, pliki skryptów statycznych powinny być przywoływalne przez dodanie <asp:ScriptElement> elementów jako elementu podrzędnego tagu <Scripts> kontrolki ScriptManager lub przez programowe dodawanie ScriptReference obiektów do Scripts właściwości ScriptManager kontrolki na stronie w czasie wykonywania.

ScriptManager i jego rola w lokalizacji

ScriptManager umożliwia wykonywanie kilku automatycznych zachowań dla zlokalizowanych aplikacji:

  • Automatycznie lokalizuje pliki skryptów na podstawie ustawień i konwencji nazewnictwa; na przykład ładuje skrypty z obsługą debugowania w trybie debugowania i ładuje zlokalizowane skrypty na podstawie wyboru interfejsu użytkownika przeglądarki.
  • Umożliwia ona definiowanie kultur, w tym kultur niestandardowych.
  • Umożliwia kompresję plików skryptów za pośrednictwem protokołu HTTP.
  • Buforuje skrypty, aby efektywnie zarządzać wieloma żądaniami.
  • Dodaje ona warstwę pośrednią do skryptów, potokując je za pośrednictwem zaszyfrowanego adresu URL.

Odwołania do skryptów można dodać do kontrolki ScriptManager programowo lub deklaratywnej. Adiustacja deklaratywna jest szczególnie przydatna podczas pracy ze skryptami osadzonymi w zestawach innych niż sam projekt witryny sieci Web, ponieważ nazwa skryptu prawdopodobnie nie ulegnie zmianie, ponieważ poprawki są wypychane.

Podsumowanie

W miarę rozwoju aplikacji internetowych, aby dotrzeć do większej liczby odbiorców, potrzeba dotarcia do szerszych kultur i społeczności staje się podstawą modelu biznesowego; Aplikacje internetowe handlu elektronicznego muszą mieć możliwość obsługi walut obcych, systemy zarządzania zawartością muszą mieć możliwość nie tylko prezentowania zawartości, ale także wskazówek nawigacji i pól formularzy w innych językach, a firmy muszą wiedzieć, że ta potrzeba jest dostępna.

.NET Framework wewnętrznie obsługuje rozbudowaną strukturę lokalizacji, wykorzystując zestawy satelitarne i pliki zasobów XML (resx), aby przedstawić jednolity sposób wyszukiwania ciągów zasobów i obrazów. Rozszerzenia AJAX ASP.NET, w tym microsoft AJAX Framework i Biblioteka skryptów Microsoft AJAX, zapewniają obsługę tego modelu programowania w kodzie po stronie klienta, umożliwiając łatwe wyszukiwanie ciągów zasobów. Zestawy satelitarne obsługują automatyczne dołączanie zasobów skryptu (rzeczywistych plików .js) za pośrednictwem pliku ScriptResource.axd, o ile nazwy plików są zgodne z danym schematem nazewnictwa. Dzięki tej obsłudze rozszerzenia AJAX ASP.NET upraszczają lokalizację skryptów i globalizację aplikacji.

Życiorys

Scott Cate pracuje z technologiami internetowymi firmy Microsoft od 1997 roku i jest prezesem myKB.com (www.myKB.com), gdzie specjalizuje się w pisaniu ASP.NET opartych na aplikacjach opartych na rozwiązaniach opartych na bazie wiedzy. Scott może skontaktować się za pośrednictwem poczty e-mail na scott.cate@myKB.com stronie lub na swoim blogu na ScottCate.com