Partager via


Interface utilisateur multilingue

Dernière modification : mercredi 1 décembre 2010

S’applique à : SharePoint Foundation 2010

Dans cet article
Terminologie de l’interface utilisateur multilingue
Activation de la prise en charge pour les autres langues
Modification de la langue d’affichage
Comment localiser le texte affiché
Ajout de traductions aux ressources utilisateur

La fonctionnalité d’interface utilisateur multilingue de Microsoft SharePoint Foundation 2010 offre aux utilisateurs la possibilité de modifier la langue de l’interface utilisateur d’un site Web.

Par exemple, un utilisateur de langue espagnole qui utilise une interface utilisateur en anglais peut modifier la langue de l’interface en espagnol. Les barres d’outils, barres de navigation, titres de liste et en-têtes de colonne du site apparaîtront en espagnol. De même, un utilisateur de langue arable peut choisir de travailler avec une interface utilisateur en arabe. Dans ce cas, les barres d’outils, barres de navigation, titres de listes et en-têtes de colonne s’afficheront en arabe et le texte sera orienté de droite à gauche.

Pour que ces modifications soient possibles, les langues doivent être disponibles au travers de packs de langue installés sur les serveurs où SharePoint Foundation 2010 est lui-même installé et le propriétaire du site SharePoint Foundation doit activer les langues comme langues de substitution du site.

Les packs de langue offrent les traductions du texte de l’interface utilisateur fourni avec SharePoint Foundation 2010. Le texte que les utilisateurs ajoutent à un site Web après sa création peut également être localisé. Même si SharePoint Foundation 2010 ne propose pas de prise en charge pour la localisation du contenu des éléments de liste, il prend bel et bien en charge la localisation du chrome d’une liste, notamment le titre de la liste et la description, les en-têtes de colonne, les noms et les descriptions des types de contenu personnalisé utilisés sur la liste, et le texte affiché utilisé dans les extensions pour dresser la liste des menus. Lorsque vous personnalisez l’interface utilisateur du site Web lui-même, peut-être en ajoutant des nœuds à la barre de navigation supérieure ou à la zone de lancement rapide, ou en ajoutant des extensions au ruban, vous pouvez aussi ajouter les traductions du texte affiché de ces nouveaux éléments dans l’ensemble des langues prises en charge par le site. Tout texte d’interface utilisateur personnalisable peut être aussi pris en charge par les ressources linguistiques créées par l’utilisateur.

Terminologie de l’interface utilisateur multilingue

Les sections suivantes définissent la terminologie standard associée à l’interface utilisateur multilingue de SharePoint Foundation.

Langue de référence

La langue dans laquelle SharePoint Foundation a été installé est appelée langue de référence. Il s’agit de la langue utilisée par l’application Administration centrale, ainsi que de la langue par défaut dans laquelle les sites Web et les collections de sites sont créés dans toute la batterie.

Vous pouvez déterminer la langue de référence à l’aide du modèle objet SharePoint Foundation. La propriété statique GlobalServerLanguage de la classeSPRegionalSettings retourne un objet SPLanguage avec les informations sur le nom complet de la langue de référence et son ID de paramètres régionaux. Pour obtenir la liste des ID de paramètres régionaux, voir la propriété SPLocale.LCID.

Langues installées

Une langue installée désigne la langue de référence ou une langue ajoutée par l’administrateur aux serveurs de la batterie en en téléchargeant et en installant un pack de langues.

Notes

Pour obtenir la liste des packs de langue disponibles, voir Packs de langue pour SharePoint Foundation 2010.

La propriété statique GlobalInstalledLanguages de la classe SPRegionalSettings class renvoie un objet SPLanguageCollection que vous pouvez énumérer pour connaître les packs de langue installés. Chaque objet SPLanguage de la collection possède des informations sur le nom complet et l’ID de paramètres régionaux d’une langue installée.

Langue par défaut

