niedziela, 30 grudnia 2012

70-511 Rozdział 9 - globalizacja i lokalizacja

Terminy globalizacja i lokalizacja w przypadku tworzenia oprogramowania oznaczają różne terminy:
  • Globalizacja - wyświetlanie kwot, oraz liczb z odpowiednim formatowaniem
  • Lokalizacja - język programu dostosowany do ustawień systemu operacyjnego
Aktualna kultura aplikacji jest reprezentowana przez obiekt typu CultureInfo. Aktualną kulturę możemy zmienić w prosty sposób:

Code:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en");

Globalizacja obsługiwana jest automatycznie dla dat. W przypadku cen należy korzystać w celu ich wyświetlania z automatycznego formatowania:

Code:
var price = 500.ToString("C");

Jeżeli przyjrzymy się klasie Thread, znajdują się w niej dwie podobne właściwości: CurrentCulture oraz CurrentUICulture. Różnica pomiędzy nimi jest taka, iż pierwsza właściwość determinuje w jaki sposób będą formatowane daty, a druga determinuje tłumaczenie aplikacji.

Lokalizacja w Windows Forms
Aby włączyć lokalizację w Windows Forms, należy w ustawieniach formy zaznaczyć flagę Localizable. Następnie tłumaczymy interfejs na poszczególne języki. Po przetłumaczeniu formatki (np. na angielski) zmieniamy właściwość Language na następny język i ponownie tłumaczymy zawartość interfejsu. 



Lokalizacja w WPF
Podczas uruchamiania aplikacji WPF, szukane są pliki dll zawierające zasoby lokalizacji. Kroki które należy wykonać, aby mechanizm lokalizacji działał poprawnie:
1. Dodajemy do projektu atrybut UICulture
Atrybut UICulture specyfikuje domyślny język aplikacji. Po dodaniu tego atrybutu, zostanie stworzony katalog dla danej kultury, do którego zostanie zapisana biblioteka dll z zasobami językowymi.
Na początek otwieramy za pomocą notatnika plik <nazwa_projektu>.csproj. Wyszukujemy pierwszy element PropertyGroup i dodajemy w nim element: <UICulture>en-US</UICulture>. Zapisujemy plik i przebudowujemy projekt.

2. Oznaczenie lokalizowanych elementów
Lokalizowane elementy możemy oznaczyć za pomocą właściwości x:Uid:

Code:
<Button x:Uid="Button1"></Button>

Powyższą operację można zautomatyzować za pomocą aplikacji Msbuild.exe.

3. Wyodrębnienie lokalizowanej zawartości.
Aby wyodrębnić lokalizowaną zawartość potrzebujemy narzędzia LocBaml. Narzędzie uruchamiamy z linii poleceń: locbaml /parse en-US\myApplication.resources.dll. Na wyjściu otrzymamy plik w formacie .csv, który zawiera wszystkie lokalizowane właściwości z elementów oznaczonych atrybutem x:Uid

4. Tłumaczenie
Tłumaczenie polega na przetłumaczeniu zawartości pliku CSV. Tłumaczymy tylko zawartość kolumny Value.

5. Tworzenie podfolderów dla języków
Podfoldery tworzymy w miejscu, którym znajduje się wykonywalna wersja naszej aplikacji. Foldery muszą mieć nazwy kultur dla jakich są tworzone, np. pl

6. Tworzenie bibliotek dll z przetłumaczoną zawartością
Za pomocą LocBaml możemy stworzyć biblioteki dll z przetłumaczonymi zasobami za pomocą polecenia:

locbaml /generate en-US\myApplication.resources.dll
/trans:myApplication.resources.FrenchCan.csv /cul:fr-CA /out:fr-CA

Elementy tego polecenia:
  • /generate - LocBaml stworzy zasób na podstawie podanej dll
  • /trans - plik csv z tłumaczeniem
  • /cul - kultura dla której tworzymy plik zasobów
  • /out - folder do którego zostanie skopiowany stworzony zasób
Jeżeli chcemy zmienić język, musimy zrobić to przed startem aplikacji, najlepiej zrobić to w zdarzeniu Application.Startup

Brak komentarzy:

Prześlij komentarz