Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET.
W dzisiejszym artykule powiemy sobie o działaniu zasobów w ASP .NET, poznamy jak za ich pomocą robić np. wielojęzykową strone.
Zasoby
Do obsługi języków na stronie, ASP .NET wykorzystuje pliki zasobów (ang. resource files). Plik zasobów zawiera zestaw tekstów (specyficznych dla danego języka), dla strony lub całej witryny. Jeśli plik z zasobami istnieje dla języka, który jest pożądany przez użytkownika, ASP korzysta z niego. Jeśli plik nie istnieje, wyświetla domyślny język, który ustawiliśmy na naszej stronie. Istnieją dwa typy zasobów: lokalne i globalne. Omówione zostaną w dalszej części artykułu.
Użycie lokalnych plików zasobów
Lokalne zasoby (ang. local resources), są przeznaczone dla pojedynczych stron i powinny być użyte do dostarczania wersji strony w różnych językach. Zasoby te powinny być umieszczone w specjalnym folderze App_LocalResources. Każdy plik zasobów jest określony dla danej strony, dlatego nazywa się go w taki sposób: <NazwaStrony>.Aspx.resx. Np. dla strony o nazwie Default.aspx, plik zasobów będzie nazywał się Default.aspx.resx. Dzięki temu określiliśmy domyślny plik zasobów.
Możemy stworzyć plik zasobów, który określa nam dany język, za pomocą pliku zasobów o nazwie: <NazwaStrony>.aspx.<jezyk>.resx. Np. jeśli chcemy hiszpańską wersję strony nasz plik będzie wyglądał tak: Default.aspx.es.resx. (es jest skrótem Hiszpanii).
Generowanie lokalnych zasobów
Do wygenerowania naszego pliku zasobów możemy użyć Visual Studio, które wygeneruje nam domyślną wersję pliku. Możemy zrobić to w następujący sposób:
1. Otwieramy naszą stronę w visual studio
2. Z menu Tools wybieramy Generate Local Resource
W tym momencie Visual Studio stworzył folder App_LocalResources oraz stworzył plik XML. Plik bedzie zawierał ustawienia zasobów dla strony oraz kontrolował właściwości takie jak Text,ToolTip,Title,Caption itp.
W naszym przykładzie tworzymy sobie stronę zawierającą kontrolki: label, textbox, calendar oraz button.

Poniżej plik zasobów dla naszej przykładowej strony. Plik został otworzony w wizualnym edytorze plików zasobów, który udostępnia nam Visual Studio.

Możemy również otworzyć ten plik w edytorze XML. Widzimy tu m.in taki kod:
1: <data name="ButtonSubmitResource1.Text" xml:space="preserve">
2: <value>Save</value>
3: </data>
4: <data name="ButtonSubmitResource1.ToolTip" xml:space="preserve">
5: <value />
6: </data>
Widzimy pary data-value. W data trzymamy właściwość kontrolki np. Text a w value jej wartość.
Tworzenie wersji językowych zasobów lokalnych
Aby stworzyć językowy plik zasobów musimy najpierw stworzyć domyślny plik zasobów. Następnie:
1. W solution explorer klikamy prawym przyciskiem na naszym domyślnym pliku zasobów i wybieramy Copy
2. Kopiujemy ten plik do folderu App_LocalResources
3. Zmieniamy nazwę pliku na np. Default.aspx.fr.resx aby stworzyć francuską wersję.
4. Klikamy na nasz plik i zmieniamy wartości na własne – francuskie :D
Zasoby globalne
Globalne zasoby (ang. global resources) to takie, które można odczytać z każdej strony. Zasoby te przydają się w momencie, gdy chcemy uzyskać dostęp do zasobu z wielu stron w naszej witrynie.
Globalne zasoby są wciąż plikami .resx i wciąż tworzymy domyślną wersję a później jej odmiany językowe. Tak samo jest z nazewnictwem plików. Różnią się jednak położeniem plików. Globalne zasoby trzymamy w folderze App_GlobalResource. Tworzenie plików wygląda tak jak poprzednio. Również mamy edytor itp. dlatego nie będę tu opisywał od nowa tworzenia wszystkiego.
To tyle na dzisiaj. W tym rozdziale TK nie bardzo pokazał jak ustawiać w kodzie, z której wersji strony chcemy korzystać. Podejrzewam że pojawi się to już w piątek :)