WPF - Mehrsprachig

  • WPF

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von KaskadekingDE.

    WPF - Mehrsprachig

    Hey zusammen,

    ich versuche derzeit mit der WPF Localization Extension meine Anwendung mehrsprachig zu machen.
    Angefangen mit einen einfachen MenuItem. Jedoch wird "Key: MenuItemFile" statt "Datei" angezeigt
    Meine (Haupt) Resourcen-Datei heißt Locale.resx. Diese Datei hat 2 untergeordnete: Locale.en.resx und Locale.de.resx

    Mein derzeitiger XAML-Code sieht so aus:

    Spoiler anzeigen

    XML-Quellcode

    1. <Window
    2. xmlns:lex="http://wpflocalizeextension.codeplex.com"
    3. lex:LocalizeDictionary.DesignCulture="de"
    4. lex:ResxLocalizationProvider.DefaultAssembly="KeineAhnungWasHierReinSoll"
    5. lex:ResxLocalizationProvider.DefaultDictionary="Locale">
    6. <Grid>
    7. <Menu Name="MainMenu">
    8. <MenuItem Header="{lex:Loc MenuHeaderFile}"/>
    9. </Menu>
    10. </Grid>
    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯
    Eigentlich müsstest du dafür keine Bibliothek benutzen.
    In Unserer Software benutzen wir ein ResourceDictionary pro Sprache und im XAML dann z.B.

    XML-Quellcode

    1. Title="{DynamicResource Dialog.Title}"

    Das dazugehörige ResourceDictionary sieht dann z.B. so aus:

    XML-Quellcode

    1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    3. xmlns:sys="clr-namespace:System;assembly=mscorlib">
    4. <!-- German strings -->
    5. <sys:String x:Key="Dialog.Title">Titel</sys:String>
    6. </ResourceDictionary>


    Und so kannst du z.B. die Sprache wechseln:

    C#-Quellcode

    1. ​ResourceDictionary dict = new ResourceDictionary();
    2. dict.Source = new Uri("..\\Resources\\Strings\\StringResDe.xaml", UriKind.Relative);
    3. App.Current.Resources.MergedDictionaries.Add(dict);