Drukuj - Vavatech

Transkrypt

Drukuj - Vavatech
Vavatech.pl
Tworzenie aplikacji wielojęzycznych z C# i WPF w Visual Studio
2016-07-01
Tworzenie aplikacji wielojęzycznych z C# i WPF w Visual
Studio
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:
<Button Content="Hello" />
1. W Visual Studio w opcji Tools|Extensions wyszukujemy Multilingual App Toolkit i
instalujemy dodatek. Po zainstalowaniu należy zrestartować Visual Studio.
2. Otwieramy projekt i we właściwościach aplikacji ustawiamy neutralny język:
Application|Assembly Information|Neutral Language np. English (United States)
3. W folderze Properties otwieramy plik zasobów Resources.resx i zmieniamy Access
Modifier na Public. W innym przypadku XAML nie będzie miał dostępu do zasobów.
4. Następnie dopisujemy do pliku zasobów string np. Title i tekst Hello
5. Następnie wybieramy opcję Tools|Multilingual App Toolkit|Enable Selection
6. Na projekcie wybieramy Multilingual App Toolkit | Add Translation Languages i
wybieramy np. język polski pl-PL. Do projektu zostanie dodany folder
MultilingualResources wraz z plikiem xlf dla wybranego języka.
7. Klikamy dwukrotnie na plik xlf. Wyświetli się okno Multilingual Editor. Teraz możemy
przetłumaczyć ręcznie tekst lub skorzystać z możliwości automatycznego tłumaczenia
za pomocą opcji Translate. Opcja ta korzysta z Microsoft Translator.
8. Gdy dodajemy nowe teksty do pliku z zasobami Resources.resx należy wybrać opcję
Multilingual App Toolkit | Generate machine translations
9. Wracamy do widoku MainWindow.xaml
10. Dodajemy przestrzeń nazw do zasobów:
xmlns:p="clr-namespace:WPFLocalization.Properties"
11. Zamieniamy odwołanie na przycisku do zasobu:
<Button Content="{x:Static p:Resources.Title}"/>
12. Budujemy projekt. W projekcie pojawi się plik Resources.pl-PL.resx a w katalogu z
binariami pojawi się podkatalog pl-PL i biblioteka dll z zasobami.
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
private CultureInfo cultureOverride = new CultureInfo("plPL");
public App()
{
if (Debugger.IsAttached == true && cultureOverride !=
null)
{
Thread.CurrentThread.CurrentUICulture =
cultureOverride;
Thread.CurrentThread.CurrentCulture =
cultureOverride;
}
}
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.

Podobne dokumenty