using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Resources;
using System.Text;
using System.Threading;
namespace MaterialTraceabilityUI.Resources
{
public class LanguageManager : INotifyPropertyChanged
{
///
/// 资源
///
private readonly ResourceManager _resourceManager;
///
/// 懒加载
///
private static readonly Lazy _lazy = new Lazy(() => new LanguageManager());
public static LanguageManager Instance => _lazy.Value;
public event PropertyChangedEventHandler PropertyChanged;
public LanguageManager()
{
//获取此命名空间下Resources的Lang的资源,Lang可以修改
_resourceManager = new ResourceManager("MaterialTraceabilityUI.Resources.Lang", typeof(LanguageManager).Assembly);
}
///
/// 索引器的写法,传入字符串的下标
///
///
///
///
public string this[string name]
{
get
{
if (name == null)
{
throw new ArgumentNullException(nameof(name));
}
return _resourceManager.GetString(name);
}
}
public void ChangeLanguage(CultureInfo cultureInfo)
{ // 获取当前线程
var currentThread = Thread.CurrentThread;
currentThread.CurrentCulture = cultureInfo;
currentThread.CurrentUICulture = cultureInfo;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("item[]")); //字符串集合,对应资源的值
}
}
}