Kolumna głosowa pomocy technicznej ASP.NET
Aby dostosować tę kolumnę do swoich potrzeb, zachęcamy do przesyłania pomysłów na interesujące Cię tematy i problemy, które mają być widoczne w przyszłych artykułach z bazy wiedzy Knowledge Base i kolumnach Głos pomocy technicznej. Pomysły i opinie można przesyłać za pomocą formularza Zapytaj o to. U dołu tej kolumny znajduje się również link do formularza.
Wprowadzenie
Zapraszamy! To Sukesh Khare z zespołem pomocy technicznej Microsoft ASP.NET Developer Support. Jest to pierwszy raz, kiedy jestem autorem kolumny Głos pomocy technicznej. Z niecierpliwością czekam na tworzenie większej liczby takich kolumn w nadchodzących miesiącach.
W kolumnie z tego miesiąca omówię kwestie globalizacji na stronach aktywnego serwera (ASP) i ASP.NET, problemy, z jakimi mamy do czynienia w asp, zmiany w ASP.NET 1x i co się dzieje z ASP.NET 2.0 na froncie globalizacji. Uwaga Jeśli natkniesz się na termin, który nie jest zrozumiały, zobacz sekcję Glosariusz u dołu tej kolumny.Problemy z globalizacją w asp
Przed ASP.NET nie było ustrukturyzowanej obsługi tworzenia aplikacji dla użytkowników globalnych. Podczas wczesnego rozwoju ASP deweloperzy tacy jak ja znaleźli tylko rozproszoną obsługę globalizacji w systemach operacyjnych, przeglądarkach, aspach i systemach zaplecza. Jednak rzadko zaobserwowaliśmy automatyczną łączność w tych aplikacjach. Na szczęście rozumiemy pojęcia, takie jak zestawy znaków, strony kodów, języki przeglądarki i czcionki, które moglibyśmy wykorzystać do opracowywania aplikacji dla użytkowników globalnych.
Zbyt trudno byłoby rozdzielić na kategorie wszystkie kwestie globalizacji, które widzieli ci z nas w ASP.NET. Zamiast tego wybiorę listę pojęć dotyczących wielu z tych zagadnień.Zestawy znaków i strony kodowe
Wszyscy wiemy, że znaki na ekranie komputera to tylko seria bajtów. Serię bajtów można tworzyć i interpretować na wiele sposobów. Jeśli w interpretacji jest używane kodowanie inne niż kodowanie, za pomocą których utworzono tablicę bajtową, interpretacja będzie wyświetlana jako śmieci. Zestawy znaków (zestawy znaków) są formatami kodowania, które są zwykle używane przez przeglądarki. Właściwość Codepage, która jest bardziej odpowiednia do konwersji po stronie serwera, to tylko tabela konwersji określająca sposób kodowania znaków.
Przeglądarki kodują dane wpisów formularza zgodnie z bieżącym zestawem znaków. Jeśli bieżący zestaw znaków to "windows-1256", transmisja bajtowa na serwer jest również zakodowana jako "windows-1256". Podczas interpretowania ASP kolekcje Formularza i Querystring nie są tworzone, dopóki nie są one odwołujące się w kodzie. Podczas ich tworzenia dane ciągu są przekształcane na Unicode zgodnie z bieżącą stroną kodową. (Domyślnie zarówno ASP, jak i ASP.NET przetwarzać zawartość przy użyciu formatu Unicode). Bardzo ważne jest, aby ustawić poprawną stronę kodową przed odwołaniem do kolekcji; W przeciwnym razie reprezentacja Unicode w pamięci nie będzie poprawna. Aby ustawić stronę kodową, użyj strony Session.Codepage lub Response.Codepage. Strona Response.Code jest dostępna tylko w wersji Microsoft Internet Information Services (IIS) 5.1 lub nowszej. Aby uzyskać informacje o wartościach całkowitych (odpowiadających zestawowi znaków), które ustawiamy dla tych właściwości, odwiedź następującą witrynę internetową firmy Microsoft:Rozpoznawaniehttp://msdn2.microsoft.com/en-us/library/Aa752010.aspxAby na przykład ustawić stronę kodową dla języka arabskiego, użyj następującego kodu:
zestawu znaków
Session.Codepage = 1256
Odpowiedź.Strona kodowa ma wpływ tylko na bieżącą odpowiedź. Jednak funkcja Session.Codepage wpłynie na wszystkie odpowiedzi wykonane przez bieżącego użytkownika. Po ustawieniu strony kodowej przy użyciu jednej z tych właściwości i utworzeniu kolekcji Form i Querystring ta zmiana na bieżącej stronie kodowej powoduje, że metoda Response.Write przekształca kod Unicode w pamięci na bieżącą stronę kodową. Aby uzyskać więcej informacji na ten temat, odwiedź następującą witrynę internetową MSDN:
Ustawienie strony kodowej dla konwersji ciągów (ASP)http://msdn2.microsoft.com/en-us/library/ms525789.aspxW dolnej linii, jeśli chodzi o problemy związane z zestawami znaków i stronami kodów, zestaw znaków klienta i strona kodowa serwera powinny być zgodne.
Akceptowanie języków
Jeśli deweloper asp chce wiedzieć, które języki użytkownik ustawił w swojej przeglądarce, deweloper może użyć zmiennej Request.ServerVariables ("HTTP_ACCEPT_LANGUAGE") w celu znalezienia listy języków, w których użytkownik chce odczytać odpowiedź (na przykład angielski, niemiecki lub indyjski) oraz kolejności preferencji, w jakiej użytkownik chciałby wyświetlić te języki. W ASP.NET podobne informacje są obecne we właściwości Request.UserLanguages jako tablica.
Aby uzyskać więcej informacji na temat używania tych informacji w kodzie ASP, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:229690 Jak ustawić identyfikator ustawień regionalnych ASP dla ustawień językowych przeglądarki
Wyświetlanie zestawów znaków wielo bajtowych w programie Internet Explorer
Jedynym formatem kodowania, który może zawierać zestaw znaków wielo bajtowych, jest Unicode (UTF-8). W przypadku utf-8 możemy wyświetlać cyrylicę, indyjski i japoński na tej samej stronie. Jeśli nie używamy formatu UTF-8, możemy wyświetlić tylko jeden z tych języków jednocześnie. Aby ustawić zestaw znaków przeglądarki, użyj właściwości Response.CharSet.
Statyczne znaki wielo bajtowe na stronie
Aby wyświetlić znaki wielo bajtowe przechowywane bezpośrednio na stronie, musimy najpierw zapisać stronę z określonym kodowaniem. UTF-8 będzie najlepszy, ale będzie również działać określona strona kodowa (dopasowana do strony kodowej znaków).
Zapisywanie pliku ASP przy użyciu programu Microsoft Visual InterDev nie pomaga, ponieważ program Visual InterDev może zapisywać tylko w języku angielskim ANSI lub unicode. Żadna strona ASP zapisana jako Unicode nie jest obsługiwana przez asp. W programie Microsoft Visual Studio .NET można zapisać plik w dowolnym kodowaniu. Istnieją dwa sposoby, aby to zrobić. Domyślnym sposobem jest zapisanie pliku przy użyciu bieżącej strony kodowej dla użytkownika. Dodatkowy sposób zapisywania pliku za pomocą kodowania jest następujący: W menu Plik kliknij polecenie Zapisz plik jako. W oknie dialogowymZapisywanie pliku jako kliknij strzałkę listy rozwijanej na przycisku Zapisz. Po kliknięciu strzałki opcje to Zapisz i Zapisz za pomocą kodowania. Po kliknięciu przycisku Zapisz za pomocą kodowania zostanie wyświetlone okno dialogowe Zaawansowane opcje zapisywania , w którym można wybrać typ kodowania, który chcesz zastosować, z listy stron kodowych zainstalowanych na komputerze. Uwaga Spowoduje to zmianę kodowania operacji zapisywania, ale jest tylko jednorazowe. Następny zapis zostanie przywrócony jako domyślny. Aby zmienić domyślną stronę kodową, kliknij pozycję Zaawansowane opcje zapisywania w menuPlik. W oknie dialogowym Zaawansowane opcje zapisywania możesz ustawić domyślne kodowanie operacji zapisywania na wybranej stronie kodowej. Te metody są związane ze sposobem zapisywania pliku na dysku. Jednak aby kontrolować dane wyjściowe asp, jak już wspomniano, musimy ustawić właściwości Session.CodePage i Response.CharSet. W systemie IIS 5.1 i nowszych wersjach możemy również użyć właściwości Response.CodePage.Domyślna STRONA KODOWA na serwerze
Ustawienia domyślne i domyślna strona kodowa strony zależą od ustawień rejestru dla strony . UŻYTKOWNIK DOMYŚLNY. Klucz międzynarodowy znajduje się w urzędzie rejestru HKEY_USERS\.DEFAULT\Control Panel\International. Możemy również zmienić zachowanie ustawień regionalnych wybranych przez IIS.
Jeśli zalogowany użytkownik ma takie same ustawienia regionalne jak powyższy klawisz lub domyślne ustawienie systemowe, ustawienie użytkownika ma pierwszeństwo. Przykład: Domyślne ustawienia regionalne mają format daty ustawiony jako 11.1.2004, a zalogowany użytkownik (z tym samym zestawem ustawień regionalnych) ma format daty 2004-11-01. Ustawienie 2004-11-01 zacznie obowiązywać w przypadku asp. (W przypadku ASP.NET może się to różnić. W niektórych instalacjach użytkownik ASPNET będzie miał własny profil, który będzie widoczny w obszarze HKEY_USERS po załadowaniu. W innych aplikacjach użyje przycisku . PROFIL DOMYŚLNY. Można również użyć atrybutu strony kodowej w deklaracji <%@ %>. Należy go użyć, gdy plik jest zapisywany przy użyciu innego kodowania niż domyślne, takie jak strona kodowa 932 (japoński)).Problemy dotyczące strony kodowej a problemy z konwersją czcionek: co to jest?
Czasami może zostać wyświetlony znak zapytania (?) lub pole, w którym powinien zostać wyświetlony znak.
Problemy z konwersją stron kodowych
Gdy znak zostanie zastąpiony znakiem zapytania (?), oznacza to, że wystąpił problem z konwersją strony kodowej. Znak zapytania (?) jest znakiem domyślnym konwersji strony kodowej i zasadniczo oznacza, że system operacyjny nie wie, jak obsługiwać wartość znaku i przekonwertować ją. Zastępuje ona wartość znaku znakiem zapytania (?). Może to oznaczać, że znak ma nieprawidłową wartość dla strony kodowej lub że strona kodowa potrzebna do konwersji nie jest zainstalowana.
Problemy z konwersją czcionek
Gdy znak zostanie zastąpiony przez pole, oznacza to, że wystąpił problem z konwersją czcionek. Dzieje się tak po stronie klienta, gdy klient nie ma zainstalowanej odpowiedniej czcionki w celu poprawnego wyświetlania tego znaku. Jeśli na przykład znak pochodzi z japońskiego zestawu znaków, a klient nie ma zainstalowanych czcionek japońskich, znak japoński jest wyświetlany jako pole.
Następnie opowiem o zmianach w ASP.NET 1.x oraz o tym, jak te zmiany wpływają na problemy z globalizacją w kontekście ASP.NET.Problemy z globalizacją w ASP.NET 1.x:
Dzięki ASP.NET wprowadzono trzy wspaniałe elementy:
-
Tag> globalizacji <w pliku
web.config Tag> globalizacji <odsuwa nas od niespójnych pojęć stron kodowych i zestawów znaków i pozwala nam kontrolować większość wariantów w ASP.NET. -
Obszar
nazw System.Globalization Przestrzeń nazw Globalization zapewnia nam programistyczną moc obsługi globalizacji. -
Koncepcja plików zasobów została znacznie ulepszona.
Nie zajmujemy się plikami zasobów w sposób, w jaki kiedyś w ASP. Teraz pliki zasobów są w formie plików XML, kiedy je projektujemy i opracowujemy, i istnieją jako zestawy w czasie wykonywania.
Tag konfiguracji Globalizacja:
Dwa ważne ustawienia tagu są następujące:
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8" />
Inne możliwe obszary ustawień są następujące:
Fileencoding |
Określa domyślne kodowanie dla analizowania plików aspx, asmx i asax. Pliki Unicode i UTF-8 zapisane z prefiksem ze znacznikiem kolejności bajtów (z podpisem) zostaną automatycznie rozpoznane, niezależnie od wartości kodowania plików. |
Kultury |
Określa domyślną kulturę przetwarzania przychodzących żądań sieci Web (dotyczy metod klas z obszaru nazw System.Globalization). |
Uiculture |
Określa domyślną kulturę przetwarzania zależnych od ustawień regionalnych wyszukiwań zasobów (zestawów satelitarnych). |
Aby uzyskać więcej informacji na temat ciągów kultury (wartości kultury i uiculture), odwiedź następującą witrynę internetową firmy Microsoft:
System.Globalization.CultureInfoClasshttp://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspxTe ustawienia są stosowane przez ASP.NET po zakończeniu odpowiedzi i przed przekazaniem żądania do aplikacji. W przypadku funkcji responseEncoding bufor utworzony w celu przechowywania danych wyjściowych jest ustawiony na to kodowanie. Wszystko, co trafi do tego buforu, zostanie zakodowane zgodnie z ustawieniem, ponieważ jest on wstawiany do buforu. W przypadku funkcji requestEncoding środowisko uruchomieniowe odczyta żądanie i interpretuje je zgodnie z ustawieniem w tej sekcji. Jest to jednak ustawienie, które może powodować problemy. W poniższej tabeli przedstawiono układ bitowy prawidłowej sekwencji bajtów UTF-8. Jeśli wartość znaku spadnie w standardzie 7-bitowym ASCII, wartość bajtu nie zostanie zmodyfikowana. Jeśli wartość jest powyżej 127, musi być zgodna z poniższymi regułami. Wiodący zestaw bitów pokazuje, ile znaków znajduje się w sekwencji. Każdy bajt po pierwszym musi zaczynać się od pierwszego bitu ustawionego na 1. Układ bajtów UTF-8:
Bajtów |
Bitów |
Reprezentacja |
1 |
7 |
0vvvvvvv |
2 |
11 |
110vvvvv 10vvvv |
3 |
16 |
1110vvvv 10vvvvvv 10vvvv |
4 |
21 |
11110vvv 10vvvvvv 10vvvvvv 10vvvvvv |
Tu właśnie następuje problem. Jeśli przeglądarka koduje żądanie według jednego kodowania bajtowego (na przykład iso-8859-1), wartości powyżej 127 będą nieprawidłowe zgodnie z powyższym układem. Podczas odczytywania w buforze UTF-8 nieprawidłowe znaki są po prostu usuwane z danych wyjściowych.
Zmiany w kodowaniu środowiska uruchomieniowego
W zdarzeniu Application_BeginRequest możemy zmodyfikować wartość requestEncoding i wywrzeć wpływ na nią przed przetworzeniem żądania. W przypadku odpowiedzi zdarzenie Page_PreRender to ostatnia szansa na zmodyfikowanie kodowania danych wyjściowych. Pamiętaj również, że funkcja Response.Write umieści znaki w tym buforze zaraz po jego wywołaniu, dlatego przed użyciem funkcji Response.Write upewnij się, że ustawiono odpowiednie kodowanie.
Oryginalne dane nie są unicode: Jak nadal interpretować wielo bajtowe zestawy znaków w programie Internet Explorer?
Możemy również sprawić, ASP.NET działać jak ASP, jeśli zajdzie taka potrzeba. Aby tak się stało, musimy ustawić kodowanie responseEncoding i requestEncoding na windows-1252 (pełniejsze kodowanie niż iso-8859-1) i użyć właściwości Response.Charset, aby poprawnie wyświetlić tekst. Działa to dlatego, że windows-1252 jest pojedynczym schematem kodowania bajtów i nie modyfikuje żadnych bajtów dodanych do buforu. Dlatego znaki dwu bajtowe są wysyłane jako seria pojedynczych bajtów. Następnie można poinformować program Internet Explorer, jak interpretować bajty, używając właściwości Response.Charset. Ten scenariusz może być konieczny, jeśli oryginalne dane nie są przechowywane w formacie Unicode lub UTF-8, takie jak zwracana wartość z obiektu COM, lub jeśli dane są przechowywane w usłudze Microsoft SQL Server w polu innym niż N (takim jak varchar).
problemy z globalizacją SQL Server i ASP.NET
Wprowadzanie danych Unicode do SQL Server
Najlepszym sposobem przechowywania danych w SQL Server jest użycie standardu Unicode. Za każdym razem, gdy używamy funkcji INSERT, UPDATE itd., jeśli istnieje nawet najmniejsza szansa na dane Unicode, musimy dodać znak N przed wartością. Dzięki temu baza danych ma wartość Unicode. Dobrym przykładem są obiekty ADO. Te czynności są wykonywane automatycznie, jeśli używamy obiektu Recordset do dodawania nowych rekordów.
Oto przykład:
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)"
Dane wejściowe daty/godziny do SQL Server
Zazwyczaj mamy wiedzę na temat kultury i ustawień regionalnych daty/godziny interpretowanej w naszej aplikacji ASP.NET. Jednak podczas przesuwania i pobierania danych daty/godziny do i z zewnętrznych źródeł istnieje ryzyko błędnej interpretacji formatów daty/godziny. Jest to spowodowane tym, że nie zawsze możemy zagwarantować, że kultura i ustawienia regionalne źródła zewnętrznego będą takie same jak w naszej aplikacji. W SQL Server można rozwiązać ten problem, używając atrybutu "bieżący język" podczas łączenia połączenia ustanawianego z bazą danych SQL. Możemy zapewnić takie samo ustawienie języka w połączeniu, jak jest kultura w naszej aplikacji. Chroni nas to przed ryzykiem błędnej interpretacji, ponieważ SQL Server zawsze akceptuje i wysyła dane daty/godziny w zgodzie z powyższym ustawieniem.
System.Globalization namespace
Ta przestrzeń nazw to podstawa globalizacji i lokalizacji w .NET Framework. Główną klasą używaną w tej przestrzeni nazw jest klasa CultureInfo. Zawiera informacje specyficzne dla kultury, takie jak format daty/godziny, formaty liczb, porównanie i informacje tekstowe. Aby uzyskać więcej informacji na temat klasy CultureInfo, odwiedź następującą witrynę internetową MSDN:
http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspxCultureInfo
Neutralne kultury a specyficzne kultury
Kultura neutralna to kultura związana z językiem, ale nie z konkretnym krajem/regionem. Określona kultura jest skojarzona zarówno z językiem, jak i z konkretnym krajem/regionem.
Przykład: "DE" (kultura neutralna) jest przeznaczony dla języka niemieckiego, ale "de-AT" (specyficzna kultura) jest przeznaczony dla języka niemieckiego, jak jest używany w Austrii. Do formatowania nie można używać kultur neutralnych.Bieżąca wątek i świadomość kulturowa zajęć .NET Framework
Wszystkie klasy i metody w bibliotece .NET Framework, w której oczekujemy, że dane wyjściowe będą zależne od kultury, mają dwa wbudowane zachowania:
-
Umożliwiają one nam określenie kodu kultury podczas podawania argumentów, tak aby dane wyjściowe były oparte na określonej kulturze. Jest to opcjonalne.
-
Jeśli to jest pominięte (zwykle jest), klasy są wystarczająco inteligentne, aby zachować kontrolę na Thread.CurrentThread.CurrentCulture właściwości i pracy zgodnie z tym.
Wartość tej właściwości można zmodyfikować przy użyciu kodu podobnego do następującego:
Dim ci As CultureInfo
ci = New CultureInfo("de-AT")
Thread.CurrentThread.CurrentCulture = ci
W tym przykładzie kodu "de" reprezentuje język niemiecki, a "AT" oznacza Austrię. W tym przypadku jest to datetime.now(). Metoda ToString zwraca datę i godzinę w formacie odpowiadającym sposobowi wyrażania daty i godziny w języku niemieckim w Austrii.
Struktura gwarantuje (w następujący sposób), że właściwość CurrentCulture jest zawsze inicjowana:-
Cokolwiek to jest ustawione programowo.
-
Jeśli programista nie ustawi jej jawnie, właściwość jest wybierana z plików konfiguracji (<tag> globalizacji).
-
Jeśli brakuje tam właściwości, jest to kultura, na której działa serwer sieci Web. Jest to zazwyczaj neutralna kultura odpowiadająca językowi systemu operacyjnego.
Pliki zasobów
Wszystkie pliki resx, .resource i pliki, które mają atrybut Akcja kompilacji ustawione na Osadzony zasób, które są dodawane do projektu ASP.NET w programie Visual Studio .NET, są automatycznie kompilowane i osadzane w zestawie aplikacji w ramach jego manifestu. Można to nawet zrobić ręcznie za pomocą narzędzia Generator plików zasobów (RESGEN) za pośrednictwem wiersza polecenia programu Visual Studio .NET. Aby uzyskać więcej informacji, odwiedź następującą witrynę internetową MSDN:
http://msdn2.microsoft.com/en-us/library/ccec7sz1(vs.71).aspxJest to ogólne pojęcie, które ma zastosowanie zawsze, gdy trzeba zarządzać zasobami aplikacji, które nie są związane z globalizacją. Jednak wdrażając globalizację, powinniśmy użyć zestawów satelitarnych.
Satelickie
Zestawy satelitarne mogą być używane w projekcie ASP.NET, gdy upewnisz się, że spełnione są następujące warunki:
-
Wszystkie elementy interfejsu użytkownika we wszystkich plikach aspx muszą być wyposażone w identyfikator i atrybuty runat=server.
-
Tworzymy osobne pliki resx. Każda z nich musi odpowiadać każdej kulturze, którą chcemy, aby nasza aplikacja obsługiwała.
-
Musimy zdecydować wspólne imię dla wszystkich tych plików na przykład. "Ciągi".
-
Nazwimy osobne pliki resx następującymi konwencjami nazewnictwa commonfirstname. languagecode-regioncoderesx (na przykład: Strings.de-AT.resx, Strings.en-GB.resx ).
-
Plik zasobu
commonfirstname.resx (Strings.resx) powinien zawierać wszystkie ciągi wyświetlane w domyślnym przypadku. -
Napisz kod, aby wykryć kulturę użytkownika i ustawić właściwość Thread.CurrentThread.CurrentUICulture tak, aby była zgodna z nią.
-
Napisz kod, aby załadować zasoby przy użyciu klasy ResourceManager.
-
Zapisuj kod, aby wyodrębnić ciągi z załadowanego obiektu i przypisz je do elementów interfejsu użytkownika.
Po wykonaniu tych czynności Studio.NET wizualna skompilować Strings.resx i osadzić go w zestawie aplikacji (MyGlobalizationTestProjectName.dll). Jednak dla wszystkich innych plików resx wygeneruje osobne pliki dll, które nie mają kodu wykonywalnego, ale tylko dane zasobów. Te w rzeczywistości są nazywane zestawami satelitarnymi. Ponadto program Visual Studio .NET umieszcza je w strukturze folderów podobnie do następującej:MyGlobalizationTestProjectName
|------- przedział |------w Stanach Zjednoczonych MyGlobalizationTestProjectName.resources.dll |------ja-JP MyGlobalizationTestProjectName.resources.dll |------de-AT MyGlobalizationTestProjectName.resources.dllRóżnica między currentculture i CurrentUICulture
Metody klas w obszarze nazw System.Globalization zależą od właściwości Thread.CurrentThread.CurrentCulture w celu przekazania ich danych wyjściowych, natomiast klasa ResourceManager, która ładuje zestaw zasobów, zależy od właściwości Thread.CurrentThread.CurrentUICulture w celu załadowania odpowiedniego zestawu satelitów. Poniżej przedstawiono przykład kodu C#:
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");
}
}
Kolejność, w jakiej ASP.NET wybiera zestawy satelitarne:
Po ustawieniu wątku CurrentUICulture ASP.NET automatycznie wybiera zasoby zgodne w następującej kolejności:
-
Jeśli zestaw satelitarny zostanie znaleziony z odpowiednią kulturą, używane są zasoby z tego zestawu.
-
Jeśli zestaw satelitarny zostanie znaleziony z neutralną kulturą zgodną z CurrentUICulture, używane są zasoby z tego zestawu.
-
Jeśli nie zostanie znalezione dopasowanie dla currentuiculture, zasoby rezerwowe przechowywane w zestawie wykonywalnym są używane.
Uwaga Jest to oparte na bardziej ogólnym procesie rezerwy zasobów. Aby uzyskać więcej informacji, odwiedź następującą witrynę internetową MSDN:
http://msdn2.microsoft.com/en-us/library/sb6a8618(vs.71).aspx
Ręczne tworzenie zestawów satelitarnych:
To użycie zestawów satelitarnych to miejsce, w którym program Visual Studio .NET tworzy zestawy. Jednak program Visual Studio .NET nie ma domyślnie silnych zestawów satelitarnych nazw. Jeśli chcesz zmienić te opcje, musisz utworzyć zestawy satelitarne ręcznie. Aby uzyskać więcej informacji, odwiedź następującą witrynę internetową MSDN:
http://msdn2.microsoft.com/en-us/library/21a15yht(vs.71).aspx .
Co się dzieje z programem ASP.NET 2.0 na froncie globalizacji?
Szerokie wykorzystanie ASP.NET i rodzajów problemów, które widzieliśmy w odniesieniu do funkcji globalizacji w ASP.NET 2.0, są nadal pewne odległości do przodu. Jednak dobrze byłoby krótko przyjrzeć się, w jakim kierunku zmierza metodologia globalizacji dla aplikacji sieci Web.
Obsługa globalizacji w ASP.NET 2.0 przeszła radykalną zmianę, a deweloperzy sieci web otrzymali możliwość umiejscowienia aplikacji sieci Web tak łatwo, jak w aplikacjach opartych na systemie Windows. Poniżej przedstawiono listę funkcji, które stanowią podstawę metodologii globalizacji w ASP.NET 2.0: Zasoby mocno wpisywane U podstaw wersji .NET Framework 2.0 jest obsługa mocno wpisywanych zasobów, które zapewniają deweloperom technologię Intellisense i upraszczają kod wymagany do uzyskiwania dostępu do zasobów w czasie wykonywania. Edytor zasobów zarządzanych Visual Studio .NET 2.0 zawiera nowy edytor zasobów z lepszą obsługą tworzenia wpisów zasobów i zarządzania nimi, w tym ciągów, obrazów, plików zewnętrznych i innych złożonych typów. Generowanie zasobów dla Web Forms Windows Forms deweloperzy korzystali już z zalet automatycznej internacjonalizacji. Program Visual Studio .NET 2005 będzie teraz obsługiwał szybką internacjonalizację, automatycznie generując zasoby dla Web Forms, kontrolek użytkowników i stron wzorcowych. Ulepszona obsługa środowiska wykonawczego ResourceManager wystąpienia są zarządzane przez środowisko uruchomieniowe i łatwo dostępne dla kodu serwera za pośrednictwem bardziej dostępnych interfejsów programowania. Wyrażenia lokalizacyjne Nowoczesne wyrażenia deklaracyjne dla stron sieci Web obsługują wpisy zasobów mapowania w celu kontrolowania właściwości, właściwości HTML lub obszarów zawartości statycznej. Te wyrażenia są również rozszerzalne, zapewniając dodatkowe sposoby kontrolowania procesu dołączania zlokalizowanej zawartości do danych wyjściowych HTML. Automatyczny wybór kultury Zarządzanie wyborem kultury dla każdego żądania sieci Web można automatycznie łączyć z preferencjami przeglądarki. Model dostawcy zasobów Nowy model dostawcy zasobów umożliwia deweloperom hostowanie zasobów w alternatywnych źródłach danych, takich jak pliki płaskie i tabele baz danych, natomiast model programowania uzyskiwania dostępu do tych zasobów pozostaje spójny. Aby uzyskać więcej informacji na temat metodologii globalizacji w ASP.NET 2.0, odwiedź następującą witrynę internetową MSDN:funkcje lokalizacji ASP.NET 2.0: nowe podejście do lokalizacji aplikacjihttp://msdn2.microsoft.com/en-us/library/ms379546(VS.80).aspx
sieci WebWniosku
To wszystko na razie dotyczy problemów z globalizacją w asp i ASP.NET. Mam nadzieję, że ten artykuł pomoże kilku klientom rozwiązać problemy z globalizacją w asp i ASP.NET przed podjęciem kontaktu z pomoc techniczna firmy Microsoft. Zakończę z następującą myślą:
"Gdziekolwiek i kiedy się rozwijasz, pomyśl o milionach ludzi, których możesz wzmocnić na całym świecie. Przygotuj swoje rozwiązania na świat! Narzędzia i technologie firmy Microsoft ułatwiają internacjonalizację". W przyszłym miesiącu ponownie dogonimy inny interesujący temat. Dziękujemy za twój czas.Aby uzyskać więcej informacji na temat problemów z globalizacją w asp i ASP.NET, zobacz następujące witryny internetowe firmy Microsoft:
SetLocale i GetLocale whttp://msdn2.microsoft.com/en-us/library/5xf99h19.aspx języka vbscript
Http://msdn.microsoft.com/en-us/goglobal/bb688110 z globalizacją krok po kroku
Przejdź na stronę globalną: lokalizowanie dynamicznych Web Apps za pomocą usług IIS 5.0 i SQL Serverhttp://msdn.microsoft.com/msdnmag/issues/01/05/global/default.aspx
Przejdź do globalnego: projektowanie witryny sieci Web opartej na asp w celu obsługi globalizacjihttp://msdn.microsoft.com/msdnmag/issues/0700/localize/default.aspx
315616 jak wykryć język klienta na stronie aktywnych stron serwera wsystemie IIS http://support.microsoft.com/?id=315616
Wykreshttp://msdn2.microsoft.com/en-us/library/0h88fahh.aspx
identyfikatora ustawień regionalnych (LCID)System.Globalization Namespacehttp://msdn2.microsoft.com/en-us/library/system.globalization(vs.71).aspx
Zasoby i lokalizacja Za pomocą .NET Framework SDKhttp://msdn2.microsoft.com/en-us/library/aa309421(VS.71).aspx
Zasoby w aplikacjachhttp://msdn2.microsoft.com/en-us/library/1ztca10y(vs.71).aspx
ASP.NETASP.NET <element konfiguracji> globalizacjihttp://msdn2.microsoft.com/en-us/library/hy4kkhe0(vs.71).aspx
Wskazówki dotyczące projektowania i implementacji klientów sieci Web — globalizacja i lokalizacjahttp://msdn2.microsoft.com/en-us/library/ms978628.aspx
Oficjalna witryna firmy Microsoft — Global Development and Computing Portalhttp://msdn.microsoft.com/en-us/goglobal/bb688096
Opracowywanie aplikacji gotowychhttp://msdn2.microsoft.com/en-us/library/h6270d0z(vs.71).aspx
na światArchitektura globalizacji dlahttp://msdn2.microsoft.com/en-us/library/aa478974.aspx ASP.NET
Zestaw narzędzi lokalizacji przedsiębiorstwa — do opracowywania zlokalizowanych aplikacjihttp://msdn2.microsoft.com/en-us/library/aa479334.aspx
firmy Microsoft ASP.NETTypografiahttp://www.microsoft.com/typography/default.mspx
firmy MicrosoftSłownik entry
ANSI to skrót od American National Standards Institute. W tym kontekście reprezentuje określoną stronę kodową dla określonego języka/zestawu znaków. Najczęściej odwołuje się do strony kodowej w języku angielskim (windows-1252).
Schemat kodowania ASCII A 1 bajt (lub 7-bitowy). Standaryzowane są tylko znaki z zakresu od 0 do 127. Zakres 128-255 jest rozszerzeniem ASCII, a nie częścią standardu. Przykładem jest różnica między górnym zakresem wykresu OEM ASCII a wykresem ASCII VB. Ustawienie CharSet używane głównie w programie Internet Explorer i przeglądarkach, które informują przeglądarkę o tym, jak interpretować dane znaków. Przykład: Response.charSet = "iso-8859-1". Strona kodowa Tabela konwersji określająca sposób kodowania znaków (zwykle używanych na serwerach). Globalizacja Globalizacja to proces projektowania i tworzenia aplikacji, dzięki czemu można spełnić unikatowe wymagania kultury, regionu lub potrzeb krajowych/regionalnych i językowych. Innymi słowy, projektowanie aplikacji w sposób umożliwiający jej późniejsze zlokalizowanie to globalizacja. Ustawienia regionalne/kultura Język i specyficzne dla regionu formaty/preferencje, w tym, formaty daty i kalendarza, formaty czasu, formaty walutowe, obudowa, sortowanie i porównanie ciągów, formaty adresów, formaty numerów telefonów, rozmiary papieru, jednostki miary, kierunek pisania itp. LocaleID (LCID) Wartość DWORD określająca identyfikator języka i identyfikator sortowania. Może służyć do określania określonych formatów regionów dla daty/godziny ex etc powinny być sformatowane zgodnie z. Możliwość lokalizowania aplikacji do prezentowania zawartości dla wymaganej wersji językowej/ustawień regionalnych. Lokalizacja Lokalizacja to proces tłumaczenia interfejsu użytkownika na określone języki i/lub ustawienia regionalne. Zestaw znaków wielobajtowych Zestaw znaków, w którym znaki składają się z dwóch lub większej liczby bajtów, takich jak japoński. UTF-8 również należy do tej kategorii. (Technicznie unicode należy do tej kategorii, ale w systemie Windows ma własną kategorię). Schemat kodowania 2-bajtowego Unicode. System Windows używa wewnętrznie standardu Unicode. Wszystkie interfejsy API przeznaczone specjalnie dla standardu Unicode są oznaczane znakiem "W" na końcu nazwy funkcji. Znany również jako szeroki znak; nie mogą być używane bezpośrednio z aplikacji sieci Web. UTF-8 Kodowanie znaków, w którym znak może być reprezentowany przez 1–6 bajtów. W systemie Windows zakres wynosi od 1 do 3 bajtów. Nieobsługiwane w systemie NT4 dla aplikacji sieci Web. Zestaw szerokich znaków Alias dla unicode. Znany również jako DBCS (zestaw znaków dwubajtowych), UCS-2, UTF-16.Jak zawsze, możesz przesyłać pomysły na tematy, które chcesz rozwiązać w przyszłych kolumnach lub w bazie wiedzy za pomocą formularza Zapytaj o to.