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

- Accès anonyme et les pages Forms / viewlsts.aspx... par Nicolas Humann le il y a 2 heures et 17 minutes

- l'Atelier 4 du coach C# est disponible par Bernard Fedotoff le il y a 3 heures et 52 minutes

- [WPF] Formatter l’affichage lors d’un binding, via StringFormat par Thomas Lebrun le il y a 8 heures et 54 minutes

- WSC08 : Le bilan, Les Photos, Les Webcasts à voir ou à revoir par Blog de Daniel TIZON [daniel] le il y a 18 heures et 1 minutes

- SharePoint et ses DB : Avez vous pensé à les "Tweaker" ? par The Mit's Blog le il y a 18 heures et 30 minutes

- NTttcp : Mesurer la vitesse d'un réseau par Blog d'Olivier Huet le il y a 18 heures et 55 minutes

- Un nouveau quizz par Matthieu MEZIL le il y a 21 heures et 39 minutes

- Webcast ADO.NET Data Services par Matthieu MEZIL le il y a 21 heures et 42 minutes

- edmx : mise à jour du modèle depuis la base par Matthieu MEZIL le 10-06-2008, 17:47

- Alternatif - Mono 2.0 est arrivé! par #Rui le 10-06-2008, 16:33