Internet to ogromna społeczność, zrzeszająca użytkowników z całego świata. Odwiedzający naszą stronę internauci, mogą mieszkać w różnych krajach i posługiwać się różnymi językami. Odwiedzając naszą stronę, z pewnością chcieliby przeczytać zawarte na niej informacje w swoim ojczystym języku.
ASP.NET oferuje bardzo prosty mechanizm, pozwalający na uzyskanie wielojęzyczności naszej strony – globalizacja.
Globalizację w ASP.NET uzyskujemy dzięki plikom typu resource. W pliku takim znajduje się tekst strony dla danego języka. Użytkownik wchodząc na stronę może wybrać lub poprzez jego ustawienia przeglądarki zostanie dla niego automatycznie wybrany język o ile jest dostępny. Jeżeli nie ma, zostanie wybrany domyślny język dla naszej strony. Tworzenie plików resorce powinno podlegać odpowiedniemu nazewnictwu ich. Mając stronę nazwaną WebForm1.aspx plik resursa powinien być nazwany: WebForm1.aspx.resx. Takie nazwanie powoduje, że będzie to także domyślnie ładowany plik. Co to oznacza dla nas? Jeśli ktoś z Japonii będzie chciał się dostać na naszą stronę, a my nie będziemy mieli naszej strony przetłumaczonej na ten język, użytkownik zostanie automatycznie przekierowany do pliku domyślnego. Aby stworzyć plik resource dla specyficznego języka używamy następującego schematu: Visual Studio pozwala na bardzo szybkie i łatwe generowanie takich plików. Zobaczmy na przykład poniższej aplikacji:
Aby wygenerować plik klikamy kolejno (należy być w trybie design): Options -> Tools -> Generate Local Resource. Powoduje to kolejno:
- stworzenie folderu App_LocalResource (o ile jeszcze nie został stworzony)
- wygenerowanie pliku resource, zawierającego wszystkie widzialne (wyświetlane) teksty (caption, text, tooltip itp.)
Plik ten można podglądnąć klikając na niego dwukrotnie:
Plik który otworzyliśmy jest plikiem XML. Można go edytować dowolnym edytorem XMLa czy nawet zwykłym notatnikiem. Większość wpisów to węzły typu nazwa – wartość (nazwa kontrolki na formie – wyświetlany tekst). Ważne jest tu stwierdzenie „nazwa kontrolki” – oznacza to tyle, że jeżeli wprowadzimy jakiś tekst w czystej formie (nie korzystając z kontrolki) tekst ten nie zostanie uwzględniony w pliku resource. Należy więc mieć to na uwadze i dla własnej wygody stosować wszędzie gdzie się da kontrolki.
Przypisanie kontrolek do konkretnego pliku resource odbywa się poprzez dodanie znacznika XML meta:resourcekey do atrybutów danej kontrolki. Przykładowo dla kontrolki TextBox będzie to:
Ważne jest pamiętać, że Visual Studio nie będzie uaktualniał pliku resource. Po dodaniu nowej kontrolki, należy samemu się zatroszczyć o to, żeby ją poprawnie interpretował nasz zasób. Najłatwiej wykonać pliki resource na końcu pracy z projektem.
Aby dodać kolejny język do naszego projektu, kopiujemy plik resource, który jest domyślnym, wklejamy go do tego samego folderu i odpowiednio go nazywamy. Następnie zmieniamy wewnątrz tego pliku pola odpowiedzialne za wyświetlanie tekstu. Dla przykładu stworzyłem na podstawie domyślnego języka, plik dla użytkowników anglojęzycznych:
Oczywiście, wybór kultury możemy powierzyć użytkownikowi. Aby programistycznie przypisać język aplikacji danemu plikowi resorce, należy podczas wywoływania metody InitializeCulture odpowiednio przypisać właściwości UICulture język:
protected override void InitializeCulture()
{
switch (languageId)
{
case 1:
UICulture = "pl";
break;
case 2:
UICulture = "en";
break;
default:
break;
}
base.InitializeCulture();
}
To wszystko co jest wymagane, aby z łatwością korzystać z wielojęzyczności w aplikacjach ASP.NET
Bomba, dzięki!
OdpowiedzUsuńKrótko i konkretnie, i o to właśnie chodzi.
Pokój!