Asp.net mvc 如何本地化MvcSiteMapProvider

Asp.net mvc 如何本地化MvcSiteMapProvider,asp.net-mvc,mvcsitemapprovider,Asp.net Mvc,Mvcsitemapprovider,我试图以几乎任何方式本地化MvcSiteMapProvider,但我不明白。正如我发现的,当您使用app_globalresources文件夹时,它可以工作,但如果您使用MVC,则这不是一个选项,因为MVC不支持它们(至少发布功能不发布文件) 目前,我的网站资源文件位于一个名为words.resx(和words.de-de.resx)的文件中,该文件位于名为Resources的新文件夹下。我已将构建操作设置为“嵌入式资源”、“始终复制”,并将工具更改为PublicResXFileCodeGene

我试图以几乎任何方式本地化MvcSiteMapProvider,但我不明白。正如我发现的,当您使用app_globalresources文件夹时,它可以工作,但如果您使用MVC,则这不是一个选项,因为MVC不支持它们(至少发布功能不发布文件)

目前,我的网站资源文件位于一个名为words.resx(和words.de-de.resx)的文件中,该文件位于名为Resources的新文件夹下。我已将构建操作设置为“嵌入式资源”、“始终复制”,并将工具更改为PublicResXFileCodeGenerator

对于站点地图,我不在乎它是隐式的还是显式的本地化。。。。我尝试了这两种方法,并使用了不同的resx文件命名和自定义工具的不同设置,但都不起作用

有人让它起作用了吗

问候 安迪

注意:将您的资源放入
App\u GlobalResources
文件夹的另一种方法是

从微软的SiteMapProvider(MvcSiteMapProvider最初的基础)来看,本地化在很大程度上保持不变。对于本地化,您仍然可以大部分遵循文档

启用本地化是在appSettings中的MvcSiteMapProvider_EnableLocalization设置中完成的,或者如果使用外部DI,您可以通过将该设置传递给SiteMapBuilderSet的EnableLocalization构造函数参数在DI配置中进行设置。默认情况下,它处于启用状态

我建议使用显式本地化,作为隐式本地化来开始工作,并且在将来的版本中可能会发生变化

可本地化的字段包括:

  • 头衔
  • 描述
  • 图像URL
  • 属性(即字符串数据类型)
下面是中的一个显式本地化示例,它在某些节点上使用了本地化

<mvcSiteMapNode title="$resources:SiteMapLocalizations,BrowseGenresTitle" controller="Store" action="Index"/>

它指的是App_GlobalResources文件夹中名为
SiteMapLocalizations.resx
(和名为BrowseGenresTitle)的文件


或者,您可以使用for each locale,这使得每个locale具有不同的站点结构(和不同的URL)成为可能

感谢您的回复,但是使用App_GlobalResources在MVC中不是一个选项,并且当resx文件位于普通文件夹中时,我没有让它工作。什么意思是说它在MVC中不是一个选项?您只需要添加文件夹,它就会工作。仅供参考-我找到了发布命令的解决方案。您需要将构建操作设置为“嵌入式”,将“不复制”设置为输出目录,并将自定义工具设置为“PublicResXFileCodeGenerator”,将自定义工具名称空间设置为“Resources”:嗯,我试过了。我的资源文件名为SiteMapRes.resx,现在位于App_GlobalResources(嵌入式资源、不复制、资源)下。我在MVC.sitemap文件中使用title=“$resources:SiteMapRes,Home”访问它们。此配置在本地工作!在服务器上发布后,出现以下错误“找不到类名为'SiteMapRes'且密钥为'Home'的资源对象。感谢您的建议。如果您能提供指向此信息的链接或2,我将不胜感激。当前的实现基于Microsoft针对ASP.NET的SiteMapProvider设计(与V3一样),但我没有意识到它的全局资源设计不应该用于MVC。推荐的替代方案是什么?还有,你指的是什么“好的解决方案”?App_GlobalResources是这里讨论的唯一选项,因为它是目前在MvcSiteMapProvider中本地化单个站点地图的唯一选项。