diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/AbpWasmCultureMenuItemUrlProvider.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/AbpWasmCultureMenuItemUrlProvider.cs index a0c89ab3ee..0c7b9f4f09 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/AbpWasmCultureMenuItemUrlProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/AbpWasmCultureMenuItemUrlProvider.cs @@ -23,6 +23,11 @@ public class AbpWasmCultureMenuItemUrlProvider : IMenuItemUrlProvider, ITransien public virtual async Task HandleAsync(MenuItemUrlProviderContext context) { + if (!OperatingSystem.IsBrowser()) + { + return; + } + var config = await ConfigurationClient.GetAsync(); if (!config.Localization.UseRouteBasedCulture) { @@ -35,7 +40,7 @@ public class AbpWasmCultureMenuItemUrlProvider : IMenuItemUrlProvider, ITransien return; } - PrependCulturePrefix(context.Menu, "/" + culture); + MenuItemCulturePrefixHelper.PrependCulturePrefix(context.Menu, "/" + culture); } protected virtual string? GetCulture(Mvc.ApplicationConfigurations.ApplicationConfigurationDto config) @@ -53,23 +58,4 @@ public class AbpWasmCultureMenuItemUrlProvider : IMenuItemUrlProvider, ITransien return isKnownCulture ? currentCulture : null; } - protected virtual void PrependCulturePrefix(IHasMenuItems menuWithItems, string prefix) - { - foreach (var item in menuWithItems.Items) - { - if (item.Url != null) - { - if (item.Url.StartsWith("~/")) - { - item.Url = "~" + prefix + item.Url[1..]; - } - else if (item.Url.StartsWith('/')) - { - item.Url = prefix + item.Url; - } - } - - PrependCulturePrefix(item, prefix); - } - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpCultureMenuItemUrlProvider.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpCultureMenuItemUrlProvider.cs index 0618bbf852..64867d99a4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpCultureMenuItemUrlProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpCultureMenuItemUrlProvider.cs @@ -44,8 +44,7 @@ public class AbpCultureMenuItemUrlProvider : IMenuItemUrlProvider, ITransientDep return Task.CompletedTask; } - var prefix = "/" + culture; - PrependCulturePrefix(context.Menu, prefix); + MenuItemCulturePrefixHelper.PrependCulturePrefix(context.Menu, "/" + culture); return Task.CompletedTask; } @@ -66,23 +65,4 @@ public class AbpCultureMenuItemUrlProvider : IMenuItemUrlProvider, ITransientDep return isKnownCulture ? currentCulture : null; } - protected virtual void PrependCulturePrefix(IHasMenuItems menuWithItems, string prefix) - { - foreach (var item in menuWithItems.Items) - { - if (item.Url != null) - { - if (item.Url.StartsWith("~/")) - { - item.Url = "~" + prefix + item.Url[1..]; - } - else if (item.Url.StartsWith('/')) - { - item.Url = prefix + item.Url; - } - } - - PrependCulturePrefix(item, prefix); - } - } } diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuItemCulturePrefixHelper.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuItemCulturePrefixHelper.cs new file mode 100644 index 0000000000..9bdcfe4c3b --- /dev/null +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuItemCulturePrefixHelper.cs @@ -0,0 +1,24 @@ +namespace Volo.Abp.UI.Navigation; + +public static class MenuItemCulturePrefixHelper +{ + public static void PrependCulturePrefix(IHasMenuItems menuWithItems, string prefix) + { + foreach (var item in menuWithItems.Items) + { + if (item.Url != null) + { + if (item.Url.StartsWith("~/")) + { + item.Url = "~" + prefix + item.Url.Substring(1); + } + else if (item.Url.StartsWith("/")) + { + item.Url = prefix + item.Url; + } + } + + PrependCulturePrefix(item, prefix); + } + } +}