Jak mogę zlokalizować aplikację WPF przy użyciu wzorca MVVM? Naprawdę chcę zrobić to w "prawidłowy" sposób.Lokalizacja zgodna z MVVM w aplikacjach WPF
Moje obecne podejście polega na tym, że używam plików .resx Resource do lokalizowania mojej aplikacji.
włączyłem je w moim kodu xaml
xmlns:localization="clr-namespace:ClientLibTestTool.ViewLanguages"
i dostęp do nich tak:
<Button x:Name="BtnGenerate"
Content="{x:Static localization:localization.ButtonGenerate}"/>
Moje pytania:
- Czy istnieje lepszy sposób na zrobienie tego?
- Jak mogę przetestować różne języki (ładowanie aplikacji przy różnych ustawieniach językowych)?
- Czy można zmienić język w czasie wykonywania?
Odpowiedzi:
Pytanie 1:
Pytanie 2: (Dziękuję, stijn)
public MainWindow()
{
// Debug Settings
localization.Culture = CultureInfo.GetCultureInfo("en-US");
// localization.Culture = CultureInfo.GetCultureInfo("de-DE");
this.InitializeComponent();
}
Pytanie 3: (Dziękuję Stijn)
Niezupełnie , konieczne jest przerysowanie całego okna.
Uwaga: ten wiersz kodu musi być PRZED InitializeComponent(); Metoda. W przeciwnym razie nie zadziała – Joel
To właśnie miałem na myśli ostatnim zdaniem, nadal będzie działać, ale tylko dla compone które odnoszą się do tego ponownie. Można obejść ten problem, nie używając ciągów zasobów w języku xaml, ale zamiast tego powiązać je z obserwowalnymi właściwościami, które zawierają wartość zasobu i wywołać zdarzenie PropertyChanged po każdej zmianie. – stijn