using System.Collections.Generic; using System.Windows; using System.Windows.Threading; using Cvte.EasiNote; using Cvte.Windows.Localization; namespace BetterEN5 { static class UIItemManagerExtensions { public static void AppendWithLang(this IUIItemManager manager, UIItem item, UIItemAttribute attribute, IList langInfoList) { manager.Append(c => item, attribute); var purpose = attribute.Purposes[0]; var prefix = purpose == UIItemPurposes.BoardEditMenu ? "BoardEditContextMenu" : purpose; var key = $"Lang.{prefix}.{item.GetType().Name}"; Application.Current.Dispatcher.InvokeAsync(() => { foreach (var langInfo in langInfoList) { Lang.Sources.Add(new DictionaryLanguageSource { [langInfo.CultureInfo] = new Dictionary { { key, langInfo.LangText } }, }); } }, DispatcherPriority.Send); } } }