diff --git a/src/Umbraco.Core/Dictionary/ICultureDictionaryFactory.cs b/src/Umbraco.Core/Dictionary/ICultureDictionaryFactory.cs
index 6cb2642b1539..242cfb8e3575 100644
--- a/src/Umbraco.Core/Dictionary/ICultureDictionaryFactory.cs
+++ b/src/Umbraco.Core/Dictionary/ICultureDictionaryFactory.cs
@@ -1,6 +1,10 @@
+using System.Globalization;
+
namespace Umbraco.Cms.Core.Dictionary;
public interface ICultureDictionaryFactory
{
ICultureDictionary CreateDictionary();
+
+ ICultureDictionary CreateDictionary(CultureInfo specificCulture) => throw new NotImplementedException();
}
diff --git a/src/Umbraco.Core/Dictionary/UmbracoCultureDictionary.cs b/src/Umbraco.Core/Dictionary/UmbracoCultureDictionary.cs
index de968f167640..36e1acbce8ba 100644
--- a/src/Umbraco.Core/Dictionary/UmbracoCultureDictionary.cs
+++ b/src/Umbraco.Core/Dictionary/UmbracoCultureDictionary.cs
@@ -1,4 +1,5 @@
using System.Globalization;
+using System.Text.RegularExpressions;
using Umbraco.Cms.Core.Cache;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Services;
@@ -47,7 +48,7 @@ public DefaultCultureDictionary(CultureInfo specificCulture, ILocalizationServic
}
///
- /// Returns the current culture
+ /// Returns the defualt umbraco's back office culture
///
public CultureInfo Culture => _specificCulture ?? Thread.CurrentThread.CurrentUICulture;
diff --git a/src/Umbraco.Core/Dictionary/UmbracoCultureDictionaryFactory.cs b/src/Umbraco.Core/Dictionary/UmbracoCultureDictionaryFactory.cs
index 4c4eb030cc7e..2f00114c13a8 100644
--- a/src/Umbraco.Core/Dictionary/UmbracoCultureDictionaryFactory.cs
+++ b/src/Umbraco.Core/Dictionary/UmbracoCultureDictionaryFactory.cs
@@ -1,3 +1,4 @@
+using System.Globalization;
using Umbraco.Cms.Core.Cache;
using Umbraco.Cms.Core.Services;
@@ -23,4 +24,7 @@ public DefaultCultureDictionaryFactory(ILocalizationService localizationService,
public ICultureDictionary CreateDictionary() =>
new DefaultCultureDictionary(_localizationService, _appCaches.RequestCache);
+
+ public ICultureDictionary CreateDictionary(CultureInfo specificCulture) =>
+ new DefaultCultureDictionary(specificCulture, _localizationService, _appCaches.RequestCache);
}
diff --git a/src/Umbraco.Web.Common/UmbracoHelper.cs b/src/Umbraco.Web.Common/UmbracoHelper.cs
index 56181b29dac6..2cb2ea8002b8 100644
--- a/src/Umbraco.Web.Common/UmbracoHelper.cs
+++ b/src/Umbraco.Web.Common/UmbracoHelper.cs
@@ -1,4 +1,6 @@
+using System.Globalization;
using System.Xml.XPath;
+using Serilog.Events;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Dictionary;
using Umbraco.Cms.Core.Models.PublishedContent;
@@ -139,12 +141,43 @@ public async Task RenderMacroAsync(string alias, IDictionary
///
public string? GetDictionaryValue(string key) => CultureDictionary[key];
+
+ ///
+ /// Returns the dictionary value for the key specified, and if empty returns the specified default fall back value
+ ///
+ /// key of dictionary item
+ /// the specific culture on which the result well be back upon
+ ///
+ public string? GetDictionaryValue(string key, CultureInfo specificCulture)
+ {
+ _cultureDictionary = _cultureDictionaryFactory.CreateDictionary(specificCulture);
+ return GetDictionaryValue(key);
+ }
+
+ ///
+ /// Returns the dictionary value for the key specified, and if empty returns the specified default fall back value
+ ///
+ /// key of dictionary item
+ /// fall back text if dictionary item is empty - Name altText to match Umbraco.Field
+ ///
+ public string GetDictionaryValueOrDefault(string key, string defaultValue)
+ {
+ var dictionaryValue = GetDictionaryValue(key);
+ if (string.IsNullOrWhiteSpace(dictionaryValue))
+ {
+ dictionaryValue = defaultValue;
+ }
+
+ return dictionaryValue;
+ }
+
///
/// Returns the dictionary value for the key specified, and if empty returns the specified default fall back value
///
/// key of dictionary item
/// fall back text if dictionary item is empty - Name altText to match Umbraco.Field
///
+ [Obsolete("Use GetDictionaryValueOrDefault instead, scheduled for removal in v14.")]
public string GetDictionaryValue(string key, string altText)
{
var dictionaryValue = GetDictionaryValue(key);
@@ -156,6 +189,25 @@ public string GetDictionaryValue(string key, string altText)
return dictionaryValue;
}
+ ///
+ /// Returns the dictionary value for the key specified, and if empty returns the specified default fall back value
+ ///
+ /// key of dictionary item
+ /// the specific culture on which the result well be back upon
+ /// fall back text if dictionary item is empty - Name altText to match Umbraco.Field
+ ///
+ public string GetDictionaryValueOrDefault(string key, CultureInfo specificCulture, string defaultValue)
+ {
+ _cultureDictionary = _cultureDictionaryFactory.CreateDictionary(specificCulture);
+ var dictionaryValue = GetDictionaryValue(key);
+ if (string.IsNullOrWhiteSpace(dictionaryValue))
+ {
+ dictionaryValue = defaultValue;
+ }
+ return dictionaryValue;
+ }
+
+
///
/// Returns the ICultureDictionary for access to dictionary items
///