Tutorial: Localizar una aplicación de Visual Studio SharePoint
Cuando se localiza una aplicación de SharePoint, se reemplazan sus cadenas codificadas de forma rígida por las expresiones e instrucciones que recuperan los valores de cadena localizados de los archivos de recursos. En este tutorial se muestra cómo se localizan todos los elementos de cadena de una aplicación de página web de SharePoint.
En este tutorial se muestran las siguientes tareas:
Localizar el código
Localizar el marcado ASPX
Localizar una característica
Requisitos previos
Necesitará los componentes siguientes en el equipo de desarrollo para completar este tutorial:
Ediciones compatibles de Microsoft Windows, SharePoint y Visual Studio. Para obtener más información, vea Requisitos para desarrollar soluciones de SharePoint.
El paquete de idioma de SharePoint 2010 del lenguaje que desea admitir. Los paquetes de idioma habilitan otros lenguajes en SharePoint. Para obtener más información, vea Paquetes de idioma para SharePoint Foundation 2010 o Paquetes de idioma de 2010 Server para SharePoint Server 2010, Project Server 2010, Search Server 2010 y Office Web Apps 2010.
El proyecto completado en el tema Tutorial: Crear un elemento web para SharePoint.
El conocimiento de los siguientes conceptos es útil, aunque no necesario, para completar el tutorial.
Cómo globalizar y localizar aplicaciones de Visual Studio. Para obtener más información, vea Globalizing and Localizing Applications.
Cómo globalizar y localizar aplicaciones de ASP.NET. Para obtener más información, vea ASP.NET Globalization and Localization.
Cómo globalizar y adaptar soluciones de SharePoint. Para obtener más información, vea Localizing a Solution.
Localizar el código de SharePoint
A menudo, el código de las aplicaciones de SharePoint contiene cadenas codificadas de forma rígida en el texto de la UI. Estas cadenas pueden localizarse y reemplazarse por llamadas a GetGlobalResourceObject. Inicie el tutorial modificando un proyecto de elementos web.
Para modificar el proyecto de elementos web
Complete los procedimientos descritos en el tema Tutorial: Crear un elemento web para SharePoint.
Una vez que el proyecto de elementos web esté cargado en Visual Studio, agregue un elemento de proyecto Página de aplicación al proyecto de elementos web. Use el nombre predeterminado, ApplicationPage1.aspx.
Agregue un elemento de proyecto Archivo de recursos al proyecto de elementos web. Use el nombre predeterminado, Resource1.resx. La plantilla del elemento de proyecto del archivo de recursos se encuentra en el cuadro de diálogo Agregar nuevo elemento, en la carpeta de plantillas de elementos de proyecto del idioma.
El archivo de recursos se abrirá en el Editor de recursos.
En el Editor de recursos, especifique el IDs de cadena y los valores siguientes:
Identificador de cadena
Valor
String1
Ruta de acceso al archivo de datos del empleado
String2
Ubicación del archivo XML que contiene los datos del empleado
String3
Muestra solo a los administradores
String4
Muestra solo a los empleados que son administradores
String5
Muestra a todos los empleados
String6
Lista de empleados
String7
Muestra la lista de empleados
String8
Página Aplicación
String9
Descripción de mi página de aplicación
Para copiar Resource1.resx, en el Explorador de soluciones, haga clic en su nodo y, a continuación, haga clic en Copiar, en el menú Edición.
Haga clic en el nodo de elemento web del Explorador de soluciones y, a continuación, haga clic en Pegar, en el menú Edición.
Haga clic con el botón secundario en el archivo copiado y, a continuación, haga clic en Cambiar nombre. Llame al archivo Resource1.ja-JP.resx.
Este archivo actúa como el archivo de recursos localizado al japonés que se compila posteriormente en un ensamblado satélite y se implementa en SharePoint.
Abra Resource1.ja-JP.resx en el Editor de recursos y anexe la palabra JAPONÉS delante de cada valor.
Por ejemplo, "Ruta de acceso al archivo de datos del empleado" pasaría a ser "JAPONÉS Ruta de acceso al archivo de datos del empleado". En un escenario localizado real, estas cadenas usarían caracteres japoneses.
Cambie la propiedad Deployment Type de Resource1.resx y Resource1.ja-JP.resx a AppGlobalResource.
Esto hace que los archivos se implementen en la carpeta App_GlobalResources del servidor y que los recursos estén disponibles para todos los proyectos basados en ASP.NET.
Nota
La propiedad Tipo de implementación solo aparece para los archivos de recursos agregados a los elementos de proyecto de SharePoint.
Haga doble clic en Package.package para abrirlo en el Diseñador de paquetes.
Haga clic en el botón Opciones avanzadas, haga clic en el botón Agregar y, a continuación, haga clic en Agregar ensamblado existente.
De este modo, abrirá el cuadro de diálogo Agregar ensamblado existente.
Compile el proyecto para crear los archivos DLL satélite localizados.
En el cuadro de diálogo Agregar ensamblado existente, haga clic en el botón de puntos suspensivos () situado junto a Ruta de acceso de origen y busque el archivo DLL satélite localizado.
El archivo de ensamblado se encuentra en el directorio del proyecto, bajo \bin\debug\ja-JP.
Deje la opción Destino de la implementación como GlobalAssemblyCache.
En el cuadro Ubicación, especifique delante de la ruta de acceso de la ubicación una carpeta con el ID de referencia cultural. En este ejemplo, cambie el valor existente a jp-JA\nombre de elemento web.resources.dll. Si el proyecto tiene varios archivos DLL satélite, repita este paso con cada archivo DLL.
Este paso es necesario porque los paquetes no permiten que haya dos archivos con idéntico nombre en la misma carpeta. Al crear una subcarpeta basada en el identificador de referencia cultural, los dos archivos se pueden empaquetar juntos.
Cuando termine, haga clic en Aceptar para cerrar el cuadro de diálogo.
Abra la página de códigos para el elemento web y reemplace las instrucciones Includes o Using existentes con la siguiente.
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;
Reemplace las declaraciones de variable y funciones existentes con la siguiente.
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(); } }
Agregue las nuevas funciones siguientes.
// 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); } }
Presione F5 para compilar y ejecutar la solución.
En SharePoint, en la pestaña Acciones del sitio, haga clic en Más opciones para mostrar el cuadro de diálogo Crear.
En el cuadro de diálogo Crear, en la sección Filtrar por, haga clic en Página, haga clic en Página de elementos Web en el recuadro de elementos instalados y, a continuación, haga clic en el botón Crear.
En el cuadro de diálogo Nueva página de elemento Web, especifique un valor en el cuadro Nombre y, a continuación, haga clic en el botón Crear.
En la página de elementos web, haga clic en un elemento web para mostrar la barra de herramientas.
Haga clic en la carpeta Personalizar de la sección Categorías, seleccione el elemento web en la sección Elementos web y, a continuación, haga clic en el botón Agregar.
Haga clic en el botón de lista desplegable del elemento web y, a continuación, haga clic en Editar elemento web para mostrar el cuadro de diálogo de las propiedades del elemento web.
Expanda la sección Diversos, escriba la ruta de acceso del archivo data.xml, haga clic en Aplicar y, a continuación, haga clic en Aceptar.
Cuando aparezca la cuadrícula de datos, haga clic de nuevo en el botón de lista desplegable del elemento web y observe que el verbo personalizado aparece en el idioma predeterminado.
En la esquina superior de la página del elemento web, haga clic en la flecha de lista desplegable situada junto a su nombre. Si el paquete de idioma está instalado correctamente, habrá un comando denominado Seleccionar idioma de presentación. Señálelo y, a continuación, en el menú contextual, haga clic en Japonés. (Si instaló un paquete de idioma diferente, aparecerá aquí esa opción de idioma).
El texto de la página se muestra en el idioma seleccionado.
Haga clic en el botón de lista desplegable del elemento web y, a continuación, haga clic en Editar elemento web para mostrar el cuadro de diálogo de las propiedades del elemento web.
Expanda la sección Diversos y observe cómo todas las cadenas visibles de la aplicación aparecen en el idioma localizado. La etiqueta del cuadro de propiedades personalizadas, la información sobre herramientas del control y el verbo están en el lenguaje localizado.
Vuelva a cambiar el idioma al predeterminado y cierre la página de SharePoint.
Localizar el marcado ASPX
Puede localizar el marcado de los controles y páginas ASPX a través de los archivos de recursos.
Para localizar el marcado ASPX
Haga doble clic en la página de aplicación para ver su marcado.
Agregue una etiqueta y un control de botón a la página de aplicación; para ello, reemplace la sección PlaceHolderMain existente por la siguiente:
<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>
Las cadenas codificadas de forma rígida se reemplazan por una expresión con el formato <%$Resources:nombre de archivo de recursos, identificador de cadena de recursos %>. Estas expresiones muestran las cadenas de recursos localizadas en función del idioma actual.
Reemplace las secciones PageTitle y PageTitleInTitleArea por el código siguiente:
<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>
Las cadenas codificadas de forma rígida se reemplazan por una expresión con el formato <asp:literal ID="Literal1" runat="server" Text="<%$Resources:nombre de archivo de recursos, identificador de cadena%>" />. Estas expresiones muestran las cadenas de recursos localizadas en función del idioma actual.
Seleccione la página de aplicación en el Explorador de soluciones y, a continuación, en el menú Ver, haga clic en Código para mostrar el código subyacente de la página de aplicación.
Agregue el código siguiente:
protected void btn1_Click(object sender, EventArgs e) { Response.Redirect("http://MyServer/MyPage.aspx", false); }
Presione F5 para compilar y ejecutar la solución.
La página de aplicación aparece con las cadenas de recursos predeterminadas.
En la esquina superior de la página de aplicación, haga clic en la flecha de lista desplegable situada junto a su nombre y seleccione el idioma localizado.
El texto de la página aparece con las cadenas de recursos localizadas.
Haga clic en el botón Mostrar lista de empleados para mostrar la página de elementos web.
Vuelva a cambiar el idioma al predeterminado y cierre la página de SharePoint.
Localizar las características
Las características tienen un nombre y una descripción que aparecen en SharePoint. Puede adaptar estas cadenas utilizando los archivos de recursos de características. Estos archivos de recursos son independientes de otros archivos de recursos de la aplicación.
Para localizar una característica
Haga clic con el botón secundario en el nodo Feature1 del Explorador de soluciones y, a continuación, haga clic en Agregar recurso de características.
En el cuadro de diálogo Agregar recurso, seleccione la referencia cultural predeterminada Todos los idiomas (todos los países).
De este modo, se agregará un archivo denominado Resources.resx a la característica que actuará como recurso de características predeterminado. El archivo de recursos se abrirá en el Editor de recursos.
En el Editor de recursos, especifique los siguientes identificadores de cadena y sus valores:
Identificador de cadena
Valor
String1
Título de mi característica
String2
Descripción de mi característica
Agregue otro archivo de recursos de características, pero seleccione una referencia cultural diferente, por ejemplo japonés (Japón).
De este modo, se agregará un archivo denominado Resources.ja-JP.rex a la característica. Dado que los recursos de características necesitan que en su nombre aparezca un identificador de referencia cultural completo, seleccione el ID de referencia cultural de la lista que especifique la referencia cultural completa. Por ejemplo, seleccione Japonés (Japón) en lugar de japonés.
Cambie los valores de cadena del archivo de recursos localizado por otros valores diferentes a los del archivo de recursos de características predeterminado.
Haga doble clic en el archivo Feature1.feature para abrirlo en el Diseñador de características.
Reemplace el texto del cuadro Título por $Resources:String1.
Sustituya el texto del cuadro Descripción por $Resources:String2.
Presione F5 para compilar y ejecutar la solución.
En la página de SharePoint, en la pestaña Acciones del sitio, haga clic en Configuración del sitio.
Haga clic en el vínculo Características de la colección de sitios situado bajo Administración de la colección de sitios.
En la esquina superior de la página Administración de la colección de sitios, haga clic en la flecha de lista desplegable situada junto a su nombre y seleccione el idioma localizado. Aparece el título y la descripción de la característica con las cadenas de recursos localizadas.
Vuelva a cambiar el idioma al predeterminado y cierre la página de SharePoint.
Vea también
Tareas
Cómo: Agregar un archivo de recursos
Otros recursos
Cómo: Localizar una característica