Когда я выбираю средство выбора на основе выбранного языка, нам нужно перейти на выбранный язык, и я также добавил файлы resx, но не изменился, может кто-нибудь помочь мне с этим.
enter code here
public class CultureChangedMessage
{
public CultureInfo NewCultureInfo { get; private set; }
public CultureChangedMessage(string lngName)
: this(new CultureInfo(lngName))
{ }
public CultureChangedMessage(CultureInfo newCultureInfo)
{
NewCultureInfo = newCultureInfo;
}
}
}
public class LocalizedResources: INotifyPropertyChanged
{
const string DEFAULT_LANGUAGE = "en";
readonly ResourceManager ResourceManager;
CultureInfo CurrentCultureInfo;
public string this[string key]
{
get
{
return ResourceManager.GetString(key, CurrentCultureInfo);
}
}
public LocalizedResources(Type resource, string language = null)
: this(resource, new CultureInfo(language ?? DEFAULT_LANGUAGE))
{ }
public LocalizedResources(Type resource, CultureInfo cultureInfo)
{
CurrentCultureInfo = cultureInfo;
ResourceManager = new ResourceManager(resource);
MessagingCenter.Subscribe<object, CultureChangedMessage>(this,
string.Empty, OnCultureChanged);
}
private void OnCultureChanged(object s, CultureChangedMessage ccm)
{
CurrentCultureInfo = ccm.NewCultureInfo;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item"));
}
public event PropertyChangedEventHandler PropertyChanged;
}
public LocalizedResources Resources
{
get;
private set;
}
public BaseViewModel()
{
Resources = new LocalizedResources(typeof(AppResources), App.CurrentLanguage);
}
// public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName]string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs((propertyName)));
}
public event PropertyChangedEventHandler PropertyChanged;
public List<string> Languages { get; set; } = new List<string>()
{
"EN",
"de",
};
private string _SelectedLanguage;
public string SelectedLanguage
{
get { return _SelectedLanguage; }
set
{
_SelectedLanguage = value;
LanguageSelected();
}
}
private void LanguageSelected()
{
App.CurrentLanguage = SelectedLanguage;
MessagingCenter.Send<object, CultureChangedMessage>(this,
string.Empty, new CultureChangedMessage(SelectedLanguage));
AppResources.Culture = new CultureInfo(SelectedLanguage);
}
}
Приведенный выше код принадлежит мне, но язык не меняется, кто-нибудь может мне помочь, это было бы очень полезно для меня ... также я добавил resx-файл один по умолчанию другой "де", но по умолчанию работает другой файл resx работает ....