Lorsque les propriétaires de sites Web ou les administrateurs de collections de sites créent des sites Web ou de nouvelles collections de sites, ils peuvent choisir une langue. Cette sélection devient la langue par défaut du nouveau site Web ou, dans le cas d’une nouvelle collection de sites, la langue par défaut du site Web racine. La langue par défaut est utilisée pour le texte de l’interface utilisateur créé automatiquement quand un site Web est mis en service. Elle est également la langue utilisée pour le texte non traduit de l’interface utilisateur ajouté à un site Web prenant en charge plusieurs langues.

La propriété UICulture de la classe SPWeb renvoie un objet CultureInfoavec les informations sur la langue par défaut.

Autres langues

Le propriétaire d’un site Web peut spécifier les langues installées prises en charge par le site. Les utilisateurs qui accèdent au site peuvent alors modifier la langue d’affichage de l’interface utilisateur en l’une de ces autres langues.

La propriété SupportedUICultures de la classe SPWeb renvoie une collection énumérable d’objets CultureInfo avec les informations sur les langues prises en charge par l’interface utilisateur du site Web. Cette collection inclut un objet pour la langue par défaut ainsi que pour les objets des autres langues.

Notes

Si l’interface utilisateur multilingue n’a pas été activée pour un site Web, la collection renvoyée par la propriété SupportedUICultures ne contient qu’un seul objet CultureInfo, et représente la langue par défaut. Vous pouvez déterminer si l’interface utilisateur multilingue est activée en obtenant la valeur de la propriété IsMultilingual.

Ressources utilisateur

Tout texte d’interface utilisateur qui peut être personnalisé dans SharePoint Foundation est soutenu par une collection de chaînes, une chaîne pour chaque langue prise en charge par le site Web. Une collection de chaînes localisables créées par l’utilisateur est appelée ressource utilisateur.

Dans le modèle objet SharePoint Foundation, une ressource utilisateur est représentée par une instance de la classe SPUserResource. Par exemple, le texte affiché d’un titre de liste est fourni par la propriété Title de l’objet SPList qui représente la liste. La propriété Title, à son tour, obtient sa valeur d’un objet SPUserResource renvoyé par la propriété TitleResource de la liste.

Quand le nouveau texte de l’interface utilisateur est ajouté à un site Web après sa création, l’objet SPUserResource qui supporte le texte renvoie la même valeur – la valeur initiale – pour toutes les langues jusqu’à ce que de nouvelles traductions soient ajoutées.

Notes

Les ressources utilisateur ne sont pas les mêmes que les fichiers de ressources linguistiques (.resx). Les fichiers de ressources linguistiques sont spécifiques à une langue. Ils contiennent de nombreux éléments de texte en une seule langue. Les objets SPUserResource, en revanche, sont spécifiques au texte. Ils contiennent les représentations d’un élément de texte en plusieurs langues.

Activation de la prise en charge pour les autres langues

Le propriétaire d’un site Web peut activer l’interface utilisateur multilingue en accédant à la page Paramètres de langue (/_layouts/muisetng.aspx) de l’interface utilisateur. (Cliquez sur Actions du site, Paramètres du site. Sous Administration du site, cliquez sur Paramètres de langue.) Les langues installées sont répertoriées dans le groupe Autre(s) langue(s). Les autres langues actuellement prises en charge par le site Web présentent des cases cochées en regard de leurs noms. Pour ajouter ou supprimer la prise en charge d’une langue, activez ou désactivez la case à cocher.

