Код: Выделить всё
[ContentProperty(nameof(Name))]
public class TranslateExtension : IMarkupExtension
{
public required string Name { get; set; }
public BindingBase ProvideValue(IServiceProvider serviceProvider)
{
return new Binding
{
Mode = BindingMode.OneWay,
Path = $"[{Name}]",
Source = LocalizationResourceManager.Instance
};
}
object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
{
return ProvideValue(serviceProvider);
}
}
Код: Выделить всё
public class LocalizationResourceManager : INotifyPropertyChanged
{
private LocalizationResourceManager()
{
Strings.Culture = CultureInfo.GetCultureInfo("en");
}
public static LocalizationResourceManager Instance { get; } = new();
public object this[string resourceKey]
=> Strings.ResourceManager.GetObject(resourceKey, Strings.Culture) ??
Array.Empty();
public event PropertyChangedEventHandler? PropertyChanged;
public string GetString(string resourceKey, CultureInfo? culture)
{
if (culture == null)
{
return Strings.ResourceManager.GetString(resourceKey, Strings.Culture)!;
}
return Strings.ResourceManager.GetString(resourceKey, culture)!;
}
public void SetCulture(CultureInfo culture)
{
Strings.Culture = culture;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(null));
}
}
Но my_word_to_translate должен основываться на переменной в просмотре. Я имею в виду, что есть много возможных реализаций с MY_WORD_TO_TRANSLATE Это может быть MY_WORD_TO_TRANSLATE_1 , my_word_to_translate_2 и т. Д., И мне интересно, как обращаться с ним, когда my_word_to_translate не жестко, это может измениться. Я ищу решение, такое как
Подробнее здесь: https://stackoverflow.com/questions/794 ... th-binding