jueves, 23 de septiembre de 2010

Limitaciones de la MUI de SharePoint 2010

En un proyecto que está llevando un compañero están teniendo un problema relacionado con las capacidades multilenguaje de SharePoint 2010 y creo que es interesante que tengamos en cuenta algunas limitaciones con las que no contábamos.

Lo primero, hay algunas definiciones de sitio que no están preparadas para ser multilenguaje como, por ejemplo, los sitios de reunión y los blogs. Si intentas activar los lenguajes alternativos en uno de estos sitios te encontrarás con un error como este:

Este sitio está basado en una plantilla que no soporta lenguajes alternativos” (“this site is based on a template that does not not support alternate languages”)

Para ver qué plantillas de sitio permiten MUI, puedes utilizar este código powershell.

$site = get-spsite "http://localhost"
$site.GetWebTemplates("1033") | foreach {Write-Host $_.Title $_.Name  $_.SupportsMultilingualUI;}

Veréis que la plantilla MPS, en todas sus configuraciones, y la plantilla BLOG no están preparadas para esta funcionalidad.

Después de mirar todos los sitios y los subsitios que se habían creado y de asegurarnos de que no había ningún sitio basado en alguna de estas plantillas nos dimos cuenta de que nuestro error era ligeramente diferente. De hecho, teniendo en cuenta que el mensaje de error era diferente, era de esperar. Nuestro mensaje decía algo así como: “Los lenguajes alternativos no están soportados en sitios con archivos CSS personalizados” (“Alternate languages are not supported on sites with customized CSS files”).

En vista de que aparentemente no se había tocado ningún CSS en la máquina en cuestión buscamos por todos los sitios cuál era el fichero que había sido modificado utilizando Reflector y un código que encontré en la siguiente página: http://msdn.microsoft.com/en-us/library/ff800886.aspx. El resultado que obtuvimos fue que el fichero corev4.css había sido modificado. Sabiendo qué elemento estábamos buscando y retrocediendo en el tiempo recordamos el procedimiento que había causado el problema.

  1. Abrir el sitio con SharePoint Designer 2010
  2. Abrir una página maestra y navegar hasta el código de alguna clase CSS dentro de un fichero de sistema (como por ejemplo corev4.css)
  3. Guardar el fichero de sistema modificado.

Lo que está pasando es que SharePoint está creando un elemento personalizado copia del fichero de sistema en la base de datos. No sé por qué este asunto inhabilita la posibilidad de utilizar lenguajes alternativos, pero lo veo muy apropiado ya que hacer este tipo de cosas es una práctica muy poco aconsejable por varios motivos (despliegue, mantenimiento, rendimiento… y podría seguir). Si queremos aplicar estilos a nuestro sitio tenemos muchas maneras de hacerlo como, por ejemplo, creando una hoja de estilos vacía y asignándola como hoja de estilos alternativa.

En cualquier caso, si tenéis este problema en vuestro servidor existe una solución muy simple. Vais a SharePoint Designer, desplegáis el nodo All files y veréis una carpeta llamada _styles. Debéis borrar todos los elementos de esa carpeta para poder habilitar los lenguajes alternativos.

Recordad: SharePoint Designer es una herramienta muy poderosa y, por lo tanto, hay que usarla con precaución. No hagáis nada en un servidor que no sea de pruebas si no lo habéis probado (valga la redundancia) con anterioridad. Este anuncio es de un medicamento. No utilizar sin la supervisión de un adulto. No aceptéis caramelos de desconocidos ;)

2 comentarios:

Anónimo dijo...

Hola David, me gustaria indicarte que han salido nuevos idiomas, entre ellos el vasco y el gallego, seguro que a má de uno le vendran bien, y ademas es todo una novedad en el sharepoint 2010 esos idiomas.

David Martos dijo...

Gracias por la info, la verdad es que se agradece que existan language packs para idiomas como el vasco o el gallego, ya que hasta ahora nos suponía un problema en algunos proyectos (especialmente en sector público)