Procedura dettagliata: localizzazione di un'applicazione di SharePoint in Visual Studio
La localizzazione di un'applicazione di SharePoint consiste nella sostituzione delle relative stringhe hardcoded con espressioni e istruzioni che recuperano valori stringa localizzati da file di risorse. In questa procedura dettagliata viene illustrato come localizzare tutti gli elementi stringa di un'applicazione per pagine Web di SharePoint.
In questa procedura dettagliata vengono illustrate le attività seguenti:
Localizzazione del codice.
Localizzazione del markup ASPX.
Localizzazione di una funzionalità.
Prerequisiti
Per completare la procedura dettagliata, nel computer di sviluppo devono essere presenti i componenti elencati di seguito:
Edizioni supportate di Microsoft Windows, SharePoint e Visual Studio. Per ulteriori informazioni, vedere Requisiti per lo sviluppo di soluzioni SharePoint.
Language Pack di SharePoint 2010 per la lingua da supportare. I Language Pack consentono l'uso di altre lingue in SharePoint. Per ulteriori informazioni, vedere Language Pack per SharePoint Foundation 2010 o 2010 Server Language Pack per SharePoint Server 2010, Project Server 2010, Search Server 2010 e Office Web Apps 2010.
Il progetto completato descritto nell'argomento Procedura dettagliata: creazione di una web part per SharePoint.
Per completare la procedura dettagliata è consigliabile conoscere i concetti riportati di seguito:
Modalità di globalizzazione e localizzazione delle applicazioni di Visual Studio. Per ulteriori informazioni, vedere Globalizzazione e localizzazione di applicazioni.
Modalità di globalizzazione e localizzazione delle applicazioni di ASP.NET. Per ulteriori informazioni, vedere Globalizzazione e localizzazione ASP.NET.
Modalità di globalizzazione e localizzazione delle applicazioni SharePoint. Per ulteriori informazioni, vedere Localizzazione di una soluzione (la pagina potrebbe essere in inglese).
Localizzazione del codice di SharePoint
Il codice delle applicazioni di SharePoint contiene spesso stringhe hardcoded per il testo dell'UI. È possibile localizzare queste stringhe sostituendole con chiamate a GetGlobalResourceObject. Avviare la procedura dettagliata modificando un progetto Web part.
Per modificare il progetto Web part
Completare le procedure descritte nell'argomento Procedura dettagliata: creazione di una web part per SharePoint.
Con il progetto Web part caricato in Visual Studio, aggiungere un elemento del progetto Pagina applicazione al progetto Web part. Utilizzare il nome predefinito ApplicationPage1.aspx.
Aggiungere un elemento del progetto File di risorse al progetto Web part. Utilizzare il nome predefinito Resource1.resx. Il modello dell'elemento del progetto File di risorse si trova nella cartella dei modelli di elementi di progetto delle lingue nella finestra di dialogo Aggiungi nuovo elemento.
Il file di risorse verrà aperto nell'Editor risorse.
Nell'Editor risorse immettere gli IDs stringa e i valori seguenti:
ID stringa
Valore
Stringa1
Path to Employee Data File
Stringa2
Location of the XML file that contains employee data
Stringa3
Show Managers Only
Stringa4
Shows only employees that are managers
Stringa5
Show All Employees
Stringa6
Employee List
Stringa7
Display Employee List
Stringa8
Pagina Applicazione
Stringa9
Descrizione Pagina applicazione personale
Effettuare una copia di Resource1.resx facendo clic sul relativo nodo in Esplora soluzioni e scegliendo Copia dal menu Modifica.
Fare clic sul nodo della Web part in Esplora soluzioni, quindi scegliere Incolla dal menu Modifica.
Fare clic con il pulsante destro del mouse sul file copiato, quindi scegliere Rinomina. Assegnare il nome Resource1.ja-JP.resx al file.
Questo file è il file di risorse localizzate in giapponese che verrà successivamente compilato in un assembly satellite e distribuito in SharePoint.
Aprire Resource1.ja-JP.resx nell'Editor risorse e aggiungere la parola JAPANESE davanti a ogni valore.
La stringa "Path to Employee Data File" diventa ad esempio "JAPANESE Path to Employee Data File". In uno scenario localizzato reale queste stringhe conterrebbero caratteri giapponesi.
Modificare la proprietà Tipo distribuzione di Resource1.resx e Resource1.ja-JP.resx in AppGlobalResource.
In questo modo i file verranno distribuiti nella cartella App_GlobalResources sul server e le risorse risulteranno disponibili per tutti i progetti basati su ASP.NET.
Nota
La proprietà Tipo distribuzione viene visualizzata solo per i file di risorse aggiunti agli elementi di progetto SharePoint.
Fare doppio clic su Package.package per aprirlo in Progettazione pacchetti.
Fare clic sul pulsante Avanzate, quindi sul pulsante Aggiungi e infine su Aggiungi assembly esistente.
Verrà visualizzata la finestra di dialogo Aggiungi assembly esistente.
Compilare il progetto in modo da creare le DLL satellite localizzate.
Nella finestra di dialogo Aggiungi assembly esistente fare clic sul pulsante con i puntini di sospensione () accanto a Percorso origine e individuare la DLL satellite localizzata.
Il file di assembly si trova nella directory del progetto nel percorso... \bin\debug\ja-JP.
Lasciare l'opzione Destinazione distribuzione impostata su GlobalAssemblyCache.
Nella casella Percorso anteporre una cartella con l'ID delle impostazioni cultura al percorso. Per questo esempio, impostare il valore esistente su jp-JA\nome Web part.resources.dll. Se il progetto include più DLL satellite, ripetere questo passaggio per ogni DLL.
Questa operazione è necessaria perché in un pacchetto non è possibile avere due file con un nome identico all'interno della stessa cartella. La creazione di una sottocartella basata sull'ID delle impostazioni cultura consente l'inserimento di entrambi i file nello stesso pacchetto.
Al termine, scegliere OK per chiudere la finestra di dialogo.
Aprire la tabella codici per la web part e sostituire le istruzioni Using o Includes esistenti con quanto riportato di seguito.
using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls; using System; using System.ComponentModel; using System.Data; using System.Resources; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts;
Sostituire le funzioni e le dichiarazioni di variabili esistenti con quanto riportato di seguito.
private DataGrid grid; // Replaced: private static string verbText = "Show Managers Only"; private static string verbText = HttpContext.GetGlobalResourceObject("Resource1", "String3").ToString(); private Label errorMessage = new Label(); protected string xmlFilePath; // Replaced: WedDisplayName and WebDescription attribute strings. [Personalizable(PersonalizationScope.Shared), WebBrowsable(true), LocalizedWebDisplayName("String1"), LocalizedWebDescription("String2")] public string DataFilePath { get { return xmlFilePath; } set { xmlFilePath = value; } } protected override void CreateChildControls() { // Define the grid control that displays employee data in the Web Part. grid = new DataGrid(); grid.Width = Unit.Percentage(100); grid.GridLines = GridLines.Horizontal; grid.HeaderStyle.CssClass = "ms-vh2"; grid.CellPadding = 2; grid.BorderWidth = Unit.Pixel(5); grid.HeaderStyle.Font.Bold = true; grid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center; // Populate the grid control with data in the employee data file. try { DataSet dataset = new DataSet(); dataset.ReadXml(xmlFilePath, XmlReadMode.InferSchema); grid.DataSource = dataset; grid.DataBind(); } catch (Exception x) { errorMessage.Text += x.Message; } // Add control to the controls collection of the Web Part. Controls.Add(grid); Controls.Add(errorMessage); base.CreateChildControls(); } public override WebPartVerbCollection Verbs { get { WebPartVerb customVerb = new WebPartVerb("Manager_Filter_Verb", new WebPartEventHandler(CustomVerbEventHandler)); customVerb.Text = verbText; // Replaced: Hard-coded description with localized string. customVerb.Description = HttpContext.GetGlobalResourceObject("Resource1", "String4").ToString(); WebPartVerb[] newVerbs = new WebPartVerb[] { customVerb }; return new WebPartVerbCollection(base.Verbs, newVerbs); } } protected void CustomVerbEventHandler(object sender, WebPartEventArgs args) { int titleColumn = 2; foreach (DataGridItem item in grid.Items) { if (item.Cells[titleColumn].Text != "Manager") { if (item.Visible == true) { item.Visible = false; } else { item.Visible = true; } } } // if (verbText == "Show Managers Only") if (verbText == HttpContext.GetGlobalResourceObject("Resource1", "String5").ToString()) { // verbText = "Show All Employees"; verbText = HttpContext.GetGlobalResourceObject("Resource1", "String5").ToString(); } else { // verbText = "Show Managers Only"; verbText = HttpContext.GetGlobalResourceObject("Resource1", "String3").ToString(); } }
Aggiungere le nuove funzioni seguenti.
// Provide localized values for the WebDisplayName and WebDescription // attribute strings. public class LocalizedWebDisplayName : WebDisplayNameAttribute { public LocalizedWebDisplayName(string resId) { base.DisplayNameValue = FetchLocalizedString(resId); } string FetchLocalizedString(string resourceID) { // Use the ResourceManager to get the string from // the resource file. ResourceManager rm = Resource1.ResourceManager; return rm.GetString(resourceID); } } public class LocalizedWebDescription : WebDescriptionAttribute { public LocalizedWebDescription(string resId) { base.DescriptionValue = FetchLocalizedString(resId); } string FetchLocalizedString(string resourceID) { // Use the ResourceManager to get the string from // the resource file. ResourceManager rm = Resource1.ResourceManager; return rm.GetString(resourceID); } }
Premere F5 per compilare ed eseguire la soluzione.
In SharePoint fare clic su Altre opzioni nella scheda Azioni sito per visualizzare la finestra di dialogo Crea.
Nella finestra di dialogo Crea fare clic su Pagina nella sezione Filtra per, selezionare Pagina web part nel riquadro degli elementi installati, quindi fare clic sul pulsante Crea.
Nella finestra di dialogo Nuova pagina web part immettere un valore nella casella Nome, quindi fare clic sul pulsante Crea.
Nella pagina della Web part fare clic su una Web part per visualizzare la barra degli strumenti.
Fare clic sulla cartella Personalizza nella sezione Categorie, selezionare la Web part nella sezione Web part, quindi fare clic sul pulsante Aggiungi.
Fare clic sul pulsante a discesa per la Web part, quindi su Modifica web part per visualizzare la finestra di dialogo delle proprietà della Web part.
Espandere la sezione Varie, immettere il percorso del file data.xml, fare clic su Applica, quindi scegliere OK.
Dopo aver visualizzato la griglia dei dati, fare di nuovo clic sul pulsante a discesa per la Web part e osservare che il verbo personalizzato viene visualizzato nella lingua predefinita.
Nell'angolo superiore della pagina della Web part fare clic sulla freccia a discesa accanto al proprio nome. Se il Language Pack viene installato correttamente, si noterà un comando denominato Seleziona lingua di visualizzazione. Posizionarvi sopra il puntatore, quindi scegliere Giapponese dal menu di scelta rapida. Se è stato installato un Language Pack differente, ne verrà visualizzata la lingua in questa posizione.
Il testo della pagina verrà visualizzato nella lingua selezionata.
Fare clic sul pulsante a discesa per la Web part, quindi su Modifica web part per visualizzare la finestra di dialogo delle proprietà della Web part.
Espandere la sezione Varie e osservare che tutte le stringhe visibili nell'applicazione vengono visualizzate nella lingua localizzata. L'etichetta della casella delle proprietà personalizzate, la descrizione comandi per il controllo e il verbo vengono tutti visualizzati nella lingua localizzata.
Ripristinare la lingua predefinita e chiudere la pagina di SharePoint.
Localizzazione del markup ASPX
È possibile localizzare il markup nelle pagine e nei controlli ASPX utilizzando i file di risorse.
Per localizzare il markup ASPX
Fare doppio clic sulla pagina dell'applicazione per visualizzarne il markup.
Aggiungere un controllo etichetta e pulsante alla pagina dell'applicazione sostituendo la sezione PlaceHolderMain esistente con il codice seguente:
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server"> <asp:Label ID="lbl" runat="server" Font-Size="Large" Text="<%$Resources:Resource1,String6%>"></asp:Label> <br /> <br /> <asp:Button ID="btn1" runat="server" onclick="btn1_Click" Text="<%$Resources:Resource1,String7%>"></asp:Button> </asp:Content>
Le stringhe hardcoded vengono sostituite con l'espressione nel formato <%$Resources:Nome file di risorse, ID stringa di risorsa%>. Queste espressioni visualizzano le stringhe di risorsa localizzate basate sulla lingua corrente.
Sostituire le sezioni PageTitle e PageTitleInTitleArea con il codice seguente:
<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server"> <asp:Literal ID="Literal1" runat="server" Text="<%$Resources:Resource1, String8%>" /> </asp:Content> <asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" > <asp:Literal ID="Literal2" runat="server" Text="<%$Resources:Resource1, String9%>" /> </asp:Content>
Le stringhe hardcoded vengono sostituite con l'espressione nel formato <asp:literal ID="Literal1" runat="server" Text="<%$Resources:Nome file di risorse, ID stringa%>" />. Queste espressioni visualizzano le stringhe di risorsa localizzate basate sulla lingua corrente.
Selezionare la pagina dell'applicazione in Esplora soluzioni, quindi scegliere Codice dal menu Visualizza per visualizzare il code-behind della pagina dell'applicazione.
Aggiungere il codice riportato di seguito.
protected void btn1_Click(object sender, EventArgs e) { Response.Redirect("http://MyServer/MyPage.aspx", false); }
Premere F5 per compilare ed eseguire la soluzione.
La pagina dell'applicazione verrà visualizzata con stringhe di risorsa predefinite.
Nell'angolo superiore della pagina dell'applicazione fare clic sulla freccia a discesa accanto al proprio nome e selezionare la lingua localizzata.
Il testo della pagina verrà visualizzato con stringhe di risorsa localizzate.
Fare clic sul pulsante Display Employee List per visualizzare la pagina della Web part.
Ripristinare la lingua predefinita e chiudere la pagina di SharePoint.
Localizzazione di funzionalità
In SharePoint le funzionalità presentano un nome e una descrizione. È possibile localizzare queste stringhe utilizzando file di risorse delle funzionalità. Tali file di risorse sono separati dagli altri file di risorse nell'applicazione.
Per localizzare una funzionalità
Fare clic con il pulsante destro del mouse sul nodo Funzionalità1 in Esplora soluzioni e scegliere Aggiungi risorsa funzionalità.
Nella finestra di dialogo Aggiungi risorsa selezionare le impostazioni cultura predefinite, Lingua inglese (non associata ad alcun paese).
Verrà aggiunto un file denominato Resources.resx alla funzionalità che funge da risorsa della funzionalità predefinita. Il file di risorse verrà aperto nell'Editor risorse.
Nell'Editor risorse immettere gli ID stringa e i valori seguenti:
ID stringa
Valore
Stringa1
My Feature Title
Stringa2
My feature description
Aggiungere un altro file di risorse della funzionalità, ma selezionare impostazioni cultura differenti, ad esempio Giapponese (Giappone).
Verrà aggiunto un file denominato Resources.ja-JP.rex alla funzionalità. Poiché le risorse della funzionalità richiedono un identificatore delle impostazioni cultura completo nel nome, selezionare nell'elenco l'ID delle impostazioni cultura che specifica le impostazioni cultura complete. Selezionare, ad esempio, Giapponese (Giappone) anziché Giapponese.
Modificare i valori stringa nel file di risorse localizzato con valori diversi da quelli presenti nel file di risorse della funzionalità predefinito.
Fare doppio clic sul file Funzionalità1.feature per aprirlo in Progettazione funzionalità.
Sostituire il testo nella casella Title con $Resources:String1.
Sostituire il testo nella casella Description con $Resources:String2.
Premere F5 per compilare ed eseguire la soluzione.
Nella pagina di SharePoint fare clic su Impostazioni sito nella scheda Azioni sito.
Fare clic sul collegamento Caratteristiche raccolta siti in Amministrazione raccolta siti.
Nell'angolo superiore della pagina Amministrazione raccolta siti fare clic sulla freccia a discesa accanto al proprio nome e selezionare la lingua localizzata. Il titolo e la descrizione della funzionalità verranno visualizzati con stringhe di risorsa localizzate.
Ripristinare la lingua predefinita e chiudere la pagina di SharePoint.
Vedere anche
Attività
Procedura: aggiungere un file di risorse
Altre risorse
Procedura: localizzare una funzionalità