我试图以几乎任何方式本地化MvcSiteMapProvider,但我没有得到它。正如我发现它在你使用app_globalresources文件夹时有效,但这不是一个选项,如果你使用MVC因为MVC不支持它们(至少发布功能不发布文件)。
目前,我的网站资源文件位于名为words.resx(和words.de-DE.resx)的文件中,该文件位于名为Resources的新文件夹下。我已将构建操作设置为“嵌入式资源”,“始终复制”并将工具更改为PublicResXFileCodeGenerator。
对于SiteMap,我不关心它是隐式还是显式本地化....我尝试了两种方法并使用了不同的resx文件命名和自定义工具的不同设置,但它们都没有工作。
有没有人让这个工作?
亲切的问候 岸堤
答案 0 :(得分:3)
注意:将资源放入
App_GlobalResources
文件夹(isn't supported very well by MVC)的另一种方法是implementIStringLocalizer
。
本地化与微软的SiteMapProvider(MvcSiteMapProvider最初所基于的)基本保持不变。对于本地化,您仍然可以在大多数情况下遵循How to: Localize Site-Map Data文档。
启用本地化是在appSettings中的MvcSiteMapProvider_EnableLocalization设置中完成的,或者如果使用外部DI,您可以通过将设置传递给SiteMapBuilderSet的enableLocalization构造函数参数在DI配置中进行设置。它默认启用。
我建议使用显式本地化作为隐式本地化requires some hoops以便开始工作,并且可能会在将来的版本中进行更改。
可本地化的字段是:
以下是来自MvcMusicStore demo的显式本地化示例,该示例在某些节点上使用了本地化。
<mvcSiteMapNode title="$resources:SiteMapLocalizations,BrowseGenresTitle" controller="Store" action="Index"/>
它指的是App_GlobalResources文件夹中名为SiteMapLocalizations.resx
的文件(以及名为BrowseGenresTitle的项目)。
或者,您可以对每个区域设置使用multiple sitemaps in the same application,从而为每个区域设置提供不同的网站结构(和不同的网址)。