Analizując żądania za pomocą narzędzi developerskich można odczytać listę preferowanych języków, jak na poniższym przykładzie.

Podobne dokumenty
Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz

Walidacja po stronie serwera Walidacja po stronie klienta:

Modele danych walidacja widoki zorientowane na model

Sesje i logowanie. 1. Wprowadzenie

Ajax. 1. Wprowadzenie. 2. Aplikacja serwerowa

Lokalizacja Oprogramowania

Komunikatory typu TCP/IP lab2. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Walidacja danych w ASP.NET MVC

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Aplikacje w środowisku Java

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Laboratorium 10 - Web Services

Serwery aplikacji. dr Radosław Matusik. radmat

WellCommerce Poradnik: Dodawanie języka i waluty. autor: Adrian Potępa (biuro@eclairsoaware.pl)

Spis treści. 1 Kraj/region i język Ustawienia regionalne Liczby Waluta Czas i data Inne...

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Walutowe dokumenty sprzedaży - automatyczne dostosowywanie języka do preferencji kontrahenta

Specyfikacja implementacyjna aplikacji serwerowej

REFERAT O PRACY DYPLOMOWEJ

Instrukcja użytkownika systemu medycznego. Pracownik medyczny Lekarz ZDLR

Serwery aplikacji. dr Radosław Matusik. radmat

Walutowe dokumenty sprzedaży - automatyczne dostosowywanie języka do preferencji kontrahenta

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

,Aplikacja Okazje SMS

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Aplikacje WWW. Laboratorium z przedmiotu Aplikacje WWW - zestaw 01

Laboratorium 7 Blog: dodawanie i edycja wpisów

Informatyzacja Przedsiębiorstw

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Specyfikacja API Runtime BAS 3.0

Aplikacje internetowe i rozproszone - laboratorium

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Gatesms.eu Mobilne Rozwiązania dla biznesu

Programowanie obiektowe

Klasy i obiekty cz II

Rys.2.1. Drzewo modelu DOM [1]

Informatyzacja Przedsiębiorstw

Aplikacje WWW - laboratorium

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Polityka cookies w serwisie internetowym

Programowanie zaawansowane

Dokumentacja Skryptu Mapy ver.1.1

Spring Web MVC, Spring DI

System Obsługi Zleceń

Dokumentacja Użytkownika Systemu

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Zasady programowania Dokumentacja

Tworzenie własnych komponentów

Instrukcja użytkownika Porównywarki cen Liquid

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

4 AS SP.NET MVC. Widok. Zaawansowane programowanie internetowe Instrukcja nr 4

Programowanie w języku Java

Tablice, DataGridView

Dane - pobieranie, przekazywanie i przechowywanie. dr Beata Kuźmińska-Sołśnia

Pomoc dla systemu WordPress

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie w języku Python. Grażyna Koba

Programowanie obiektowe

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Infrastruktura aplikacji WWW

Laboratorium 6 Tworzenie bloga w Zend Framework

Laboratorium 1 - Programowanie proceduralne i obiektowe

Wykład 03 JavaScript. Michał Drabik

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Katalog książek cz. 3: Web Service

akademia androida Intencje oraz URI część III

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

Wybrane działy Informatyki Stosowanej

Informatyka II. Laboratorium Aplikacja okienkowa

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

Dokumentacja SMS przez FTP

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

INFORMACJE OGÓLNE. Użytkownik aplikacji otrzymuje dostęp do aktualnych informacji dotyczących obiektu

Dostęp do baz danych w ASP.NET.

Obrazek 1: Interfejs DT. DT Help File v1.3

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Specyfikacja implementacyjna aplikacji mobilnej

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Podstawy Programowania 2

Layouty. Kilka layoutów

Stworzenie programu KSIĄŻKA ADRESOWA posiadającego funkcjonalności przechowywania danych o osobach dodanych przez użytkownika.

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Transkrypt:

Wersje językowe. 1. Przygotowanie obsługi multijęzykowej Część stron wymaga obsługi wielojęzycznej. W ich wypadku wymagane jest, aby teksty na stronie pojawiały się w natywnym języku użytkownika odwiedzającego stronę. Informacja o preferowanym języku użytkownika znajduję się w nagłówku Accept-Language żądania (podobnie jak ciasteczka) przesyłanego do serwera przez przeglądarkę. Analizując żądania za pomocą narzędzi developerskich można odczytać listę preferowanych języków, jak na poniższym przykładzie. Accept-Language: pl-pl,pl;q=0.8,en-us;q=0.6,en;q=0.4 Natomiast w MVC po stronie serwera nagłówek ten zostanie przypisany do pola UserLanguages w obiekcie Reguest przechowującym wszystkie informacje odebranego żądania. UserLanguages jest listą typu string tak więc odwołując się do pierwszego indeksu pobierzemy nazwę języka najbardziej preferowanego przez użytkownika. Request.UserLanguages[0]; W naszym przypadku zwrócony zostanie string pl-pl ; Aby natomiast ustawić w systemie MVC język należy podmienić wartości, jak na poniższym przykładzie. Po tej zmianie MVC będzie starało się wyświetlać napisy we wskazanym lub domyślnym języku. Zmiana języka ma również wpływ na sposób interpretacji przesyłanych zmiennych, w szczególności formatu dat i liczb ułamkowych, gdyż system stara się dostosować do klienta. var ci = new CultureInfo("pl-PL"); Thread.CurrentThread.CurrentUICulture = ci; Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name); Pokazaną zmianę przeprowadza się przed rozpoczęciem obsługi żądania. W tym celu przeciąża się metodę w klasie aplikacji w pliku Global.asax. Metoda ta zostanie wywołana przed wywołaniem właściwej metody kontrolera, do której się odwoła. protected void Application_AcquireRequestState(object sender, EventArgs e) { } Wymuszenie języka służy również do zmiany języka strony na żądanie klienta. Najczęściej odbywa się to poprzez akcję kliknięcia na flagę odpowiedniego państwa. Po czym wskazana wartość zostanie wpisana w ciasteczko. Response.Cookies.Add(new System.Web.HttpCookie("Culture", pl-pl )); Następnie za każdym razem nazwę wybranego języka można pobrać z ciasteczka. var cokie = Request.Cookies["Culture"]; CultureInfo ci = cokie!= null? new CultureInfo( cokie.value ) : null;

2. Dodawanie plików tłumaczeń. Aby można było wyświetlać teksty w różnych wersjach językowych należy zwroty umieszczać w plikach resource file (.resx). Każdy plik zawiera zestaw zwrotów w tym samym języku. Wersja językowa rozróżniana jest w systemie po rozszerzeniu, jak np. <nazwa>.en-us.resx, <nazwa>.pl- PL.resx. Zestawy bez tego rozszerzenia są zestawami domyślnymi, gdy żaden powyższy nie zostanie wskazany.

3. Używanie plików zasobów w kodzie. Po dodaniu plików zasobów można ich używać w dowolnym miejscu kodu widoku lub kontrolera, wystarczy dodać przestrzeń nazw odpowiadających plikowi z zasobami. Wersję językowe modeli, [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(errors))] [StringLength(250, ErrorMessageResourceName = "StringLength", ErrorMessageResourceType = typeof(errors))] [Display(Name = "name", ResourceType = typeof(modelresources))]

Zadanie Przebudować kod obecnego projektu, tak aby obsługiwał przynajmniej dwa języki.