Ich lokalisiere eine WPF-App mit der LocBaml-Methode. Alles funktioniert großartig für UI, das in .xaml-Dateien definiert ist. Allerdings habe ich ein paar Strings, die im Codebehind generiert werden, die auch lokalisiert werden müssen. Also habe ich versucht, den von Microsoft empfohlenen Ansatz in this Artikel zu nehmen. Ich habe eine XAML-Ressource Wörterbuch-Datei als solche:Lokalisieren von Zeichenfolgen in WPF-Codebehind mithilfe von XAML ResourceDictionary
<ResourceDictionary x:Uid="ResourceDictionary_1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib">
<!-- String resource that can be localized -->
<system:String x:Uid="system:String_1" x:Key="localizedMessage">en-US Message</system:String>
</ResourceDictionary>
ich dann ein Drittanbieter-Tool verwenden, um die lokalisierte resources.dll, die eine spanische Version des Ressourcenverzeichnis zu generieren.
jedoch, wenn ich rufe zurück
string localizedMessage = (string)Application.Current.Resources["localizedMessage"];
localizedMessage immer den Wert definiert in der en-US-Version der DLL. Ich muss etwas falsch verstehen. Was muss ich tun, damit die lokalisierte Version der Zeichenfolge zurückgegeben wird?
Haben Sie die Montagekultur definiert? (Es sollte neutral bleiben.) Ist die Kultur Ihres Threads en-US oder die erwartete lokalisierte (sollte die letztere sein)? Was passiert, wenn Sie von einem XAML auf die Ressource verweisen? ('') – Vlad
Übrigens, die Parameter 'x: Uid =" system: String_1 "x: Schlüssel =" localizedMessage "' sollte gleich sein, AFAIK. (Das heißt, x: Uid = "lokalisierteMessage" x: Key = "lokalisierteMessage".) – Vlad
In meiner AssemblyInfo.cs habe ich '[assembly: NeutralResourcesFallbackLocation.Satellite)], und Setzen eines Haltepunkts beim Aufruf, um die Ressourcen zu ziehen zeigt meine Thread-Kultur und Uiculture sind beide auf "es" –