Vous pouvez utiliser le modèle objet SharePoint Foundation pour effectuer la même action en obtenant une référence à un objet SPWeb, en définissant sa propriété IsMultilingual avec la valeur true, puis en appelant la méthode AddSupportedUICulture pour ajouter ou prendre en charge une ou plusieurs autres langues ou la méthode RemoveSupportedUICulture pour supprimer la prise en charge. La procédure d’ajout de la prise en charge d’une autre langue est illustrée par l’application console suivante :

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Microsoft.SharePoint;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.RootWeb)
                {

                    // A website can be created from a template that does not support MUI.
                    SPWebTemplateCollection templates = site.GetWebTemplates(web.Language);
                    SPWebTemplate template = templates[web.WebTemplate];
                    if (template.SupportsMultilingualUI)
                    {

                        // Enable MUI.
                        web.IsMultilingual = true;

                        // Add support for any installed language currently not supported.
                        SPLanguageCollection installed = SPRegionalSettings.GlobalInstalledLanguages;
                        IEnumerable<CultureInfo> supported = web.SupportedUICultures;

                        foreach (SPLanguage language in installed)
                        {
                            CultureInfo culture = new CultureInfo(language.LCID);

                            if (!supported.Contains(culture))
                            {
                                Console.WriteLine("Adding {0}", culture.Name);
                                web.AddSupportedUICulture(culture);
                            }
                        }
                        web.Update();
                    }
                }
            }
            Console.Write("\nPress ENTER to continue....");
            Console.Read();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Threading
Imports Microsoft.SharePoint

Module ConsoleApp

    Sub Main()
        Using site As New SPSite("https://localhost")
            Using web As SPWeb = site.RootWeb

                ' A website can be created from a template that does not support MUI.
                Dim templates As SPWebTemplateCollection = site.GetWebTemplates(web.Language)
                Dim template As SPWebTemplate = templates(web.WebTemplate)

                If template.SupportsMultilingualUI Then

                    ' Enable MUI.
                    web.IsMultilingual = True

                    ' Add support for any installed language currently not supported.
                    Dim installed As SPLanguageCollection = SPRegionalSettings.GlobalInstalledLanguages
                    Dim supported As IEnumerable(Of CultureInfo) = web.SupportedUICultures

                    For Each language As SPLanguage In installed
                        Dim culture As New CultureInfo(language.LCID)

                        If Not supported.Contains(culture) Then
                            Console.WriteLine("Adding {0}", culture.Name)
                            web.AddSupportedUICulture(culture)
                        End If
                    Next
                    web.Update()
                End If

            End Using
        End Using
        Console.Write(vbCrLf & "Press ENTER to continue....")
        Console.Read()
    End Sub

End Module

Notez que l’application console vérifie si le site Web est fondé sur un modèle Web qui prend en charge l’interface utilisateur multilingue. Il est possible de créer un modèle Web qui ne prend pas en charge les autres langues. Pour plus d’informations, voir l’attribut SupportsMultilingualUI dans Configuration, élément (Site) et la propriété SupportsMultilingualUI de la classe SPWebTemplate.

Pour des raisons de simplicité, l’application console n’entoure pas le code qui définit la propriété IsMultilingual avec un bloc try-catch. Il le faudrait. La tentative de définition de la propriété IsMultilingual avec la valeur true lève une exception SPException si le site Web a personnalisé les feuilles de style en cascade (CSS). Vous ne pouvez pas activer la prise en charge d’autres langues sur un site utilisant les fichiers CSS personnalisés.

Une tâche courante très similaire à celle du dernier exemple consiste à répliquer l’ensemble des autres langues d’un site Web sur un sous-site. Cette action est nécessaire parce que chaque nouveau site Web est créé avec une langue par défaut, mais sans autres langues. Pour répliquer sur un sous-site la prise en charge des autres langues d’un site Web, il suffit d’énumérer la collection renvoyée par la propriété SupportedUICultures du site Web parent et d’ajouter la prise en charge de chaque culture au site Web enfant en appelant la méthode AddSupportedUICulture du site Web enfant.

Modification de la langue d’affichage

Dans SharePoint Foundation 2010, quand l’utilisateur accède à un site Web multilingue, le site Web utilise l’en-tête Accept-Language que le client envoie avec la demande HTTP pour déterminer dans quelle langue l’interface utilisateur doit être rendue. Au cas où le site Web ne prendrait en charge aucune des langues spécifiées par le navigateur, la langue par défaut est utilisée comme langue d’affichage.

