Я работаю над изменением языка в формах xamarin, но столкнулся с несколькими проблемами - PullRequest
0 голосов
/ 28 марта 2020

Когда я выбираю средство выбора на основе выбранного языка, нам нужно перейти на выбранный язык, и я также добавил файлы 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 работает ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...