Partager via


Procédure pas à pas : localisation d'une application Visual Studio SharePoint

La localisation d'une application SharePoint remplace ses chaînes codées en dur par des expressions et des instructions qui extraient des valeurs de chaîne localisées à partir de fichiers de ressources. Cette procédure pas à pas vous indique comment localiser tous les éléments de chaîne d'une application de page Web SharePoint.

Cette procédure pas à pas présente les tâches suivantes :

  • Localisation du code.

  • Localisation du balisage ASPX.

  • Localisation d'une fonctionnalité.

Composants requis

Vous avez besoin des composants suivants sur l'ordinateur de développement pour terminer cette procédure pas à pas :

Une connaissance des concepts suivants est utile, mais pas obligatoire, pour effectuer cette procédure pas à pas :

Localisation du code SharePoint

Le code dans les applications SharePoint contient souvent des chaînes codées en dur pour le texte UI. Il est possible de localiser ces chaînes en les remplaçant par des appels à GetGlobalResourceObject. Démarrez la procédure pas à pas en modifiant un projet de composant WebPart.

Pour modifier le projet de composant WebPart

  1. Exécutez les procédures mentionnées dans la rubrique, Procédure pas à pas : création d'un composant WebPart pour SharePoint.

  2. Une fois le projet de composant WebPart chargé dans Visual Studio, ajoutez un élément de projet Page Application au projet de composant WebPart. Utilisez le nom par défaut, ApplicationPage1.aspx.

  3. Ajoutez un élément de projet Fichier de ressources au projet de composant WebPart. Utilisez le nom par défaut, Resource1.resx. Le modèle d'élément de projet Fichier de ressources se trouve sous le dossier des modèles d'élément de projet de langue dans la boîte de dialogue Ajouter un nouvel élément.

    Le fichier de ressources s'ouvre dans l'Éditeur de ressources.

  4. Dans l'Éditeur de ressources, entrez les IDs de chaîne et les valeurs qui suivent :

    ID de chaîne

    Valeur

    String1

    Chemin d'accès du fichier de données sur les employés

    String2

    Emplacement du fichier XML qui contient les données sur les employés

    String3

    Afficher uniquement les directeurs

    String4

    Afficher uniquement les employés qui sont directeurs

    String5

    Afficher tous les employés

    String6

    Liste des employés

    String7

    Afficher la liste des employés

    String8

    Page Application

    String9

    Description de la page Mon application

  5. Faites une copie de Resource1.resx en cliquant sur son nœud dans l'Explorateur de solutions, puis en cliquant sur Copier dans le menu Edition.

  6. Cliquez sur le nœud WebPart dans l'Explorateur de solutions, puis sur Coller dans le menu Edition.

  7. Cliquez avec le bouton droit sur le fichier copié, puis cliquez sur Renommer. Nommez le fichier Resource1.ja-JP.resx.

    Ce fichier sert de fichier de ressources localisé pour le japonais, qui est ensuite compilé dans un assembly satellite et déployé sur SharePoint.

  8. Ouvrez Resource1.ja-JP.resx dans l'Éditeur de ressources et ajoutez le mot JAPONAIS devant chaque valeur.

    Par exemple, « Chemin d'accès du fichier de données sur les employés » devient « JAPONAIS Chemin d'accès du fichier de données sur les employés ». Dans un scénario localisé réel, ces chaînes utiliseraient des caractères japonais.

  9. Remplacez la valeur de la propriété Deployment Type de Resource1.resx et Resource1.ja-JP.resx par AppGlobalResource.

    Cela provoque le déploiement des fichiers dans le dossier App_GlobalResources sur le serveur et rend les ressources disponibles pour tous les projets ASP.NET.

    Notes

    La propriété Type de déploiement s'affiche uniquement pour les fichiers de ressources ajoutés aux éléments de projet SharePoint.

  10. Double-cliquez sur Package.package pour l'ouvrir dans le Concepteur de packages.

  11. Cliquez sur le bouton Avancé, le bouton Ajouter, puis cliquez sur Ajouter un assembly existant.

    Cela ouvre la boîte de dialogue Ajouter un assembly existant.

  12. Générez le projet pour créer les DLL satellites localisées.

  13. Dans la boîte de dialogue Ajouter un assembly existant, cliquez sur le bouton de sélection (Bouton de sélection du concepteur ASP.NET mobile) en regard de Chemin d'accès source et recherchez la DLL satellite localisée.

    Le fichier d'assembly se trouve dans le répertoire de votre projet sous .. \bin\debug\ja-JP.

  14. Pour l'option Cible de déploiement, conservez la valeur GlobalAssemblyCache.

  15. Dans la zone Emplacement, ajoutez un dossier ID de culture au chemin d'accès. Pour cet exemple, remplacez la valeur existante par jp-JA\nom_composant_WebPart.resources.dll. Si votre projet a plusieurs DLL satellites, répétez cette étape pour chaque DLL.

    Cette étape est nécessaire car un package n'autorise pas deux fichiers nommés de manière identique dans le même dossier. La création d'un sous-dossier selon l'ID de culture permet aux deux fichiers d'être empaquetés ensemble.

  16. Lorsque vous avez terminé, cliquez sur OK pour fermer la boîte de dialogue.

  17. Ouvrez la page de codes pour le composant WebPart et remplacez les instructions Using ou Includes existantes par les éléments suivants.

    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    using System;
    using System.ComponentModel;
    using System.Data;
    using System.Resources;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    
  18. Remplacez les déclarations de variables et fonctions existantes par les éléments suivants.

        private DataGrid grid;
            // Replaced: private static string verbText = "Show Managers Only";
            private static string verbText = HttpContext.GetGlobalResourceObject("Resource1", "String3").ToString();
            private Label errorMessage = new Label();
            protected string xmlFilePath;
    
            // Replaced: WedDisplayName and WebDescription attribute strings.
            [Personalizable(PersonalizationScope.Shared), WebBrowsable(true),
            LocalizedWebDisplayName("String1"),
            LocalizedWebDescription("String2")]
            public string DataFilePath
            {
                get
                {
                    return xmlFilePath;
                }
                set
                {
                    xmlFilePath = value;
                }
            }
    
            protected override void CreateChildControls()
            {
                // Define the grid control that displays employee data in the Web Part.
                grid = new DataGrid();
                grid.Width = Unit.Percentage(100);
                grid.GridLines = GridLines.Horizontal;
                grid.HeaderStyle.CssClass = "ms-vh2";
                grid.CellPadding = 2;
                grid.BorderWidth = Unit.Pixel(5);
                grid.HeaderStyle.Font.Bold = true;
                grid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
    
                // Populate the grid control with data in the employee data file.
                try
                {
                    DataSet dataset = new DataSet();
                    dataset.ReadXml(xmlFilePath, XmlReadMode.InferSchema);
                    grid.DataSource = dataset;
                    grid.DataBind();
                }
                catch (Exception x)
                {
                    errorMessage.Text += x.Message;
                }
    
                // Add control to the controls collection of the Web Part.
                Controls.Add(grid);
                Controls.Add(errorMessage);
                base.CreateChildControls();
            }
    
            public override WebPartVerbCollection Verbs
            {
                get
                {
                    WebPartVerb customVerb = new WebPartVerb("Manager_Filter_Verb",
                        new WebPartEventHandler(CustomVerbEventHandler));
    
                    customVerb.Text = verbText;
                    // Replaced: Hard-coded description with localized string.
                    customVerb.Description = HttpContext.GetGlobalResourceObject("Resource1", "String4").ToString();
                    WebPartVerb[] newVerbs = new WebPartVerb[] { customVerb };
    
                    return new WebPartVerbCollection(base.Verbs, newVerbs);
                }
            }
    
            protected void CustomVerbEventHandler(object sender, WebPartEventArgs args)
            {
                int titleColumn = 2;
    
                foreach (DataGridItem item in grid.Items)
                {
                    if (item.Cells[titleColumn].Text != "Manager")
                    {
                        if (item.Visible == true)
                        {
                            item.Visible = false;
                        }
                        else
                        {
                            item.Visible = true;
                        }
                    }
    
                }
                // if (verbText == "Show Managers Only")
                if (verbText == HttpContext.GetGlobalResourceObject("Resource1", "String5").ToString())
                {
                    // verbText = "Show All Employees";
                    verbText = HttpContext.GetGlobalResourceObject("Resource1", "String5").ToString();
                }
                else
                {
                    // verbText = "Show Managers Only";
                    verbText = HttpContext.GetGlobalResourceObject("Resource1", "String3").ToString();
                }
            }
    
  19. Ajoutez les nouvelles fonctions suivantes.

    // Provide localized values for the WebDisplayName and WebDescription
    // attribute strings.
    public class LocalizedWebDisplayName : WebDisplayNameAttribute
    {
        public LocalizedWebDisplayName(string resId)
        {
            base.DisplayNameValue = FetchLocalizedString(resId);
        }
    
        string FetchLocalizedString(string resourceID)
        {
            // Use the ResourceManager to get the string from 
            // the resource file.
            ResourceManager rm = Resource1.ResourceManager;
            return rm.GetString(resourceID);
        }
    }
    
    public class LocalizedWebDescription : WebDescriptionAttribute
    {
        public LocalizedWebDescription(string resId)
        {
            base.DescriptionValue = FetchLocalizedString(resId);
        }
    
        string FetchLocalizedString(string resourceID)
        {
            // Use the ResourceManager to get the string from 
            // the resource file.
            ResourceManager rm = Resource1.ResourceManager;
            return rm.GetString(resourceID);
        }
    }
    
  20. Appuyez sur F5 pour générer et exécuter la solution.

  21. Dans SharePoint, cliquez sur Autres options dans l'onglet Actions du site pour afficher la boîte de dialogue Créer.

  22. Dans la boîte de dialogue Créer, cliquez sur Page dans la section Filtrer par, cliquez sur Page de composants WebPart dans le volet des éléments installés, puis cliquez sur le bouton Créer.

  23. Dans la boîte de dialogue Nouvelle page de composants WebPart, entrez une valeur dans la zone Nom, puis cliquez sur le bouton Créer.

  24. Dans la page de composants WebPart, cliquez sur un composant WebPart pour afficher la barre d'outils.

  25. Cliquez sur le dossier Personnaliser dans la section Catégories, sélectionnez le composant WebPart dans la section Composants WebPart, puis cliquez sur le bouton Ajouter.

  26. Cliquez sur le bouton déroulant pour le WebPart, puis sur Modifier le composant WebPart pour afficher la boîte de dialogue Propriétés du composant WebPart.

  27. Développez la section Divers, entrez le chemin d'accès du fichier data.xml, cliquez sur Appliquer, puis sur OK.

  28. Une fois la grille de données affichée, cliquez de nouveau sur le bouton déroulant pour le composant WebPart et remarquez que le verbe personnalisé s'affiche dans la langue par défaut.

  29. Dans l'angle supérieur de la page de composants WebPart, cliquez sur la flèche de déroulement en regard de votre nom. Si le module linguistique est correctement installé, une commande appelée Sélectionnez la langue d'affichage apparaît. Pointez vers celle-ci, puis cliquez sur Japonais dans le menu contextuel. (Si vous avez installé un module linguistique différent, ce choix de langue apparaît ici.)

    Le texte s'affiche sur la page dans la langue sélectionnée.

  30. Cliquez sur le bouton déroulant pour le WebPart, puis sur Modifier le composant WebPart pour afficher la boîte de dialogue Propriétés du composant WebPart.

  31. Développez la section Divers et remarquez que toutes les chaînes visibles dans l'application s'affichent dans la langue localisée. L'étiquette de zone de propriété personnalisée, l'info-bulle pour le contrôle et le verbe s'affichent dans la langue localisée.

  32. Rétablissez la langue par défaut et fermez la page SharePoint.