Un site Web multilingue affiche aussi un menu déroulant dans le coin supérieur droit de la page, à côté du nom de l’utilisateur, et au sein duquel les utilisateurs peuvent sélectionner une langue d’affichage. Quand une personne choisit une langue différente de la langue d’affichage courante, le site Web bascule vers la nouvelle langue. La préférence de l’utilisateur demeure stockée dans un cookie déposé sur le client. Le site Web récupère la préférence de langue de l’utilisateur à partir du cookie, lors des visites suivantes du site.

L’interface utilisateur pour obtenir la préférence linguistique d’un utilisateur est implémentée par un contrôle PersonalActions en haut de la plupart des pages. Ce contrôle appelle la méthode Page.RegisterStartupScript pour placer le balisage suivant dans le code HTML envoyé au navigateur client.

<script type ="text/javascript"> 
// <![CDATA[
function OnSelectionChange(value)
{
    var today = new Date();
    var oneYear = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000);
    var url = window.location.href;
    document.cookie = "lcid=" + value + ";path=/;expires=" + oneYear.toGMTString();
    window.location.href = url;
}
// ]]>
</script>

Une fois que la langue d’affichage a été déterminée, SharePoint Foundation démarre un thread pour gérer le demande et définit la propriété Thread.CurrentUICulture du thread pour refléter la sélection de la langue. Lorsque vous écrivez le code qui s’exécutera sur le serveur – dans un composant WebPart, par exemple – vous pouvez obtenir la langue d’affichage du contexte HTTP en cours en accédant à la propriété statique CultureInfo.CurrentUICulture.

L’exemple suivant illustre une application console simple qui démontre comment la modification de la langue d’affichage affecte le texte affiché. L’application énumère la liste des cultures prises en charge par un site Web, définit la valeur de la propriété CurrentUICulture du thread courant avec chaque culture prise en charge, l’une après l’autre, et affiche le titre du site Web tel qu’il apparaît dans la langue d’affichage active.

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Threading;
using Microsoft.SharePoint;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.RootWeb)
                {
                    if (web.IsMultilingual)
                    {
                        IEnumerable<CultureInfo> cultures = web.SupportedUICultures;
                        foreach (CultureInfo culture in cultures)
                        {
                            // Change the UI culture of the thread.
                            Thread.CurrentThread.CurrentUICulture = culture;
 
                            // Print the name of the current language and the web title in the current language.
                            Console.WriteLine("{0}  {1}", CultureInfo.CurrentUICulture.Name, web.Title); 
                        }
                    }
                }
            }
            Console.WriteLine("\nPress ENTER to continue....");
            Console.Read();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Threading
Imports Microsoft.SharePoint

Module ConsoleApp

    Sub Main()
        Using site As New SPSite("https://localhost")
            Using web As SPWeb = site.RootWeb

                If web.IsMultilingual Then
                    Dim cultures As IEnumerable(Of CultureInfo) = web.SupportedUICultures
                    For Each culture As CultureInfo In cultures

                        ' Change the UI culture of the thread.
                        Thread.CurrentThread.CurrentUICulture = culture

                        ' Print the name of the current language and the web title in the current language.
                        Console.WriteLine("{0}  {1}", CultureInfo.CurrentUICulture.Name, web.Title)
                    Next
                End If

            End Using
        End Using
        Console.Write(vbCrLf & "Press ENTER to continue....")
        Console.Read()
    End Sub

End Module

Comment localiser le texte affiché

Les ressources linguistiques localisées pour le texte d’interface utilisateur fourni par Microsoft sont assurées par un ensemble de fichiers de ressources spécifiques à une culture et installés sur chaque serveur Web de la batterie. Quand un nouveau site Web est créé, SharePoint Foundation ouvre un fichier de ressources pour la langue par défaut du site, recherche le texte requis et le stocke sur les objets qui représentent le texte affiché de l’interface utilisateur. Lorsque d’autres langues sont ajoutées au site, le même processus est utilisé pour obtenir les traductions du texte d’interface utilisateur fourni par Microsoft.

Tout élément de l’interface utilisateur que les utilisateurs peuvent personnaliser est supporté par une ressource utilisateur, un objet SPUserResource capable de stocker les traductions fournies par l’utilisateur pour chacune des langues prises en charge par un site Web. Par exemple, la propriété Title d’un objet SPField fournit le nom complet de la colonne d’une liste. Cette propriété est étroitement associée à TitleResource, propriété en lecture seule qui renvoie un objet SPUserResource. Quand vous obtenez la propriété Title, elle renvoie TitleResource.Value. Quand vous définissez la propriété Title, elle définit TitleResource.Value. Autrement dit, l’obtention ou la définition de la propriété Title d’un objet SPField est équivalente à l’obtention ou à la définition de la propriété Value d’un objet SPUserResource.

La propriété SPUserResource.Value est très intéressante. Le code source de la propriété est similaire au code suivant :

public string Value 
{
    get
    {
        return GetValueForUICulture(Thread.CurrentThread.CurrentUICulture);
    }
    set
    {
        SetValueForUICulture(Thread.CurrentThread.CurrentUICulture, value);
    }
}

L’obtention ou la définition de la propriété Value appelle l’une des deux méthodes publiques de la classe SPUserResource, GetValueForUICulture ou SetValueForUICulture, en passant à chaque fois un objet CultureInfo qui représente la culture du thread courant.

La classe SPUserResource gère un dictionnaire qui fait correspondre un ensemble de clés (langues) et un ensemble de valeurs (traductions). Les méthodes GetValueForUICulture et SetValueForUICulture recherchent les entrées du dictionnaire par langue et obtiennent ou définissent la valeur de chaîne pour la langue.

Valeurs initiales des ressources utilisateur

Les nouveaux objets SPUserResource sont créés avec au moins une valeur, la valeur de la langue par défaut du site Web. La valeur utilisée pour la langue par défaut peut, de fait, ne pas être dans la langue par défaut. Il s’agit de n’importe quelle chaîne utilisée pour créer le texte affiché que supporte la ressource utilisateur, quelle que soit la langue qui a été utilisée lorsque le texte d’affichage a été créé.

Par exemple, quand un utilisateur crée une liste, une chaîne contenant le titre de liste doit être passée comme argument au constructeur de la classe SPList. Quand la propriété TitleResource est initialisée dans l’objet SPList, cette même chaîne de titre est passée comme argument au constructeur d’un objet SPUserResource. Le code du constructeur SPUserResource crée une entrée initiale dans le dictionnaire des valeurs de l’objet, en utilisant la langue par défaut du site Web comme clé de l’entrée et la chaîne titre comme valeur initiale.

Cette valeur initiale devient particulièrement importante quand il s’agit de la seule valeur de la ressource utilisateur. La méthode GetValueForUICulture renvoie la valeur de la langue par défaut quand un appel de la méthode spécifie une langue qui n’existe pas dans le dictionnaire de la ressource. En conséquence, la valeur de la langue par défaut est utilisée pour l’ensemble du texte non traduit.

Les objets qui consomment les ressources utilisateur peuvent être initialisés avec les valeurs de fichiers de ressources spécifiques à la langue (.resx) si les objets sont créés par une fonctionnalité qui déploie également les fichiers ressources. Pour plus d’informations, voir Localisation de solutions SharePoint.

Consommation de ressources utilisateur par les éléments de l’interface utilisateur

Le modèle objet SharePoint Foundation possède six classes ayant des propriétés qui retournent un objet SPUserResource :

Le tableau suivant recense les propriétés qui renvoient les objets SPUserResource et décrit où sont consommées les ressources.

Propriété

Description

SPContentType.DescriptionResource

Source de la chaîne renvoyée par la propriété SPContentType.Description, qui fournit le texte décrivant le type de contenu.

SPContentType.NameResource

Source de la chaîne renvoyée par la propriété SPContentType.Name, qui fournit le nom complet d’un type de contenu.

SPField.DescriptionResource

Source de la chaîne renvoyée par la propriété SPField.Description, qui fournit le texte décrivant la colonne.

SPField.TitleResource

Source de la chaîne renvoyée par la propriété SPField.Title, qui fournit le nom complet de la colonne.

SPList.DescriptionResource

Source de la chaîne renvoyée par la propriété SPList.Description, qui fournit le texte décrivant la liste.

SPList.TitleResource

Source de la chaîne renvoyée par la propriété SPList.Title, qui fournit le nom complet de la liste.

SPNavigationNode.TitleResource

Source de la chaîne renvoyée par la propriété SPNavigationNode.Title, qui fournit le nom complet d’un nœud de navigation.

SPUserCustomAction.CommandUIExtensionResource

Source de la chaîne renvoyée par la propriété SPUserCustomAction.CommandUIExtension, qui fournit une représentation XML d’une action personnalisée utilisée sur le ruban.

SPUserCustomAction.DescriptionResource

Source de la chaîne renvoyée par la propriété SPUserCustomAction.Description, qui fournit le texte décrivant un contrôle de site, un contrôle Web ou un contrôle personnalisé d’étendue de liste.

SPUserCustomAction.TitleResource

Source de la chaîne renvoyée par la propriété SPUserCustomAction.Title, qui fournit le texte affiché pour la description d’un contrôle de site, d’un contrôle Web ou d’un contrôle personnalisé d’étendue de liste.

SPWeb.DescriptionResource

Source de la chaîne renvoyée par la propriété SPWeb.Description, qui fournit le texte décrivant un site Web.

SPWeb.TitleResource

Source de la chaîne renvoyée par la propriété SPWeb.Title, qui fournit le nom complet d’un site Web.

Deux propriétés supplémentaires renvoient les collections des ressources utilisateur dans un objet SPUserResourceCollection. La classe SPList possède une propriété UserResources qui contient les objets SPUserResource qui ont des ressources localisables utilisées par la liste ainsi que par des champs, des types de contenu et des actions utilisateur personnalisées associés à la liste. Si aucune partie du texte affiché de ces objets n’a été personnalisée, la propriété UserResources retourne une collection vide. Généralement, le texte affiché des listes standard telles que Annonces et Documents partagés n’est pas personnalisé, et par conséquent les propriétés UserResources de ces listes retournent souvent des collections vides.

La propriété UserResources de la classe SPWeb exécute une fonction similaire en retournant une collection d’objets SPUserResource ayant des ressources localisables utilisées par le site Web, ainsi que par les colonnes, les types de contenu, les nœuds de navigation et les actions utilisateur personnalisées associés au site Web. Les objets retournés dans la collection représentent uniquement le texte affiché personnalisé par les utilisateurs (développeurs et administrateurs inclus) du site Web.

Mélange de langues

Plusieurs circonstances peuvent créer une expérience de mélange de langues sur un site Web. La circonstance la plus manifeste se produit quand les utilisateurs du site le personnalisent en y ajoutant de nouveaux éléments, tels qu’une nouvelle liste ou un nouveau nœud de navigation, sans fournir également les traductions des ressources utilisateur associées à ces éléments.

Autre cas de mélange de langues, celui de certaines éléments intégrés de l’interface utilisateur. Les messages d’erreur, les notifications et certaines boîtes de dialogue peuvent ne pas apparaître dans la langue d’affichage courante. La raison en est que SharePoint Foundation s’appuie sur plusieurs technologies de prise en charge – par exemple, Microsoft .NET Framework, Windows Workflow Foundation et Microsoft ASP.NET – dont certaines ne sont localisées qu’en un nombre réduit de langues. Si un élément d’interface utilisateur généré par l’une des technologies de prise en charge n’est pas localisé dans la langue spécifiée pour le site par son propriétaire, il s’affiche dans la langue dans laquelle la technologie de prise en charge a été installée (à savoir, sa langue de référence).

Enfin, une expérience de mélange de langues peut se produire avec certains éléments de l’interface utilisateur administrative. Dans quelques cas, le texte de l’interface utilisateur peut s’afficher dans la langue dans laquelle SharePoint Foundation a été installé. Ce type de cas de mélange des langues n’est généralement rencontré que par les propriétaires ou les administrateurs de site et n’est pas visible des utilisateurs du site.

