GetLocalizedString e Powershell

Una delle attività che più mi appassionano in questi ultimi mesi è l’automatizzazione di tutta una serie di attività di amministrazione di SharePoint (2013) con Windows Powershell.

Tra i vari ostacoli che mi è capitato di affrontare c’è stato quello della lingua del sito. Cercando di scrivere uno script “il più generico e riutilizzabile possibile” non posso prevedere in anticipo con quale Language Pack è stato creato un sito e di conseguenza il nome di molte raccolte di sistema che vorrei “interrogare”, come ad esempio Page Library (nell’esempio) o Style Library.

Una possibilità è sicuramente quella di inserire nello script un controllo sulla lingua del sito e prevedere in anticipo “n” etichette per ciascuna possibile lingua. No, non mi piace. Grazie a Cristian ho trovato una soluzione che mi soddisfa.

Si tratta di utilizzare il metodo GetLocalizedString disponibile nella classe Microsoft.Sharepoint.Utilities.SpUtility (la stessa di cui avevo scritto parlando del metodo SendMail). La logica è molto semplice, vediamola di seguito.

 Queste prime righe per me sono “fisse” e sono indipendenti dallo script, passiamo oltre. Come documentato su MSDN il metodo GetLocalizedString richiede tre parametri:

  • source: la chiave corrispondente alla stringa da tradurre;
  • defaultResourceFile: il file di risorsa da cui attingere;
  • language: l’impostazione locale del sito.

 Valorizziamo quindi le nostre variabili:

Intuisco già le obbiezioni a questo passaggio… Già, ma come faccio a sapere quale file di risorsa contiene la mia stringa? E poi, quale stringa? Purtroppo non ho una risposta elegante da dare, se non quella di utilizzare ambienti di test per spulciare il contenuto dei file di risorsa.

A questo punto siamo comunque pronti per recuperare la nostra stringa localizzata, che in questo caso sarà stampata a video.

 Ed ecco lo snippet completo:

Happy Scripting!
– Riccardo

Submit a Comment