Localisation du balisage ASPX

Vous pouvez localiser le balisage dans les contrôles et les pages ASPX à l'aide des fichiers de ressources.

Pour localiser le balisage ASPX

  1. Double-cliquez sur la page d'application pour afficher son balisage.

  2. Ajoutez une étiquette et un contrôle bouton à la page d'application en remplaçant la section PlaceHolderMain existante par la section suivante :

    <asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
    <asp:Label ID="lbl" runat="server" Font-Size="Large" Text="<%$Resources:Resource1,String6%>"></asp:Label>
    <br />
    <br />
    <asp:Button ID="btn1" runat="server" onclick="btn1_Click" Text="<%$Resources:Resource1,String7%>"></asp:Button>
    </asp:Content>
    

    Les chaînes codées en dur sont remplacées par l'expression au format <%$Resources:nom_fichier_ressource, ID_chaîne_ressource%>. Ces expressions affichent les chaînes de ressources localisées basées sur la langue actuelle.

  3. Remplacez les sections PageTitle et PageTitleInTitleArea par ce qui suit :

    <asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
    <asp:Literal ID="Literal1" runat="server" Text="<%$Resources:Resource1, String8%>" />
    </asp:Content>
    <asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" >
    <asp:Literal ID="Literal2" runat="server" Text="<%$Resources:Resource1, String9%>" />
    </asp:Content>
    

    Les chaînes codées en dur sont remplacées par l'expression au format <asp:literal ID="Literal1" runat="server" Text="<%$Resources:nom_fichier_ressource, ID_chaîne%>" />. Ces expressions affichent les chaînes de ressources localisées basées sur la langue actuelle.

  4. Sélectionnez la page d'application dans l'Explorateur de solutions, puis cliquez sur Code dans le menu Affichage pour afficher le code derrière la page d'application.

  5. Ajoutez le code ci-dessous.

    protected void btn1_Click(object sender, EventArgs e)
    {
        Response.Redirect("http://MyServer/MyPage.aspx", false);            
    }
    
  6. Appuyez sur F5 pour générer et exécuter la solution.

    La page d'application apparaît avec les chaînes de ressources par défaut.

  7. Dans l'angle supérieur de la page d'application, cliquez sur la flèche de déroulement en regard de votre nom et sélectionnez la langue localisée.

    Le texte apparaît sur la page avec les chaînes de ressources localisées.

  8. Cliquez sur le bouton Afficher la liste des employés pour afficher la page de composants WebPart.

  9. Rétablissez la langue par défaut et fermez la page SharePoint.

