Procedimiento para implementar soluciones de espacio aislado localizadas mediante ensamblados satélite
En este tema se explica cómo crear versiones localizadas de soluciones de espacio aislado que contengan uno o más ensamblados.
Última modificación: jueves, 14 de abril de 2011
Hace referencia a: SharePoint Foundation 2010
El proceso de implementación de soluciones de espacio aislado localizadas difiere en algunos aspectos de la implementación de soluciones de granja de servidores localizadas.
Nota
En este tema se asume que se han seguido los procedimientos descritos en Preparación para crear soluciones de SharePoint localizadas y que el inglés y el español está disponibles en el conjunto o granja de servidores de desarrollo (pero se puede sustituir un par de idiomas distinto).
El ejemplo de este tema es una solución de espacio aislado que contiene un elemento web sencillo. Sin embargo, la técnica que se describe (crear ensamblados satélite) se aplica a cualquier solución de espacio aislado que incluya uno o más ensamblados. Solo los recursos en ensamblados se localizan mediante la técnica descrita en este tema. Para obtener información acerca de cómo localizar el nombre y la descripción de una característica tal como aparece en una galería de características, vea Procedimiento para localizar atributos de características de una solución de espacio aislado.
Nota
Las cadenas en el archivo .webpart de una solución de espacio aislado se pueden localizar solo si los archivos de recursos localizados se han instalado por separado en el sistema de archivos como parte de una solución de granja de servidores. En la mayoría de las situaciones en las que se crea una solución de espacio aislado, la razón es que no se tiene permiso para instalar soluciones de granja de servidores en las granjas de servidores de destino. En tales casos, no hay ninguna manera práctica para localizar el archivo .webpart en una solución de espacio aislado. Esto significa que el nombre del elemento web en la galería de elementos web es el mismo en los sitios de todos los idiomas.
Para crear los archivos de recursos localizados
En Microsoft Visual Studio, inicie un Proyecto de SharePoint vacío. Conviértalo en un proyecto de espacio aislado. En el ejemplo de este tema, el proyecto se denomina LocalizedWebPart.
En el Explorador de soluciones, haga clic con el botón secundario en el nombre del proyecto y seleccione Propiedades.
En la ventana Propiedades, abra la ficha Recursos.
Haga clic en el vínculo Este proyecto no en medio de la ventana. Se crea un archivo Resources.resx en la carpeta Propiedades del Explorador de soluciones y el archivo se abre en el editor de recursos de Visual Studio. Una vez completado, este archivo de recursos predeterminado contendrá las cadenas que se usan en todos los sitios en idiomas para los que no se va a proporcionar una versión localizada de las cadenas. Así que el idioma utilizado para las cadenas de este archivo debe ser el idioma que más probablemente será el segundo idioma de las personas que usan SharePoint en un idioma para el que no se proporciona una traducción de las cadenas. Tradicionalmente, se usa el inglés para este fin, pero puede haber excepciones. Por ejemplo, si la característica se va a usar principalmente en países que anteriormente fueron colonias francesas, puede que el francés sea un segundo idioma más común de los usuarios que el inglés. El ejemplo de este tema usa el inglés como idioma predeterminado.
El elemento web que se incluirá en el proyecto necesita cuatro cadenas:
Texto para un botón
Texto predeterminado para una etiqueta
Texto para la etiqueta cuando se ha hecho clic en el botón un número par de veces
Texto para la etiqueta cuando se ha hecho clic en el botón un número impar de veces
Agregue cadenas con los siguientes nombres y valores al archivo de recursos.
Nombre
Valor
ButtonText
Click this button!
EvenLabelText
The button has been clicked an even number of times. Click it again.
InitialLabelText
The button has never been clicked.
OddLabelText
The button has been clicked an odd number of times. Click it again.
Ahora debe crear archivos de recursos independientes para cada idioma extranjero para el que va a proporcionar cadenas localizadas y debe agregarlos a la carpeta Propiedades del Explorador de soluciones. Los pasos restantes de este procedimiento son una forma de llevar a cabo esta tarea.
En el Explorador de soluciones, haga clic con el botón secundario en el nombre del proyecto y seleccione Abrir carpeta en el Explorador de Windows.
Abra la carpeta Propiedades.
Para cada idioma extranjero para el que va a proporcionar cadenas localizadas, cree una copia del archivo Resources.aspx en la misma carpeta. Se debe asignar un nombre para cada archivo según el modelo Resources.LCID.resx, donde LCID es un código de idioma y referencia cultural. En el ejemplo, cree dos archivos: Resources.en-us.resx para inglés y Resources.es-es.resx para español.
En el Explorador de soluciones, haga clic con el botón secundario en el nombre del proyecto, seleccione Agregar y, a continuación, seleccione Elemento existente. Se abre un cuadro de diálogo de selección de ubicación con la carpeta del proyecto como carpeta actual.
Abra la carpeta Propiedades.
Seleccione todos los archivos de recursos específicos del idioma que ha creado (pero no el archivo Resources.resx predeterminado) y, a continuación, haga clic en Agregar. Los archivos se agregan a la raíz del proyecto en el Explorador de soluciones.
Seleccione todos los nuevos archivos específicos del idioma en el Explorador de soluciones y arrástrelos a la carpeta Propiedades. Se le preguntará si desea sobrescribir los archivos. Haga clic en Sí.
Haga doble clic en uno de los archivos en idioma extranjero para abrirlo en el editor de recursos.
Reemplace el Valor en cada fila con su traducción. No cambie nada en la columna Nombre. En el caso del archivo Resources.es-es.resx del ejemplo, use las siguientes cadenas en español.
Nombre
Valor
ButtonText
¡Presiona este botón!
EvenLabelText
El botón ha sido presionado un número de veces par. Presiónalo nuevamente
InitialLabelText
El botón nunca ha sido presionado.
OddLabelText
El botón ha sido presionado un número de veces impar. Presiónalo nuevamente.
Repita los dos últimos pasos para cada archivo de recursos específico del idioma.
Nota
Cuando el archivo de recursos específico del idioma es para el mismo idioma que se usa como idioma predeterminado (como es el caso del archivo Resources.en-us.resx en el ejemplo de este tema), no es necesario, por supuesto, cambiar el archivo. 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 para el idioma predeterminado, sobre todo cuando los únicos recursos en los archivos son cadenas. Pero los archivos de recursos pueden contener imágenes, iconos, archivos y otros tipos de recursos también, A veces, se necesita el archivo de recursos predeterminado para usar una imagen u otro recurso diferente del recurso correspondiente en cualquiera de los archivos específicos del idioma.
Para crear una clase de recursos y los ensamblados satélite y agregarlos al paquete de solución
En Visual Studio, en el menú Generar, seleccione Generar solución. Visual Studio hace dos cosas:
Se genera código MSIL (Lenguaje Intermedio de Microsoft) y se inserta en el ensamblado principal del proyecto:
Se crea un nuevo espacio de nombres denominado Project.Properties, donde Project es el nombre del proyecto de Visual Studio.
Una clase denominada Resources se declara en el espacio de nombres.
Se agrega una propiedad static a la nueva clase para cada cadena en el archivo de recursos de idioma predeterminado.
Para cada idioma extranjero, se crea una subcarpeta bajo las carpetas Depurar o Liberar en el proyecto, según la configuración de destino, y se asigna un nombre a la subcarpeta con el identificador de configuración regional (LCID) del idioma. Dentro de cada una de estas carpetas hay un ensamblado, denominado Project.resources.dll, que contiene una versión compilada de las cadenas del idioma. Se denominan ensamblados satélite.
Los ensamblados satélite deben agregarse al paquete de solución. En el Explorador de soluciones, haga doble clic en el archivo *.package para abrirlo en el diseñador de paquetes.
Haga clic en la pestaña Opciones avanzadas en la parte inferior del diseñador.
Haga clic en Agregar y, a continuación, seleccione Agregar ensamblado existente.
Nota
No seleccione Agregar ensamblado desde la salida del proyecto. En el caso del diseñador de paquetes, los ensamblados satélite no cuentan como resultados del proyecto.
En el cuadro de diálogo Agregar ensamblado existente, haga clic en el botón de puntos suspensivos (...) y navegue a uno de los ensamblados satélite en una subcarpeta de idioma bajo Depurar (o Liberar). Haga clic en Abrir.
Deje el Destino de la implementación en GlobalAssemblyCache. (Este es un detalle técnico. Los ensamblados en las soluciones de espacio aislado no se implementan en la memoria caché global de ensamblados. Para obtener más información, vea ¿Dónde se implementan los ensamblados en las soluciones de espacio aislado?).
En el cuadro Ubicación, debe anexar la subcarpeta de idioma al nombre del ensamblado satélite. Por ejemplo, para el ensamblado satélite en español en la subcarpeta es-es, agregue "es-es\" delante del nombre de ensamblado. Cuando haya terminado, el valor Ubicación será LCID\Project.resources.dll; por ejemplo, es-es\LocalizedWebPart.resources.resx.
Nota
Cuando esté preparado para cambiar la configuración de destino de Depurar a Liberar, debe quitar todos los ensamblados satélite del proyecto, volver a generar y, a continuación, agregarlos de nuevo desde las subcarpetas LCID de la carpeta Liberar del proyecto. Si debe cambiar las configuraciones de destino con frecuencia, cree una carpeta del mismo nivel que las carpetas Depurar y Liberar. Cree un script posterior a la generación que copie estas subcarpetas LCID en la nueva carpeta. A continuación, agregue los ensamblados de la nueva ubicación al paquete de solución. Solo se necesita cambiar el script cuando se cambian las configuraciones de destino.
Repita los últimos cuatro pasos para todos los ensamblados satélite y guarde todos los archivos.
Para crear el elemento web de ejemplo y hacer referencia a las cadenas localizadas
En el Explorador de soluciones, agregue un elemento webde SharePoint en el proyecto. En el ejemplo de este tema, el elemento web se denomina OneButton.
En el Explorador de soluciones, abra el archivo de código del elemento web. En el ejemplo, se usa C#, por lo que el archivo es OneButton.cs.
Agregue dos campos protected a la clase del elemento web personalizado, tal como se muestra en el siguiente código.
protected Button button1; protected Label label1;
Agregue el siguiente código al método CreateChildControls.
button1 = new Button(); label1 = new Label(); button1.Text = Properties.Resources.ButtonLabel; label1.Text = Properties.Resources.InitialLabelText; button1.Click += new EventHandler(button1_Click); Controls.Add(button1); Controls.Add(new LiteralControl("<br />")); Controls.Add(label1);
Tenga en cuenta que dos líneas asignan cadenas haciendo referencia a las propiedades de la clase Resources que Visual Studio generó e insertó en el ensamblado principal. El descriptor de acceso get de cada una de estas propiedades devuelve una cadena desde el ensamblado satélite asociado con el idioma del sitio web actual. Si no hay ningún ensamblado satélite para el idioma del sitio web, se devuelve la cadena que se definió en el archivo de recursos predeterminado.
Agregue el siguiente controlador de eventos a la clase del elemento web personalizado.
void button1_Click(object sender, EventArgs e) { if ((label1.Text == Properties.Resources.InitialLabelText) || (label1.Text == Properties.Resources.EvenLabelText)) { label1.Text = Properties.Resources.OddLabelText; } else { label1.Text = Properties.Resources.EvenLabelText; } }
Genere y empaquete la solución.
Para probar la localización
Implemente el paquete de solución en la galería de soluciones de una colección de sitios que se creó en uno de los idiomas extranjeros y active la solución.
Navegue a la página Configuración del sitio y, a continuación, abra la galería de características de la colección de sitios o del sitio web raíz, según si el ámbito de la característica es sitio o web. (En el ejemplo de este tema debe ser sitio porque las características que contienen elementos web solo se deben implementar con ámbito de sitio).
Active la característica.
Navegue a cualquier página de elementos web, agregue el elemento web a la página y úselo. Sus cadenas deben estar en el idioma del sitio web.
Repita los últimos cuatro pasos para cada idioma extranjero para el que se haya creado un ensamblado satélite.
Repita la implementación y la activación en alguna colección de sitios en idioma extranjero para la que no se haya creado un archivo de recursos específico del idioma. Las cadenas del elemento web deben ser las cadenas que se colocan en el archivo de recursos predeterminado.
Vea también
Conceptos
Preparación para crear soluciones de SharePoint localizadas
¿Dónde se implementan los ensamblados en las soluciones de espacio aislado?
Procedimientos recomendados para desarrollar soluciones de espacio aislado