Ajout de traductions aux ressources utilisateur

La solution la plus simple pour ajouter une traduction à la ressource utilisateur pour le texte de l’interface utilisateur personnalisée consiste à recourir aux services d’un locuteur bilingue pour naviguer jusqu’au site Web, à basculer vers l’une des autres langues et à traduire le texte en le modifiant directement dans l’interface utilisateur administrative. Par exemple, pour traduire le titre et la description d’une liste, cliquez sur Paramètres de la liste sur le ruban. Sous Paramètres généraux, cliquez sur Titre, description et navigation, puis modifiez le texte des zones Nom et Description. Les modifications effectuées dans une autre langue sont enregistrées comme valeur de cette langue dans la ressource utilisateur qui soutient le texte.

Le propriétaire d’un site Web peut aussi organiser la traduction en masse des ressources utilisateur en exportant les chaînes non traduites vers un fichier de ressources (.resx) pour chacune des autres langues que le site prend en charge. Les fichiers de ressources peuvent être remis aux traducteurs qui effectuent alors le travail hors connexion. Une fois celui-ci terminé, le propriétaire peut importer les fichiers de ressources. SharePoint Foundationajoutera les traductions aux ressources utilisateur appropriées.

L’opération d’exportation peut s’effectuer dans l’interface utilisateur depuis la page Exporter les traductions (_layouts/exporttranslations.aspx). Les traductions achevées peuvent être importées depuis la page Importer les traductions (_layouts/importtranslations.aspx). Une autre solution consiste à ce que vous écriviez votre propre code pour les deux opérations. Votre code peut appeler la méthode ExportUserResources de la classe SPWeb et enregistrer le résultat dans un fichier de ressources. Lorsque les chaînes sont traduites, vous pouvez les importer en appelant la méthode ImportUserResources. La documentation des deux méthodes inclut des exemples de code.

Une meilleure solution, du point de vue d’un développeur, consiste à effectuer les traductions à l’avance, avant de déployer une nouvelle fonctionnalité sur un site Web multilingue. Vous pouvez créer des fichiers de ressources spécifiques à la langue, les référencer dans Langage CAML (Collaborative Application Markup Language), les incluez dans une solution SharePoint et les déployez sur un site Web ou une collection de sites. SharePoint Foundation peut alors utiliser les fichiers de ressources pour remplir les objets que votre fonctionnalité crée SPUserResource. Pour plus d’informations, voir Localisation de solutions SharePoint.

Autorisation de modifications pour remplacer les traductions

La page Paramètres de langue (_layouts/muisetng.aspx) offre aux propriétaires de site la possibilité de remplacer les traductions existantes par d’autres langues, lorsque les modifications sont effectuées dans la langue par défaut. Les cases d’option Oui et Non de la page définissent la propriété OverwriteTranslationsOnChange de la classe SPWeb avec la valeur true ou false. Le paramètre par défaut est false (Non dans l’interface utilisateur).

Si la propriété OverwriteTranslationsOnChange est définie avec la valeur true (Oui dans l’interface utilisateur) et que, par exemple, un utilisateur qui travaille dans la langue par défaut modifie le texte de l’en-tête d’une colonne de liste, toutes les valeurs de la propriété TitleResource qui constitue la source de l’en-tête de colonne sont automatiquement réinitialisées. Les traductions existantes en d’autres langues sont remplacées par le nouveau texte de la langue par défaut. Autrement dit, le texte n’a plus de traductions.

Si la propriété retourne false, les traductions en une autre langue sont conservées quand la version de la langue par défaut change. Dans ce cas, le texte dans l’autre langue peut ne plus être une traduction valide de la langue par défaut source.

Aussi convient-il de fait de choisir entre un texte plus compréhensible (choisir Non) ou plus précis (choisir Oui).

Voir aussi

Tâches

Procédure pas à pas : localisation d’un composant WebPart

Procédure : localisation des colonnes, types de contenu et listes

Référence

SupportsMultilingualUI

SPWeb.IsMultilingual

SPWeb.Language

Thread.CurrentUICulture