SharePoint App. Aplicaciones multi-idioma

Ahora que estamos pensando en publicar nuestras Apps en la tienda de SharePoint, es muy importante tener en cuenta la globalización de la tienda y que nuestra App debería de soportar múltiples idiomas. La idea es que podamos llegar a un mayor número de usuarios-empresas y por eso esta recomendación.

Básicamente, tenemos que localizar con recursos los tres elementos básicos que podemos implementar, Elementos de SharePoint (listas, tipos de contenido, App Parts, etc), el HTML y JavaScript, y nuestro code-behind, si lo tuviésemos.

Elementos de SharePoint

Primero nos toca definir, en el AppManifest, los idiomas soportados. Aquí hay que tener en cuenta los idiomas soportados en la tienda, por ejemplo, Spanish (es) no está soportado, hay que usar Spanish-Spain (es-ES).

 

Automáticamente, se nos creará en nuestro proyecto, los ficheros de recursos necesarios para la localización de los literales que necesitemos, y al igual que en un proyecto de SharePoint tradicional, si queremos localizar el título de la definición de una lista, haremos lo siguiente:

<?xml version="1.0" encoding="utf-8"?>


<Elements xmlns="http://schemas.microsoft.com/sharepoint/">


<ListInstance


Title="$Resources:ClientesList_Title"


OnQuickLaunch="TRUE"


TemplateType="10000"


Url="Lists/Clientes"


Description="$Resources:ClientesList_Description">


</ListInstance>


</Elements>


 

HTML y JavaScript

Aquí podemos trabajar con diversas técnicas que nos permita la localización, como de una aplicación normal se tratara, de los contenidos. Principalmente, hay que tener en cuenta, que en el querystring de nuestra App, tenemos una variable, SPLanguage, que nos define el idioma del usuario en SharePoint. Lo ideal sería leer esa variable y añadir el fichero de recursos que le corresponda a ese idioma. Os recomiendo este artículo de Olivier Carpentier que os muestra cómo hacerlo, más o menos como sigue:


var defaultLanguage = ‘en-us’;
var languagesArray = [‘en-us’, ‘fr-fr’];

// Función para leer las querystring de la url.
function getUrlVars() {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf(‘?’) + 1).split(‘&’);
    for (var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split(‘=’);
        vars.push(hash[0]);
        vars[hash[0]] = decodeURIComponent(hash[1]);
    }
    return vars;
}

// Obtenemos la variable SPLanguage
var queryString = getUrlVars();
var language = queryString[“SPLanguage”];
if (language == null)
{
    language = defaultLanguage;
}
else
{
    language = language.toLowerCase();
    var langExists = false;

    //Comprobamos si existe en los disponibles
    for (var i = 0; i < languagesArray.length; i++) {
        var testedLang = languagesArray[i];
        if (testedLang == language) {
            langExists = true;
            break;
        }
    }

    //Obtenemos el idioma de la región
    if (langExists == false) {
        var regionalLng = language.substring(0, 2);
        for (var i = 0; i < languagesArray.length; i++) {
            var testedLang = languagesArray[i].substring(0, 2);
            if (testedLang == regionalLng) {
                langExists = true;
                language = languagesArray[i];
                break;
            }
        }
    }

    //Si no existe, usamos el idioma definido por defecto
    if (langExists == false) {
        language = defaultLanguage;
    }
}
// Insertamos el script correspondiente al idioma
var resourcesFile = ‘../Scripts/Resources.’ + language + ‘.js’;
document.writeln(“<script src= + resourcesFile + type=text/javascript language=javascript></script>”)

Con esto, sólo tenemos que usar jQuery para poner la localización adecuada en cada caso.

Code-Behind

En este caso, vamos a poder usar cualquier tipo de localización que nos permite el lenguaje de desarrollo que usemos, ya que podemos usar este método para la Provider-hosted como para las Autohosted. Por ejemplo, si tenemos una Autohosted, lo normal es usar ficheros de recursos en ASP.NET y que cambiemos la cultura actual de la ejecución por la que nos viene en la querystring.

protected override void InitializeCulture()

{

if (Request.QueryString[“SPLanguage”] != null)

{

string selectedLanguage = Request.QueryString[“SPLanguage”];

UICulture = selectedLanguage;

Culture = selectedLanguage;

 

Thread.CurrentThread.CurrentCulture =

CultureInfo.CreateSpecificCulture(selectedLanguage);

Thread.CurrentThread.CurrentUICulture = new

CultureInfo(selectedLanguage);

}

base.InitializeCulture();

}

Para probar en múltiples idiomas, os recomiendo crearos un sitio de desarrollo en el idioma a probar y listo, depuramos o desplegamos nuestra App en este.

Tenéis más información sobre localización de SharePoint Apps en la MSDN

Si cuando desarrollamos una App para Windows Phone o Windows Store, os recomendamos localizarla a todos los idiomas posibles, o como mínimo, a español e inglés, con las SharePoint Apps es aún más importante. Pensemos en la cantidad de usuarios-empresas repartidos por el mundo que pueden ver nuestra App en la tienda y que son susceptibles de adquirirla si la entienden y está en un idioma conocido.

 

Saludos a todos…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *