Localisation dans les solutions sandbox 

Developpement, SharePoint2010, Sandbox

Rendre une application multi-langue est maintenant chose très courante, et SharePoint, reposant sur ASP.NET, propose toute la mécanique pour réaliser cette tâche.

 

Cependant, tout est faisable lorsque que l’on travaille avec des solutions de type ferme, donc des solutions qui déploient des fichiers sur les serveurs. Il est aisé de déployer des fichiers de ressources, puis de les utiliser depuis notre code. Qu’en est-il des solutions sandbox qui elles, ne peuvent pas, par définition, déployer de fichiers sur le système de fichiers des serveurs de la ferme SharePoint ?

 

Une solution sandbox est une application SharePoint qui s’exécute dans un processus contrôlé et sécurisé qui a accès à une zone limité de la ferme de serveurs. Il n’est donc pas possible de déployer les fichiers de ressource.

 

Pour rendre nos applications sandbox multi-langue, nous allons devoir encapsuler les ressources dans la dll directement de notre projet.

 

Commençons par créer un nouveau projet SharePoint vide, en mode sandbox :

 

clip_image002

 

clip_image004

 

Nous allons ajouter une ressource par défaut à notre projet : clic-droit sur le projet, puis « properties », depuis la section « Resources », créons un nouveau fichier (lien bleu ci-dessous).

 

Nous allons ajouter à notre projet des « satellites assemblies » :

 

clip_image006

 

Ajoutons un nouvel élément à notre ressource, ici en anglais par défaut. Pour la clé « Key » nous spécifions la valeur célébrissime « Hello World » :

 

clip_image008

 

Depuis le « solution explorer », localisons le fichier « Resources.resx » créé par Visual studio, puis faisons un copier / coller de ce fichier pour le dupliquer. Renommons ce dernier « Resources.fr-FR.resx ». Nous ajoutons le support de la langue française à notre projet. Bien entendu, Visual Studio ne va pas faire de traduction pour nous … Nous obtenons donc ceci :

 

clip_image009

 

Ouvrons la ressource française, et modifions la valeur de la clé « Key » pour ajouter une traduction. Ne me jugez pas sur la traduction, ce n’est pas le but ici Smile

 

clip_image010

 

Ajoutons une web part à notre solution :

 

clip_image012

 

Modifions ensuite le code de notre web part pour qu’il ressemble à :

 

   1:  namespace SandboxLocalizedSample.SampleWP
   2:  {
   3:      [ToolboxItemAttribute(false)]
   4:      public class SampleWP : WebPart
   5:      {
   6:          protected override void CreateChildControls()
   7:          {
   8:              string txt = SandboxLocalizedSample.Properties.Resources.Key;
   9:              Controls.Add(new LiteralControl(txt));
  10:          }
  11:      }
  12:  }

 

Le plus important ici est la ligne 8 : en effet, depuis la classe statique Properties, nous récupérons la valeur de « Key ». Cette valeur dépendra de la langue de l’utilisateur qui charge cette web part. Cette valeur est ensuite affichée sur la page via le LiteralControl.

 

Compilons la solution. Attention, juste une compilation, nous n’allons pas encore déployer notre solution car il manque une étape.

 

Il va falloir en fait inclure dans notre solution SharePoint toutes les dll satellites que Visual Studio a générées pour nous. En fait, nous avons dans cet exemple seulement une dll satellite, la dll contenant la ressource française.

 

Commençons par ouvrir notre explorateur de package :

 

clip_image014

 

Nous allons ensuite utiliser le mode designer pour modifier notre package :

 

clip_image015

 

Cliquons sur le mode avancé en bas de page :

 

clip_image016

 

Ajoutons ensuite une dll existante à notre package via le bouton « Add » :

 

clip_image017

 

Naviguons jusqu’au dossier de sortie de notre projet (bin\Debug par défaut lorsque que le mode debug dans Visual Studio est sélectionné), puis allons dans le sous-dossier fr-FR qui va du coup contenir notre dll satellite pour les ressources françaises :

 

clip_image018

 

Attention ici, si vous avez plus d’une langue différente à ajouter, spécifier bien un nom de dossier unique dans la section « Location », ici fr-FR, sinon Visual Studio vous renverra une erreur. En effet, toutes les dll satellites auront le même nom, elles ne pourront donc pas être ajoutées à la racine de votre solution, d’où la nécessité de les stocker dans des sous-dossiers :

 

clip_image019

 

Nous pouvons à présent déployer notre solution vers notre site SharePoint. Une fois l’opération terminée, allons sur la page d’accueil de notre site, puis ajoutons notre web part :

 

clip_image021

 

Le site étant en anglais, nous avons bien la traduction anglaise de la valeur « Key » :

 

clip_image022

 

Si nous basculons en français (Site actions > Language settings (section Site Administration)), en supposant que le pack de langue français est bien installé sur le serveur :

 

clip_image024

 

En retournant sur la page d’accueil du site, nous obtenons bien la traduction française :

 

clip_image025

 

La procédure est un poil moins simple que lorsque nous développons des solutions de type ferme, mais la localisation reste quelque chose de très important, et doit être prise en compte dès le démarrage d’un projet.

 

- Julien

 
Posté le 19 Sep 10
Commentaire (0)  |  Url de Trackback  | Lien vers ce message (0) | Marquez ce billet avec:        
 

Liens vers ce message

Commentaires


Nom *:
URL:
Email:
Commentaires:

© 2011 Julien Chomarat - Design based on Blue World