Ваш старт был довольно хорош. Использование LocBaml было слишком сложным для меня тоже. Поэтому мне пришлось придумать что-то более легкое для меня. Вот решение: во-первых, вы должны создать ресурсный файл .resx (этот шаг уже сделан в вашем); Простой способ получить все строки из файла ресурсов - сохранить их в словаре. Вы можете сделать это, используя этот метод:
public Dictionary<string, string> ApplicationStrings(string locale)
{
Dictionary<string, string> result = new Dictionary<string, string>();
ResourceManager manager = null;
// Here is two locales (custom and english locale), but you can use more than two if there's a need
if (locale == "Your locale")
{
manager = new ResourceManager(typeof(your_locale_resource_file));
}
else
{
manager = new ResourceManager(typeof(ApplicationStrings_en));
}
ResourceSet resources = manager.GetResourceSet(CultureInfo.CurrentCulture, true, true);
IDictionaryEnumerator enumerator = resources.GetEnumerator();
while (enumerator.MoveNext())
{
result.Add((string)enumerator.Key, (string)enumerator.Value);
}
return result;
}
Вы должны установить DataContext из MainWindow в качестве результата этого метода и связать все свои строки со словарем.
Пример привязки:
Text="{Binding [YourKey]}"
Вы можете вызвать этот метод, а затем изменить DataContext в любое время и в любом месте. Благодаря привязке данных он очень хорошо работает во время выполнения.
Я гарантирую, что это решение не самое лучшее, но оно работает простым способом.
Надеюсь, это поможет.