Con questa classe helper si possono usare i file di risorse in qualsiasi Web Part o pagina all'interno di
SharePoint 2007 (WSS3 - MOSS).
using System;
using System.Collections.Generic;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
namespace Sgart
{
class Helper
{
private const string RESOURCEFILE = "SgartResourceTest";
public static uint LangSiteTemplate
{
get { return SPContext.Current.Web != null ? SPContext.Current.Web.Language : 1033; }
}
public static uint LangLocale
{
get { return SPContext.Current.Web != null ? SPContext.Current.Web.RegionalSettings.LocaleId : 1033; }
}
public static string GetResource(string key)
{
return SPUtility.GetLocalizedString(
string.Format("$Resources:{0}", key),
RESOURCEFILE, LangLocale);
}
}
}
In questo caso il file di risorse si chiama
SgartResourceTest.resx, costante
RESOURCEFILE, e deve trovarsi nella cartella ...12\Resources , ovviamente si possono aggiungere altri file di risorse localizate (ad es. SgartResourceTest.it-IT.resx).
Per richiamare una risorsa è sufficiente invocare il metodo
Helper.GetResource passando il nome della chiave nel file risorse.
Nell'esempio la lingua viene scelta in base alle impostazioni del regional setting del sito, proprietà
LangLocal. E' possibile legare la localizzazione alla lingua del template di sito semplicemente usando la proprietà
LangSiteTemplate:
public static string GetResource(string key)
{
return SPUtility.GetLocalizedString(
string.Format("$Resources:{0}", key),
RESOURCEFILE, LangSiteTemplate);
}
nel caso il file di risorse si trovasse in una sottocartella ad esempio ...12\Resources\MiaCartella\SgartResourceTest.resx la sintassi diventa:
SPUtility.GetLocalizedString("$Resources:nomeKey", "MiaCartella/SgartResourceTest", 1040)Funziona anche con
SharePoint 2010