Come posso localizzare il contenuto del controllo SiteMapPath?

Utente HTML.it
chiede

Come posso localizzare il contenuto del controllo SiteMapPath?

Redazione HTML.it
risponde

La localizzazione del controllo SiteMapPath richiede dei passaggi leggermente diversi da quelli necessari per gli tutti gli altri oggetti di ASP.NET. Innanzi tutto, si deve impostare l’attributo enableLocalization del tag SiteMap su true:

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" enableLocalization="true" >

Fatto questo, si deve aggiungere un tag di nome resourceKey ai vari siteMapNode che si desidera localizzare:

<siteMapNode url="Default.aspx" resourceKey="HomePage">
  <siteMapNode url="Errors/PageNotFound.aspx" resourceKey="PaginaNonTrovata" />
  <siteMapNode url="Users/Login.aspx" resourceKey="Login" />
</siteMapNode>

Infine, per ogni lingua supportata si deve creare un RESX nella cartella App_GlobalResources del sito web, con nome Web.sitemap.<lingua>.resx. Ad esempio:

  • Web.sitemap.resx per la lingua di default
  • Web.sitemap.en-US.resx per l’inglese
  • Web.sitemap.fr-FR.resx per il francese

All’interno di ognuno di questi file devono essere inserite le stringhe corrispondenti alle risorse. E’ possibile localizzare il titolo e la descrizione di ogni elemento:

Web.sitemap.resx
Nome Valore
Home.Title Pagina iniziale
Home.Description Torna alla pagina iniziale del sito
Login.Title Accesso
Web.sitemap.en-US.resx
Nome Valore
Home.Title Home Page
Home.Description Go to Home page
Login.Title Login

Con queste impostazioni, cambiando le cultura del sito, il controllo SiteMapPath mostrerà automaticamente le risorse localizzate nella nuova lingua.