diff --git a/src/Umbraco.Web/Editors/EntityController.cs b/src/Umbraco.Web/Editors/EntityController.cs
index a894b681f0..3938ae5ab8 100644
--- a/src/Umbraco.Web/Editors/EntityController.cs
+++ b/src/Umbraco.Web/Editors/EntityController.cs
@@ -768,7 +768,8 @@ namespace Umbraco.Web.Editors
///
private IEnumerable ExamineSearch(string query, UmbracoEntityTypes entityType, string searchFrom = null, bool ignoreUserStartNodes = false)
{
- return _treeSearcher.ExamineSearch(query, entityType, 200, 0, out _, searchFrom, ignoreUserStartNodes);
+ var culture = ClientCulture();
+ return _treeSearcher.ExamineSearch(query, entityType, 200, 0, culture, out _, searchFrom, ignoreUserStartNodes);
}
private IEnumerable GetResultForChildren(int id, UmbracoEntityTypes entityType)
diff --git a/src/Umbraco.Web/Models/Mapping/EntityMapDefinition.cs b/src/Umbraco.Web/Models/Mapping/EntityMapDefinition.cs
index 34b8f664f3..ddff093aab 100644
--- a/src/Umbraco.Web/Models/Mapping/EntityMapDefinition.cs
+++ b/src/Umbraco.Web/Models/Mapping/EntityMapDefinition.cs
@@ -177,6 +177,12 @@ namespace Umbraco.Web.Models.Mapping
target.Name = source.Values.ContainsKey("nodeName") ? source.Values["nodeName"] : "[no name]";
+ var culture = context.GetCulture();
+ if(culture.IsNullOrWhiteSpace() == false)
+ {
+ target.Name = source.Values.ContainsKey($"nodeName_{culture}") ? source.Values[$"nodeName_{culture}"] : target.Name;
+ }
+
if (source.Values.TryGetValue(UmbracoExamineIndex.UmbracoFileFieldName, out var umbracoFile))
{
if (umbracoFile != null)
diff --git a/src/Umbraco.Web/Search/UmbracoTreeSearcher.cs b/src/Umbraco.Web/Search/UmbracoTreeSearcher.cs
index 146177f86f..dcc156e356 100644
--- a/src/Umbraco.Web/Search/UmbracoTreeSearcher.cs
+++ b/src/Umbraco.Web/Search/UmbracoTreeSearcher.cs
@@ -12,6 +12,7 @@ using Umbraco.Core.Persistence;
using Umbraco.Core.Services;
using Umbraco.Examine;
using Umbraco.Web.Models.ContentEditing;
+using Umbraco.Web.Models.Mapping;
using Umbraco.Web.Trees;
namespace Umbraco.Web.Search
@@ -65,6 +66,16 @@ namespace Umbraco.Web.Search
UmbracoEntityTypes entityType,
int pageSize,
long pageIndex, out long totalFound, string searchFrom = null, bool ignoreUserStartNodes = false)
+ {
+ return ExamineSearch(query, entityType, pageSize, pageIndex, culture: null, out totalFound, searchFrom, ignoreUserStartNodes);
+ }
+
+ public IEnumerable ExamineSearch(
+ string query,
+ UmbracoEntityTypes entityType,
+ int pageSize,
+ long pageIndex, string culture,
+ out long totalFound, string searchFrom = null, bool ignoreUserStartNodes = false)
{
var sb = new StringBuilder();
@@ -140,7 +151,7 @@ namespace Umbraco.Web.Search
case UmbracoEntityTypes.Media:
return MediaFromSearchResults(pagedResult);
case UmbracoEntityTypes.Document:
- return ContentFromSearchResults(pagedResult);
+ return ContentFromSearchResults(pagedResult, culture);
default:
throw new NotSupportedException("The " + typeof(UmbracoTreeSearcher) + " currently does not support searching against object type " + entityType);
}
@@ -443,13 +454,17 @@ namespace Umbraco.Web.Search
///
///
///
- private IEnumerable ContentFromSearchResults(IEnumerable results)
+ private IEnumerable ContentFromSearchResults(IEnumerable results, string culture = null)
{
var defaultLang = _languageService.GetDefaultLanguageIsoCode();
-
foreach (var result in results)
{
- var entity = _mapper.Map(result);
+ var entity = _mapper.Map(result, context => {
+ if(culture != null) {
+ context.SetCulture(culture);
+ }
+ }
+ );
var intId = entity.Id.TryConvertTo();
if (intId.Success)
@@ -457,7 +472,7 @@ namespace Umbraco.Web.Search
//if it varies by culture, return the default language URL
if (result.Values.TryGetValue(UmbracoContentIndex.VariesByCultureFieldName, out var varies) && varies == "y")
{
- entity.AdditionalData["Url"] = _umbracoContext.Url(intId.Result, defaultLang);
+ entity.AdditionalData["Url"] = _umbracoContext.Url(intId.Result, culture ?? defaultLang);
}
else
{