private LanguageManager() { List <string> imageLanguagesList = GetImageSupportedLanguages(); //Only Image Enable Map displayNameToImageLanguageMap = new SortedDictionary <string, string>( imageLanguagesList.Select(tag => { var lang = new Language(tag); return(new KeyValuePair <string, string>(lang.NativeName, GetLocaleFromLanguageTag(lang.LanguageTag))); }).ToDictionary(keyitem => keyitem.Key, valueItem => valueItem.Value) ); ImageLanguageDisplayNames = displayNameToImageLanguageMap.Keys.ToList(); displayNameToLanguageMap = new Dictionary <string, string> ( ApplicationLanguages.ManifestLanguages.Union(imageLanguagesList).Select(tag => { var lang = new Language(tag); return(new KeyValuePair <string, string>(lang.NativeName, GetLocaleFromLanguageTag(lang.LanguageTag))); }).OrderBy(a => a.Key).ToDictionary(keyitem => keyitem.Key, valueItem => valueItem.Value) ); LanguageDisplayNames = displayNameToLanguageMap.Keys.ToList(); displayNameToInputLanguageMap = new SortedDictionary <string, string>( InputLanguages.Select(tag => { var lang = new Language(tag); return(new KeyValuePair <string, string>(lang.NativeName, GetLocaleFromLanguageTag(lang.LanguageTag))); }).ToDictionary(keyitem => keyitem.Key, valueItem => valueItem.Value) ); InputLanguageDisplayNames = displayNameToInputLanguageMap.Keys.ToList(); //Exception when running in Local Machine try { //Add Image Enabled Languages as Global Preferences List if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5)) { GlobalizationPreferences.TrySetLanguages(displayNameToImageLanguageMap.Values); } } catch (UnauthorizedAccessException ex) { // This is indicative of EmbeddedMode not being enabled (i.e. // running IotCoreDefaultApp on Desktop or Mobile without // enabling EmbeddedMode) // https://developer.microsoft.com/en-us/windows/iot/docs/embeddedmode Log.Write(ex.ToString()); Log.Write("UnauthorizedAccessException: Check to see if Embedded Mode is enabled"); } }
private LanguageManager() { List <string> imageLanguagesList = GetImageSupportedLanguages(); // Only Image Enable Map _displayNameToImageLanguageMap = new SortedDictionary <string, string>( imageLanguagesList.Select(tag => { var lang = new Language(tag); return(new KeyValuePair <string, string>(lang.NativeName, GetLocaleFromLanguageTag(lang.LanguageTag))); }).ToDictionary(keyitem => keyitem.Key, valueItem => valueItem.Value) ); ImageLanguageDisplayNames = _displayNameToImageLanguageMap.Keys.ToList(); _displayNameToLanguageMap = new Dictionary <string, string>( ApplicationLanguages.ManifestLanguages.Union(imageLanguagesList).Select(tag => { var lang = new Language(tag); return(new KeyValuePair <string, string>(lang.NativeName, GetLocaleFromLanguageTag(lang.LanguageTag))); }).Distinct().OrderBy(a => a.Key).ToDictionary(keyitem => keyitem.Key, valueItem => valueItem.Value) ); LanguageDisplayNames = _displayNameToLanguageMap.Keys.ToList(); _displayNameToInputLanguageMap = new SortedDictionary <string, string>( _inputLanguages.Select(tag => { var lang = new Language(tag); return(new KeyValuePair <string, string>(lang.NativeName, GetLocaleFromLanguageTag(lang.LanguageTag))); }).ToDictionary(keyitem => keyitem.Key, valueItem => valueItem.Value) ); InputLanguageDisplayNames = _displayNameToInputLanguageMap.Keys.ToList(); // Exception when running in Local Machine try { // Add Image Enabled Languages as Global Preferences List if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5)) { // Find language currently set as UI language. This should be // the first language in the list passed to TrySetLanguages var uiLanguageTag = GlobalizationPreferences.Languages[0]; var index = imageLanguagesList.IndexOf(uiLanguageTag); if (index != 0) { if (index != -1) { imageLanguagesList.Remove(uiLanguageTag); } imageLanguagesList.Insert(0, uiLanguageTag); } GlobalizationPreferences.TrySetLanguages(imageLanguagesList); } } catch (UnauthorizedAccessException ex) { // This is indicative of EmbeddedMode not being enabled (i.e. // running on Desktop or Mobile without enabling EmbeddedMode) // https://developer.microsoft.com/en-us/windows/iot/docs/embeddedmode App.LogService.Write(ex.ToString()); } }