Localisation des fonctionnalités

Les fonctionnalités ont un nom et un description qui s'affichent dans SharePoint. Vous pouvez localiser ces chaînes à l'aide des fichiers de ressources de fonctionnalité. Ces fichiers de ressources sont séparés des autres fichiers de ressources dans l'application.

Pour localiser une fonctionnalité

  1. Cliquez avec le bouton droit de la souris sur le nœud Feature1 dans l'Explorateur de solutions, puis cliquez sur Ajouter une ressource de fonctionnalité.

  2. Dans la boîte de dialogue Ajouter une ressource, sélectionnez la culture par défaut, Langue indifférente.

    Cela ajoute un fichier nommé Resources.resx à la fonctionnalité qui sert de ressource de fonctionnalité par défaut. Le fichier de ressources s'ouvre dans l'Éditeur de ressources.

  3. Dans l'Éditeur de ressources, entrez les ID de chaîne et les valeurs qui suivent :

    ID de chaîne

    Valeur

    String1

    Titre de ma fonctionnalité

    String2

    Description de ma fonctionnalité

  4. Ajoutez un autre fichier de ressources de fonctionnalité, mais sélectionnez une culture différente, telle que Japonais (Japon).

    Cela ajoute un fichier nommé Resources.ja-JP.rex à la fonctionnalité. Étant donné que les ressources de fonctionnalité requièrent un identificateur de culture complet dans leur nom, vous devez sélectionner l'ID de culture dans la liste qui spécifie la culture complète. Par exemple, sélectionnez Japonais (Japon) au lieu de Japonais.

  5. Modifiez les valeurs de chaîne dans le fichier de ressources localisé de sorte qu'elles soient différentes ce celles contenues dans le fichier de ressources de fonctionnalité par défaut.

  6. Double-cliquez sur le fichier Feature1.feature pour l'ouvrir dans le Concepteur de fonctionnalités.

  7. Remplacez le texte dans la zone Titre par $Resources:String1.

  8. Remplacez le texte dans la zone Description par $Resources:String2.

  9. Appuyez sur F5 pour générer et exécuter la solution.

  10. Dans la page SharePoint, cliquez sur Paramètres du site sous l'onglet Actions du site.

  11. Cliquez sur le lien Fonctionnalités de la collection de sites sous Administration de la collection de sites.

  12. Dans l'angle supérieur de la page Administration de la collection de sites, cliquez sur la flèche de déroulement en regard de votre nom et sélectionnez la langue localisée. Le titre et la description de la fonctionnalité apparaissent avec les chaînes de ressources localisées.

  13. Rétablissez la langue par défaut et fermez la page SharePoint.

Voir aussi

Tâches

Comment : ajouter un fichier de ressources

Autres ressources

Comment : localiser une fonctionnalité

Comment : localiser le balisage ASPX

Comment : localiser du code