Lokalizacja UI z wykorzystaniem plików XML i mechanizmu refleksji – Część 1

W tym oraz kilku następnych artykułach przedstawię w jaki sposób można zbudować prosty moduł umożliwiający zmianę języka interfejsu użytkownika w trakcie działania programu. W dowolnym momencie (po instalacji na komputerze docelowym) będzie można dołożyć kolejny plik z pakietem językowym w formacie XML. 

Dlaczego by nie wykorzystać plików resource?

Środowisko .NET ma wbudowany mechanizm lokalizacji programu na podstawie culture wątku interfejsu użytkownika oraz odpowiednio nazwanych plików resource. Nakład pracy włożony w dostosowanie do własnego programu jest dosyć niski. Takie rozwiązanie ma szereg zalet, natomiast wiążą się z tym pewne ograniczenia.

Przede wszystkim, pliki te zazwyczaj dołączane są do programu na etapie kompilacji, co uniemożliwia łatwe dodawanie nowych języków. Istnieje możliwość upakowania każdego pliku zasobu w osobną bibliotekę dll, jednak nie jest to wygodne i wymaga działania ze strony programisty.

Naszym celem jest utworzenie modułu pozwalającego na szybkie i proste (dla każdego) dołożenie kolejnego języka już po zainstalowaniu oprogramowania na maszynie klienckiej. Dodatkowo, poświęcając chwilę, można przerobić ten system tak, aby odpowiadał za zarządzanie kolorami naszego GUI (plik xml zamiast tłumaczeń będzie zawierał definicje kolorów i ścieżki do grafik), ale tego już nie będę opisywał w tej serii artykułów.

Co należy umieć przed przystąpieniem do lektury?

Przed przystąpieniem do implementacji powinieneś posiadać przynajmniej poglądową wiedzę na tematy:

Idea działania

Schemat działania jest bardzo prosty i można go przedstawić w kilku krokach:

  1. Wyszukanie plików z pakietem językowym - Pliki będą w formacie xml, mogą być umieszczone w specjalnym katalogu programu. Każdy plik będzie odpowiadał za inny język, natomiast jego zawartość to para klucz-wartość (tekst wyświetlany).
  2. Wczytanie odpowiedniego pliku - Posłużymy się deserializacją xml. Zawartość będziemy przechowywać w postaci słownika.
  3. Tłumaczenie oznaczonych elementów - Właściwości (c# property) oznaczone odpowiednim atrybutem. Wykorzystamy refleksje.

W kolejnych postach przedstawię jak zaimplementować poszczególne elementy ze szczegółowym opisem ich działania i odpowiedzialności.

Share

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Spam protection by WP Captcha-Free