using System;
using System.Windows.Data;
using System.Windows.Markup;
using ClaudeDo.Localization;

namespace ClaudeDo.Installer.Localization;

public sealed class TrExtension : MarkupExtension
{
    public TrExtension() { }
    public TrExtension(string key) => Key = key;

    public string Key { get; set; } = "";

    public static ILocalizer? Localizer { get; set; }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        var loc = Localizer ?? throw new InvalidOperationException("TrExtension.Localizer not initialized");
        var binding = new Binding(nameof(LocalizedString.Value))
        {
            Source = new LocalizedString(loc, Key),
            Mode = BindingMode.OneWay
        };
        return binding.ProvideValue(serviceProvider);
    }
}
