Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

The Mit's Blog

En plus d'intégrer et skier, il sait même écrire !
(Blog de Renaud Comte)

Actualités

SharePoint et le multilinguisme : Comment gérer la traduction des propriétés dans les toolbars des WebParts

Depuis longtemps, je milite pour l' utilisation systématique des fichiers de ressources dans le développement SharePoint afin de favoriser le multilinguisme !

 

Je ne suis plus tout seul, heureusement d' ailleurs, d'autre me rejoigne comme ce cher GAT (pour les frenchies, prononcer Gaetan Bouveret smile_tongue )

Preuve en est son super article sur ASP-PHP (que je ne saurais trop vous conseiller de lire, relire et surtout appliquer !)

http://www.sharepointofview.fr/gat/archive/2008/07/11/internationalisation-des-applications-sharepoint.aspx

En parcourant un peu le site de CodeProject, je suis tombé sur de bien sympathique samples, qui m'ont surtout fait réaliser un oubli cruel.

??? Comment traduire les propriétés partagés des WebPart dans la Toolpart ???

Rappel

Les propriétés des WP correspondent à des propriétés publiques qui ont été décorés avec les attributs WebBrowsable et consoeur du namespace System.ComponentModel et System.Web.UI.WebControls.WebParts

exemple :

        [WebBrowsable(true)]
        [Personalizable(PersonalizationScope.Shared)]
        [WebDisplayName("ListName")]
        [WebDescription("ListName")]
        [Category("Configuration")]
        public string ListName
        {
            get
            {
                return _listName;
            }
            set
            {
                _listName = value;
            }
        }

Il est vrai que comme ces arguments sont souvent des paramètres techniques genre : nombre de jour ou nom de la liste de référence, le développeur utilise le nom de la propriété (donc en US bien souvent)

D'ou la problématique : Comment gérer la traduction dynamique de ces attributs déclaratifs ???

Il y a une solution simple à vrai dire
>>> il suffit d'appliquer les techniques de ressources de SharePoint 2007 avec le SPUtility.GetLocalizedRessource sur une classe dérivant justement les attributs WebDisplayName,WebDescription et Category

(Vous me direz, rien de bien nouveau, il s'agit des basiques de l'héritage objet, je sais mais il fallait y penser )

En pratique, vous devez créer 3 classes dans le genre

    [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]
    public class SPCategoryAttribute : System.ComponentModel.CategoryAttribute
    {
        public SPCategoryAttribute(string attribute) : base(attribute) { }
...

    [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]
    public class SPWebDisplayNameAttribute : System.Web.UI.WebControls.WebParts.WebDisplayNameAttribute
    {
        private string _attribute;

        public SPWebDisplayNameAttribute(string attribute)


        {
            _attribute = attribute;
        }

...

    [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]
    public class SPWebDescriptionAttribute : System.Web.UI.WebControls.WebParts.WebDescriptionAttribute
    {
        private string _attribute;

        public SPWebDescriptionAttribute(string attribute)
        {
            _attribute = attribute;
        }
...

Mais plutôt que continuer avec plein de code (enfin une dizaine tout au plus), je vous conseille plutôt de profiter d'une classe de base contenant toute cette petite mécanique et pourquoi pas en profiter pour rajouter aussi un systéme de log

Non ?

Et pourquoi pas utiliser la classe de base pour WebPart fournir dans le projet SharePointOfView de Codeplex qui gére désormais toute cette problématique ?

Tout simplement. smile_nerd

A bientôt

PS : bien le bonjour à l'équipe du SOV (SharePoint Of View)  !

Renaud Comte aka TheMit (Je code donc je test, variant Dev de "Cogito ergo sum ")
Member of WygTeam
http://www.wygwam.com

Mots clés Technorati : ,,,,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: vendredi 18 juillet 2008 10:53 par themit

Commentaires

metralo a dit :

Le modèle objet de SharePoint propose en standard l'attribut ResourcesAttribute qui permet de globaliser les propriétés des WebParts.

Le constructeur prend 3 paramètres qui sont les clés de ressources respectives du titre, de la description et de la catégorie de la propriété.

Le seul pré-requis est de surchager la méthode LoadResource comme indiqué dans l'article de GAT.

Plus d'infos :

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.resourcesattribute.aspx

# août 8, 2008 10:46

themit a dit :

Eh eh nice catch !

Bien joué metralo, belle trouvaille dans le MSDN SharePoint

# août 8, 2008 11:30
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le il y a 20 heures et 34 minutes

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le 10-11-2008, 01:18

- SharePoint : nouvel article sur la mise en place des Scopes dans MOSS Searchs par Blog Technique de Romelard Fabrice le 10-10-2008, 17:52

- Hello CS par Le Blog de julz le 10-10-2008, 12:26

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le 10-10-2008, 09:35

- MVC Pratique #07 - Un projet concret et le transfert des objets avec les ModelBinders par #Rui le 10-09-2008, 23:39

- SQL Server 2008 : Certifié - TS Admin (70-432) par SQL Server vu par Christian Robert le 10-09-2008, 10:58

- [WPF] Comment changer la couleur utilisée pour sélectionner les éléments d’un ItemsControl ? par Thomas Lebrun le 10-09-2008, 10:49

- Hello World! par Hamid's Place le 10-08-2008, 23:38

- SQL Profiler - Configuration pour un développeur - tracer les requêtes SQL de votre application par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-08-2008, 15:52