From ccc8868f68714478ebccf62875a7aa8d9fcd1250 Mon Sep 17 00:00:00 2001 From: Claus Date: Fri, 1 Jun 2018 13:06:13 +0200 Subject: [PATCH] fixes U4-11338 Language dropdown fails when invalid cultures are present --- .../Trees/LanguageTreeController.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web/Trees/LanguageTreeController.cs b/src/Umbraco.Web/Trees/LanguageTreeController.cs index 5481b7d40c..4374e1a364 100644 --- a/src/Umbraco.Web/Trees/LanguageTreeController.cs +++ b/src/Umbraco.Web/Trees/LanguageTreeController.cs @@ -5,9 +5,12 @@ using System.Net.Http.Formatting; using System.Web.Services.Description; using umbraco; using umbraco.BusinessLogic.Actions; +using umbraco.cms.presentation; using Umbraco.Core; using Umbraco.Core.Models; using umbraco.presentation.actions; +using Umbraco.Core.Logging; +using Umbraco.Core.Services; using Umbraco.Web.Models.Trees; using Umbraco.Web.Mvc; using Umbraco.Web.WebApi.Filters; @@ -42,9 +45,18 @@ namespace Umbraco.Web.Trees var languages = Services.LocalizationService.GetAllLanguages(); foreach (var language in languages) { - nodes.Add( - CreateTreeNode( - language.Id.ToString(CultureInfo.InvariantCulture), "-1", queryStrings, language.CultureInfo.DisplayName, "icon-flag-alt", false, + string displayName; + try + { + displayName = language.CultureInfo.DisplayName; + } + catch (CultureNotFoundException ex) + { + Logger.Error(string.Format("Could not find the specified culture: '{0}'. Please make sure this culture is installed on your machine.", language.IsoCode), ex); + displayName = "Unknown Locale (" + language.IsoCode + ")"; + } + nodes.Add(CreateTreeNode( + language.Id.ToString(CultureInfo.InvariantCulture), "-1", queryStrings, displayName, "icon-flag-alt", false, //TODO: Rebuild the language editor in angular, then we dont need to have this at all (which is just a path to the legacy editor) "/" + queryStrings.GetValue("application") + "/framed/" + Uri.EscapeDataString("settings/editLanguage.aspx?id=" + language.Id)));