Sunday, June 26, 2011

Sharepoint 2010 - Cambiare Lingua al Titolo delle Web Part

Sharepoint 2010 dà la possibilità di implementare la localizzazione dei siti (e dei suoi elementi), grazie alla Multilanguage User Interface.

Purtroppo, come ben documentato da MS stessa (http://technet.microsoft.com/it-it/library/ff805062.aspx#Section7), non tutti gli elementi di un sito possono avere al seguito le traduzioni.

Una possibilità è quella di utilizzare un controllo client che ci permetta di cambiare lingua al titolo delle web part.
Analizzando il codice della pagina prodotta da Sharepoint, ho individuato i tag necessari ad identificare il titolo della web part.


La class ms-WPTitle dell'elemento h3 definisce il titolo della web part. Al suo interno, dobbiamo cercare il tag "span" che contiene il titolo. Generalmente è il primo dei due, senza id e, ovviaemente, non vuoto. Bene, sappiamo dove prendere il titolo.


Definiamo ora un modo con cui l'utente possa essere autonomo nella gestione dei titoli in multilingua.
L'idea è quella di utilizzare il campo Title delle proprietà della web part e chiedere all'utente di scrivere i titoli in lingua, separati da pipe ('|').

Title = "English title|French title|Italian title

Il js implementato controlla che siano presenti tutte le lingue (in questo caso, tre lingue) e se esistono tutte, seleziona quella da utilizzare nella visualizzazione, altrimenti inserisce come titolo quello che c'è..

Inoltre, lo script gira su tutte le web part della pagina, ovvero cerca i tag H3 con classe "ms-WPTitle" e ne ricerca il tag span con il titolo.

Utilizzando uno script con jquery, ho implementato il codice :

$(document).ready(function () {
var lcid = L_Menu_LCID;
var arrayH3 = $(".ms-WPTitle");
$.each(arrayH3, function () {
var title = $(this).children("a").children("nobr").children("span").first();
var arrTitle = title.text().split('|');
if (arrTitle.length == 3) {
if (lcid == 1036) { //french
title.text(arrTitle[1]);
}
else if (lcid == 1040) { //italian
title.text(arrTitle[2]);
}
else { //english / default
title.text(arrTitle[0]);
}
}
});
});

L_MENU_LCID è una variabile di Sharepoint che definisce l'identificativo della lingua corrente utilizzata dall'utente.
Lo script può essere inserito a fondo pagina in una Content Editor Web Part (come HTML), con in testa il richiamo alle librerie jquery.


Se le lingue sono in numero diverso, occorre modificare il codice utilizzando il numero e gli identificativi corretti per la lingua.

Spero vi sia utile!