本地化问题-Windows 8.1应用程序

本文关键字:应用程序 -Windows 问题 本地化 | 更新日期: 2023-09-27 18:20:04

我在更改应用程序的语言时遇到问题。当用户在组合框中更改所选项目时,应更改语言。

下面是我代码的一部分:

protected override void OnLaunched(LaunchActivatedEventArgs args)
    {        
       ResourceContext.GetForCurrentView().QualifierValues.MapChanged += QualifierValues_MapChanged;
    }
private void QualifierValues_MapChanged(IObservableMap<string, string> sender, IMapChangedEventArgs<string> @event)
    {
        ResourceContext.ResetGlobalQualifierValues();
    }

组合框代码为:

private void cbLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (e.AddedItems.Count > 0 && !String.IsNullOrEmpty(((ComboBoxItem)e.AddedItems[0]).Tag as string))
        {
            LocalizationManager.UICulture = new System.Globalization.CultureInfo((string)((ComboBoxItem)e.AddedItems[0]).Tag);
            Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = LocalizationManager.UICulture.Name;
            int index = 0;
            if (cbLanguage.SelectedIndex == 0 || cbLanguage.SelectedIndex < 0)
            {
                index = cbLanguage.Items.Count - 1;
            }
            else
            {
                index = cbLanguage.SelectedIndex - 1;
            }
            Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = (string)((ComboBoxItem)cbLanguage.Items[index]).Tag as String;
            Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = ((ComboBoxItem)e.AddedItems[0]).Tag as String;
            if (languageChange != null)
            {
                languageChange(sender, new EventArgs());
            }
        }
        else
        {
            LocalizationManager.UICulture = System.Globalization.CultureInfo.CurrentUICulture;
        }
    }

这将返回一个访问冲突错误。

你能帮我一下吗?这样应用程序就能正确地更改语言了?

本地化问题-Windows 8.1应用程序

代码设置Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride三次。这是什么原因?

设置了主要语言后,为什么要更改索引并重新设置语言?

if (cbLanguage.SelectedIndex == 0 || cbLanguage.SelectedIndex < 0)
        {
            index = cbLanguage.Items.Count - 1;
        }
        else
        {
            index = cbLanguage.SelectedIndex - 1;
        }