Localizar complementos para SharePoint
Nota:
En este tema se supone que está familiarizado con la creación básica de complementos de SharePoint y con las características de SharePoint, la distinción entre webs de complemento y webs de host, los tipos de componentes de SharePoint que se pueden incluir en un complemento y los conceptos básicos de la localización con archivos .resx.
Prepararse para localizar un complemento de SharePoint
Antes de empezar, identifique lo siguiente:
Las configuraciones regionales que el complemento debe admitir. SharePoint Online y SharePoint local con los paquetes de idiomas instalados permiten a los usuarios crear sitios web para un idioma y una referencia cultural concretos. Decida qué sitios web localizados van a usar sus clientes y determine cuáles de ellos quiere que sean compatibles con una versión localizada de los componentes del complemento.
Los componentes que tiene que localizar en el complemento.
Además, tenga en cuenta lo siguiente:
En los procedimientos de este artículo se presupone que utiliza la versión más reciente de Office Developer Tools para Visual Studio 2013 u Office Developer Tools para Visual Studio 2015.
Nota:
Si el sitio web de prueba de SharePoint es una granja de SharePoint local en lugar de un sitio para desarrolladores de Microsoft SharePoint Online, es posible que tenga que instalar los paquetes de idioma correspondientes a los idiomas a los que se traduce el complemento de SharePoint. Para obtener más información, vea Instalación o desinstalación de paquetes de idioma para SharePoint 2013 y cómo descargar paquetes de idiomas para SharePoint Server 2013.
Las capturas de pantalla y los ejemplos de código de este artículo reflejan la Localización de complementos de SharePoint de ejemplo. Puede descargar el ejemplo para ver los resultados de los procedimientos descritos en este artículo.
Localizar los componentes de web de complemento
Una web de complemento puede contener determinados tipos de componentes de SP. Para obtener más información sobre los tipos de componente de SharePoint que pueden incluirse en un complemento de SharePoint, vea Tipos de componentes de SharePoint que se pueden encontrar en un complemento para SharePoint. Para localizar componentes implementados en una web de complemento, agregue archivos .resx en módulos en la misma característica que contiene el componente de web de complemento. Se hace referencia a los recursos en el marcado del componente. Más adelante en este artículo se describe cómo hacerlo. Pero, en las páginas de sitio personalizadas de un complemento de SharePoint se usan archivos de variables de cadena de JavaScript en lugar de archivos .resx.
Nota:
Los archivos de recursos no se pueden compartir entre varias características de web de complemento Para cada característica que haya en el archivo .wsp, se deben crear distintos conjuntos de archivos de recursos.
Para crear los archivos de recursos de web de complemento
Abra el proyecto de complemento de SharePoint en Visual Studio. (El ejemplo desde el que se tomaron las capturas de pantalla de este tema es un complemento hospedado por el proveedor con ASP.NET Web Forms como parte de la aplicación web remota del proyecto).
En el Explorador de soluciones, abra el menú contextual del nombre de la característica y seleccione Agregar recurso de características.
En el cuadro de diálogo Agregar recurso, seleccione Todos los idiomas (Todos los países) y luego, Aceptar. Un archivo Resources.resx se agrega a la carpeta de la característica de Explorador de soluciones, y el archivo se abre en Visual Studio Editor de recursos.
Cuando se edita, este archivo "todos los idiomas" contiene las cadenas que se usan en la galería de características en todos los sitios en idiomas para los que no va a proporcionar una versión localizada de las cadenas. Por lo tanto, el idioma que se use para las cadenas de este archivo debe ser el idioma que tenga más probabilidades de ser el segundo idioma de los usuarios de SharePoint. Normalmente, para este propósito se suele usar el inglés; pero, en algunos escenarios, puede que sea mejor usar otro idioma. Por ejemplo, en algunas regiones puede que el francés sea más habitual como segundo idioma para los usuarios que el inglés. En el ejemplo en curso en este tema se usa el inglés como opción "todos los idiomas".
Nota:
No se puede instalar un complemento de SharePoint en un sitio web cuyo idioma no figure en la sección Configuraciones regionales admitidas del manifiesto del complemento. Recuerde que, cuando en este artículo se habla de los idiomas en los que no va a proporcionar un complemento localizado, todavía tiene que incluir esos idiomas en el manifiesto del complemento. Para obtener más información sobre las configuraciones regionales admitidas en el manifiesto del complemento, vea el procedimiento Para crear los archivos de recursos de la web de host más adelante en este artículo.
En la columna Nombre de la fila superior del Editor de recursos, escriba un nombre descriptivo para la cadena (u otro recurso); por ejemplo,
OrdersListInstance_Title
yOrdersListInstance_Description
). Estos nombres de recursos localizables no están localizados. Cada recurso debe tener su propio nombre.En la columna Valor, escriba una cadena adecuada (o dirección URL u otro recurso) para todos los idiomas (por ejemplo,
Orders
) y una lista donde registrar los pedidos).Agregue pares adicionales de nombre y valor para todas las cadenas y recursos que se tienen que localizar para su uso en cualquier componente de la característica.
Guarde el archivo.
Agregue otro archivo de recursos a la característica, tal y como hizo anteriormente, pero seleccione un idioma concreto en lugar de Todos los idiomas (todos los países) Por ejemplo, puede elegir Español (España). Un objeto Resources. El archivo LL-CC.resx (donde
LL
yCC
son códigos de lenguaje y referencia cultural compatibles con el Grupo de tareas de ingeniería de Internet (IETF) se agrega a la carpeta de la característica en Explorador de soluciones y el archivo se abre en el Editor de recursos de Visual Studio.Con el Editor de recursos, copie todas las filas de Resources.resx y péguelas en el nuevo archivo Resources.LL-CC.resx. (Si la opción Copiar no está habilitada en el menú contextual del editor de recursos, use Ctrl+C para copiar las filas en el Portapapeles).
En el archivo Resources.LL-CC.resx, reemplace las celdas Value por las versiones traducidas de los valores de cadena. En el caso de las direcciones URL y otros recursos que no sean de cadena, reemplace el valor por un nuevo valor que sea adecuado para el idioma y la referencia cultural.
Guarde el nuevo archivo.
Repita los últimos cuatro pasos para cada idioma extranjero.
Nota:
Considere agregar un archivo específico del idioma para el idioma seleccionado como "todos los idiomas". En tal caso, puede copiar las filas sin cambiar los valores de las cadenas. En muchas situaciones, no es necesario disponer de un archivo específico del idioma para el mismo idioma que se usa en el archivo de recursos de todos los idiomas, especialmente cuando los únicos recursos de los archivos son cadenas. Pero los archivos de recursos también pueden contener imágenes, iconos, archivos y otros tipos de recursos. A veces, necesita el archivo de recursos de todos los idiomas para usar una imagen u otro recurso distinto del recurso correspondiente en cualquiera de los archivos específicos del idioma.
Para cada archivo, compruebe que la propiedad Acción de compilación se establece en Contenido.
Para llamar a los recursos localizados en listas personalizadas
Para localizar las propiedades de título y descripción de una lista personalizada, abra el archivo Elements.xml de la instancia de la lista. Por ejemplo, en el Explorador de soluciones del ejemplo que se incluye en este tema, vaya a BookstoreApp>Estado del pedido>OrderStatusInstance>Elements.xml.
En el atributo Title, escriba $Resources:nombreDeCadena, donde nombreDeCadena corresponde al nombre, no al valor, que asignó en el procedimiento anterior a la cadena que determina el nombre de la lista personalizada; por ejemplo, $Resources:OrdersListInstance_Title. Tenga en cuenta que, al contrario de lo que ocurre en algunos contextos en los que se usan archivos .resx, el nombre del archivo de recursos no forma parte de lo que se especifica.
Use el atributo Description para llamar al recurso de cadena de la descripción de lista del mismo modo; por ejemplo, $Resources:OrdersListInstance_Description. Este es el marcado que usa las cadenas localizadas en el archivo Elements.xml de la instancia de una lista.
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <ListInstance Title="$Resources:OrdersListInstance_Title" OnQuickLaunch="TRUE" TemplateType="10000" Url="Lists/Orders" Description="$Resources:OrdersListInstance_Description"> </ListInstance> </Elements>
En la siguiente imagen se muestra la lista personalizada localizada en inglés.
Lista personalizada localizada
Para localizar los nombres de columna de una lista personalizada
No se pueden localizar los nombres de columna de la lista personalizada de la misma manera que se localizan el título y la descripción. Para localizar los nombres de columna, tiene que declarar los campos de la lista en un archivo Elements.xml y luego establecer el valor del atributo DisplayName con referencias en los archivos de recursos de web de complemento. Para empezar, abra el archivo Schema.xml de la lista personalizada. Busque el nodo Fields y copie todos sus nodos Field.
Abra el archivo Elements.xml de la lista personalizada. Asegúrese de que abre el archivo Elements.xml de la definición de lista y no de la instancia de la lista. Pegue los nodos del paso anterior como elementos secundarios del nodo Elements.
Por cada nodo Field, escriba un valor de $Resources:nombreDeCadena en el atributo DisplayName, donde nombreDeCadena corresponde al nombre de una entrada del archivo de recursos de web de complemento.
En el archivo Schema.xml de la lista personalizada, quite el atributo DisplayName de todos los nodos Field copiados anteriormente. A continuación se muestra un marcado de ejemplo en el que se usan las cadenas localizadas en el archivo Elements.xml de la definición de lista.
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <ListTemplate Name="Orders" Type="10000" BaseType="0" OnQuickLaunch="TRUE" SecurityBits="11" Sequence="410" DisplayName="Orders" Description="My List Definition" Image="/_layouts/15/images/itgen.png"/> <Field Name="Bookname" ID="{2ef60a05-29b6-41db-9611-c0cf7d8e73c5}" DisplayName="$Resources:OrdersListColumn_Bookname" Type="Text" Required="TRUE" /> <Field Name="Price" ID="{7af42815-d69e-426a-a1c8-9da5610e362c}" DisplayName="$Resources:OrdersListColumn_Price" Type="Currency" Required="FALSE" /> <Field Name="Orderstatus" ID="{687ee751-2e0a-4099-966e-d2c225d48234}" DisplayName="$Resources:OrdersListColumn_Orderstatus" Type="Lookup" Required="FALSE" List="Lists/Order status" ShowField="Title" /> </Elements>
Para crear archivos de recursos de JavaScript para páginas personalizadas
En las páginas de sitio personalizadas de un complemento de SharePoint se usan archivos de variables de cadena de JavaScript en lugar de archivos .resx.
Para empezar, en el Explorador de soluciones, agregue una carpeta de nombre Scripts al proyecto de complemento para SharePoint (no al proyecto de aplicación web) si no lo hay ya. Haga clic con el botón derecho en la carpeta Scripts y seleccione Agregar>Nuevo elemento>Web>Archivo JavaScript. Asigne el nombre al archivo Resources.LL-CC.js (donde
LL
es un código de idioma yCC
es un código de país/región o referencia cultural); por ejemplo, Resources.en-US.js.Repita el paso anterior para cada idioma extranjero. Ahora debería tener archivos JavaScript vacíos para cada idioma. No cree un archivo de idioma de todos los idiomas denominado "Resources.js". El motivo para no hacerlo se explica en un procedimiento posterior.
Abra el primero de los nuevos archivos de JavaScript.
Para cada una de las cadenas localizables en cada una de las páginas personalizadas, declare una variable en el archivo con un nombre que identifique la finalidad de la cadena y asígnele el valor correspondiente al idioma. Este es el contenido del archivo Resources.en-US.js.
var instructionstitle = "Instructions:"; var step01 = "Go to any document library in the host web."; var step02 = "Go to the Library tab."; var step03 = "Click \"Request a book\" in the Settings group."; var step04 = "Click the contextual menu in any document."; var step05 = "Click \"Buy this book\" in the contextual menu."; var step06 = "Go to any SharePoint page in the host web and add the" + " Bookstore orders add-in part."; var step07 = "Review the localized <a href=\"../Lists/Orders\">Orders</a>" + " and <a href=\"../Lists/Order status\">Order status</a> custom lists.";
Copie el contenido del archivo en cada uno de los archivos restantes de JavaScript y luego guarde todos los archivos.
En cada uno de los archivos, sustituya el valor de cada variable por un nuevo valor que se corresponda con el idioma del archivo. No cambie los nombres de las variables.
Para llamar a las variables localizadas en las páginas ASPX personalizadas
En el Explorador de soluciones, abra un archivo de página ASPX personalizada.
Asegúrese de que solo se carga uno de los archivos de JavaScript localizados cuando se carga la página, que debe ser el adecuado para el idioma de la web de complemento de SharePoint. Para ello, agregue el marcado siguiente al elemento asp:content de la página que tiene un atributo
ContentPlaceholderId
con el valorPlaceholderAdditionalPageHead
. No hay marcadores de posición en el marcado siguiente. Escriba el marcado exactamente como aparece aquí.<script type="text/javascript" src="../scripts/Resources.<SharePoint:EncodedLiteral runat='server' text='<%$Resources:wss,language_value%>' EncodeMethod='HtmlEncode' />.js"></script>
Este marcado carga uno de los archivos JavaScript. Determina el archivo de idioma que se carga leyendo el recurso de SharePoint denominado
language_value
. Este recurso se resuelve en un nombre de idioma-referencia cultural según el patrón LL-CC descrito en un procedimiento anterior. En concreto, se resuelve en el idioma de la web de complemento.Nota:
El recurso
language_value
de SharePoint nunca es null, por lo que este script no llamaría nunca un archivo de nombre "Resources.js". Esta es la razón por la que no se ha creado uno en el procedimiento anterior. Cuando el valor delanguage_value
es un idioma para el que no existe archivo .js, el script no carga nada. En el siguiente paso se explica cómo las cadenas obtienen un valor para todos los idiomas en una situación así.Asigne a cada valor de elemento y atributo localizable en la página un valor predeterminado en todos los idiomas, pero use JavaScript para asignar la variable adecuada del archivo Resources.LL-CC.js. Por ejemplo, si la página tiene un título en un elemento h2, asigne al elemento un atributo id e inserte un elemento script debajo de los elementos localizados para asignar cadenas localizadas a la propiedad innerText de los elementos localizados. Este código de localización solo tiene que ejecutarse si las variables están cargadas y declaradas en un archivo Resources.LL-CC.js. Por lo tanto, colóquelo en un bloque condicional que compruebe primero si se definió una de las variables. Si no es así, quiere decir que no se cargó ningún script de recursos y los valores predeterminados (invariables) tendrán que permanecer sin cambios. A continuación se muestra un ejemplo.
Sugerencia
Se ha agregado la palabra "INVARIANT" a la primera de las cadenas invariables. Esto no debe realizarse en un complemento de producción, pero, en el transcurso de las pruebas, es una forma muy práctica de saber de un vistazo si se están usando cadenas de todos los idiomas o si se ha cargado el archivo Resources.LL-CC.js del idioma que sea su opción en "todos los idiomas".
<h2 id="instructionsheading">INVARIANT Instructions</h2>
<ol>
<li id="step01">Go to any document library in the host web.</li>
<li id="step02">Go to the Library tab.</li>
<li id="step03">Click "Request a book" in the Settings group.</li>
<li id="step04">Click the contextual menu in any document.</li>
<li id="step05">Click "Buy this book" in the contextual menu.</li>
<li id="step06">Go to any SharePoint page in the host web and add the Bookstore orders add-in part.</li>
<li id="step07">Review the localized <a href="../Lists/Orders">Orders</a> and <a href="../Lists/Order status">Order status</a> custom lists.</li>
</ol>
<!-- Use the localized strings in the resource JavaScript file -->
<script type="text/javascript">
window.onload = function () {
<!-- Test whether a Resources.LL-CC.js loaded.
If none was, the invariant values remain unchanged. -->
if (typeof instructionstitle != 'undefined')
{
document.getElementById("instructionsheading").innerText = instructionstitle;
document.getElementById("step01").innerText = step01;
document.getElementById("step02").innerText = step02;
document.getElementById("step03").innerText = step03;
document.getElementById("step04").innerText = step04;
document.getElementById("step05").innerText = step05;
document.getElementById("step06").innerText = step06;
document.getElementById("step07").innerHTML = step07;
}
}
</script>
La siguiente imagen ofrece una vista previa de la versión en inglés de la página una vez finalizado el complemento.
Página web que usa cadenas localizadas de un archivo de recursos JavaScript
Localizar los componentes de web de host
Puede localizar el título del complemento, que se especifica en el archivo AppManifest.xml. Este título es lo que los usuarios ven en la página Sus complemento. La web de host de un complemento de SharePoint puede incluir también una acción personalizada, un elemento de complemento o ambos. Estos elementos se implementan en una característica de web de host. Ambos pueden tener cadenas localizables.
El método fundamental para localizar componentes de web de host es el mismo que para localizar componentes de web de complemento: se detallan los recursos localizados en un archivo .resx y se llaman desde los archivos de marcado. Sin embargo, Visual Studio no dispone de mucho soporte de herramientas para los procesos, ya que se aplica a características de web de host. Existe un proceso manual que hay que realizar y que se explicará más adelante en esta sección.
Para crear los archivos de recursos de la web de host
En el Explorador de soluciones, elija el archivo AppManifest.xml para abrir la herramienta de diseñador de manifiesto del complemento.
Abra la pestaña Configuraciones regionales admitidas.
En la primera celda en blanco de la columna Configuraciones regionales, abra la lista desplegable y elija la primera configuración local que quiera admitir. Se crean dos archivos y se agregan al proyecto de complemento de SharePoint: Resources.resx (que es el archivo de recursos de todos los idiomas) y Resources.LL-CC.resx (que contiene los recursos localizados). No cambie los nombres de estos archivos.
Repita el paso anterior por cada configuración regional que quiera que sea compatible con una versión localizada del complemento. Se creará un archivo Resources.LL-CC.resx extra por cada configuración regional.
Nota:
La propiedad Acción de compilación de cada uno de estos archivos se establece en Contenido, no en Recurso. No modifique esta configuración.
Agregue también entradas de configuración local por cada configuración local donde quiera que el complemento pueda instalarse, pero donde tenga que usarse "todos los idiomas"; dicho de otro modo, las configuraciones regionales para las que no va a proporcionar una versión localizada del complemento. Elimine los archivos .resx creados para estas configuraciones locales.
Abra el archivo Resources.resx y agregue valores y nombres de recurso al archivo tal y como lo hizo con los archivos de recursos de web de complemento. Como mínimo, debe haber un recurso para el título de complemento. La característica de web de host no se muestra en ninguna parte de la interfaz de usuario de SharePoint, por lo que no se necesitarán cadenas localizadas para el título ni la descripción de esta característica. Si la característica tiene una acción personalizada, se necesita un recurso para el atributo Title del elemento CustomAction y posiblemente otras cadenas en el marcado de acción personalizada. Si hay un elemento de complemento, se necesitan recursos para los atributos Title y Description del elemento ClientWebPart. Si el elemento de complemento tiene propiedades personalizadas, cada Propiedad tiene atributos que también hay que localizar. Se necesitará una fila en el archivo de recursos por cada uno de estos elementos.
Copie el contenido del archivo Resources.resx en cada uno de los archivos Resources.LL-CC.resx.
Localice cada recurso en cada archivo Resources.LL-CC tal y como lo hizo con los archivos de recursos de web de complemento.
Para llamar a los recursos localizados en el manifiesto del complemento y otros archivos XML
Abra el archivo AppManifest.xml y sustituya el valor del elemento Título por una llamada a la cadena de recurso apropiada. Por ejemplo, si asignó un nombre a la cadena TítulodelComplemento, el elemento Title debería tener el siguiente aspecto:
<Title>$Resources:Addin_Title;</Title>
Advertencia
El valor de Titlesolo puede contener la llamada al recurso. No puede haber más texto, símbolos ni espacios en blanco.
Para llamar a los recursos localizados en otros archivos XML (como Elements.xml para elementos de complemento y acciones personalizadas), se usa el mismo formato que el empleado en el archivo de manifiesto del complemento.
Localizar componentes remotos en un complemento de SharePoint
Si los componentes remotos están en PHP o en otros formatos distintos de Microsoft, vea la Guía de localización de la plataforma apropiada. Cuando los componentes remotos son ASP.NET, localícelos tal y como lo haría con cualquier otra aplicación ASP.NET. Para obtener más información, vea Globalización y localización en ASP.NET
Reemplace el idioma de página y de subproceso de forma que sea el mismo que el de la web de host. Esto se logra invalidando el método InitializeCulture heredado en el código subyacente de las páginas ASP.NET. Para saber cuál es el idioma de la web de host, use el parámetro de consulta SPLanguage que SharePoint transmite a la página remota. En el siguiente código se indica cómo hacerlo en ASP.NET. En una aplicación web PHP o cualquier otra plataforma, el procedimiento debería ser similar.
protected override void InitializeCulture()
{
if (Request.QueryString["SPLanguage"] != null)
{
string selectedLanguage = Request.QueryString["SPLanguage"];
// Override the page language.
UICulture = selectedLanguage;
Culture = selectedLanguage;
// Reset the thread language.
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(selectedLanguage);
}
base.InitializeCulture();
}
Localizar código JavaScript remoto y el control de cromo de SharePoint
Si hay valores de cadena localizables en el código JavaScript de la aplicación web, puede localizarlos mediante archivos de recursos de JavaScript. Un ejemplo especialmente importante de código JavaScript localizable es el control de cromo de SharePoint, que puede usarse para dar a páginas remotas el aspecto de las páginas de SharePoint. Usaremos la localización del control de cromo como ejemplo de esta sección.
Nota:
En esta sección solo se aborda la localización de cadenas. Si sus necesidades de localización son mayores (por ejemplo, debe localizar formatos de fecha o de moneda), sopese la posibilidad de usar una biblioteca de localización o globalización, como el complemento Globalize para jQuery.
Para localizar el control de cromo
Con el control de cromo en funcionamiento, vuelva al método
renderChrome
donde se definen las opciones de cromo.function renderChrome() { var options = { "appIconUrl": "siteicon.png", "appTitle": "My SharePoint add-in", // Localizable string "appHelpPageUrl": "Help.html?" + document.URL.split("?")[1], "onCssLoaded": "chromeLoaded()", "settingsLinks": [ { "linkUrl": "Account.html?" + document.URL.split("?")[1], "displayName": "Account settings" // Localizable string }, { "linkUrl": "Contact.html?" + document.URL.split("?")[1], "displayName": "Contact us" // Localizable string } ] };
Como se indica en los comentarios, hay al menos tres cadenas localizables. Sustituya cada una de ellas por un nombre de variable que haya declarado en un paso anterior.
function renderChrome() { var options = { "appIconUrl": "siteicon.png", "appTitle": chromeAppTitle, // Localized value "appHelpPageUrl": "Help.html?" + document.URL.split("?")[1], "onCssLoaded": "chromeLoaded()", "settingsLinks": [ { "linkUrl": "Account.html?" + document.URL.split("?")[1], "displayName": chromeAccountLinkName // Localized value }, { "linkUrl": "Contact.html?" + document.URL.split("?")[1], "displayName": chromeContactUsLinkName // Localized value } ] };
Agregue un archivo JavaScript llamado ChromeStrings.js al proyecto de aplicación web. En él deben estar declaradas las variables que usó en el paso anterior y habérseles asignado un valor en el idioma invariable.
var chromeAppTitle = "My SharePoint add-in"; var chromeAccountLinkName = "Account settings"; var chromeContactUsLinkName = "Contact us";
Para cada idioma en el que localice el complemento, agregue otro archivo JavaScript con el nombre ChromeStrings.LL-CC.js, donde LL-CC corresponde al identificador de idioma. La base del nombre de archivo, en este caso "ChromeStrings", debe ser exactamente igual a la que utilizó para el archivo de todos los idiomas. Copie el contenido del archivo de todos los idiomas en cada uno de los archivos localizados y reemplace los valores por las versiones traducidas.
var chromeAppTitle = "Mi aplicación SharePoint"; var chromeAccountLinkName = "Preferencias"; var chromeContactUsLinkName = "Contacto";
En cualquier archivo de página donde se llame al script SP.UI.controls.js, agregue una llamada al archivo ChromeStrings.js por encima de este. Por ejemplo, si la llamada a SP.UI.controls.js está cargada como un archivo intermedio llamado ChromeLoader.js, el marcado de la página en este punto debería ser parecido al siguiente:
<Scripts> <asp:ScriptReference Path="Scripts/ChromeStrings.js" /> <asp:ScriptReference Path="Scripts/ChromeLoader.js" /> </Scripts>
Agregue un atributo ResourceUICultures al elemento ScriptReference que llama a sus cadenas. Su valor es una lista separada por comas con los idiomas que se admiten.
<Scripts> <asp:ScriptReference Path="Scripts/ChromeStrings.js" ResourceUICultures="en-US,es-ES" /> <asp:ScriptReference Path="Scripts/ChromeLoader.js" /> </Scripts>
El efecto del atributo ResourceUICultures es que ASP.NET busque un archivo llamado ChromeStrings. LL-CC.js (donde LL-CC es el idioma de la página) y lo cargue. Si no lo encuentra, cargará el archivo ChromeStrings.js.
Comprobar el complemento de SharePoint localizado
Compruebe el complemento, implementándolo en un sitio web de SharePoint que esté aprovisionado en uno de los idiomas que el complemento admita. Esta comprobación se puede realizar en un sitio web de SharePoint Online o en un sitio web local.
Para comprobar el complemento en un sitio web deSharePoint Online
Vaya al Centro de administración de Office 365.
Seleccione Configuración del servicio en el menú de navegación y luego, Sitios.
En Colecciones de sitios, seleccione Crear colección de sitios.
En Seleccionar un idioma, seleccione el idioma en el que quiera comprobar el complemento.
En Seleccionar una plantilla, seleccione Sitio para desarrolladores.
En el proyecto de complemento de SharePoint, actualice la propiedad SiteUrl con la dirección URL de la nueva colección de sitios.
Seleccione F5 para ejecutar el complemento.
Para probar el complemento en un sitio web local
Instale el paquete de idioma en el que quiere probar el complemento. Para obtener más información, vea Instalación o desinstalación de paquetes de idioma para SharePoint 2013 y cómo descargar paquetes de idiomas para SharePoint Server 2013.
Abra Administración central en la granja.
En Administración de aplicaciones, seleccione Crear colecciones de sitios.
En Seleccionar un idioma, seleccione el idioma en el que quiera comprobar el complemento.
En Seleccionar una plantilla, seleccione Sitio para desarrolladores.
En el proyecto de complemento de SharePoint, actualice SiteUrl a la dirección URL de la colección de sitios que acaba de crear.
Seleccione F5 para ejecutar el complemento.