Podczas tworzenia aplikacji warto od razu uwzględnić fakt, że żyjemy w dobie globalizacji i naszą aplikacją mogą być również zainteresowani klienci poza granicami naszego kraju. Dlatego warto już na samym początku projektu przygotować mechanizm do obsługi wielu wersji językowych.
W przypadku technologii WPF jest wiele sposobów na lokalizowanie aplikacji i każda z nich ma swoje wady i zalety.
Jedna z metod polecanych przez Microsoft opiera się na znacznikach Uid. Polega o na tym, że w pliku XAML każdej kontrolce nadajemy unikalny identyfikator Uid. Następnie za pomocą narzędzia LocBalm generujemy pliki tekstowe CSV, które możemy wysłać do tłumaczenia. Następnie na podstawie przetłumaczonych plików generujemy pliki z zasobami.
Niestety ta metoda jest dosyć złożona o czym można się przekonać czytając MSDN https://msdn.microsoft.com/library/ms788718(v=vs.100).aspx
Dlatego chciałbym zaproponować inne rozwiązanie z użyciem narzędzia Multilingual App Toolkit. Multilingual App Toolkit to dodatek do Visual Studio, który bardzo upraszcza proces tłumaczenia aplikacji. Zamiast znaczników Uid będziemy wykorzystywać statyczne odwołania do zasobów.
Załóżmy, że mamy okno MainWindow.xaml z przyciskiem i chcemy przetłumaczyć tekst:
Teraz możemy uruchomić aplikację F5.
Jeśli mamy ustawiony polski język w ustawieniach regionalnych systemu Windows powinniśmy zobaczyć przetłumaczony przycisk. Zależnie od wybranego języka w systemie Windows będzie ładowany odpowiedni plik z zasobami.
Jeśli chcemy ułatwić sobie testowanie różnych języków podczas tworzenia aplikacji bez potrzeby przełączania ustawień regionalnych możemy dopisać:
Otwórz plik App.xaml.cs
Warto nadmienić że pliki XLIFF, które generuje Multilingual App Toolkit to uznany standard przemysłowy w formacie XML. Pliki te oprócz tekstu źródłowego i docelowego mogą zawierać dodatkowe komentarze oraz informacje o statusie tłumaczenia, więc mogą być włączone w cały proces tłumaczenia. Dzięki temu, że jest to standard, pliki mogą zostać przesłane do tłumacza, który wcale nie musi posiadać Visual Studio.