Services de traduction automatique dans SharePoint

Découvrez le Service de traduction automatique, qui est une nouvelle application de service dans SharePoint qui fournit une traduction automatique des fichiers et des sites.

Vue d’ensemble du Service de traduction automatique

Notes

L'utilisation de la traduction automatique permet aux utilisateurs d'envoyer à Microsoft du contenu à traduire. Microsoft est susceptible d'utiliser du contenu envoyé par les utilisateurs pour améliorer la qualité des traductions. Si vous utilisez le service de traduction automatique dans votre application, il est de votre responsabilité d'informer les utilisateurs que cette application permettra aux utilisateurs d'envoyer du contenu à traduire à Microsoft et que Microsoft peut utiliser le contenu envoyé par les utilisateurs pour améliorer la qualité des traductions. Voir la page relative à la confidentialité de Microsoft Translator pour plus d'informations.

Service de traduction automatique est une nouvelle application de service dans SharePoint qui fournit une traduction automatique des fichiers et des sites. Lorsque l'application Service de traduction automatique traite une demande de traduction, il transfère la demande dans le service de traduction automatique Microsoft Translator hébergé sur le cloud, où le travail réel de traduction est effectué. Ce service cloud alimente également les fonctionnalités de traduction de Microsoft Office, Lync, Yammer et Bing.

L'application Service de traduction automatique traite les demandes de traduction asynchrone et synchrone. Traduction asynchrone sont traitées lors de l'exécution du travail du minuteur traduction. L'intervalle par défaut du travail du minuteur de traduction est de 15 minutes. Vous pouvez gérer ce paramètre dans l'Administration centrale ou à l'aide de Windows PowerShell. Vous pouvez également définir le minuteur pour exécuter immédiatement à l'aide de la commande suivante :


$tj = get-sptimerjob "SharePoint Translation Services"
$tj.Runnow()

Traduction synchrone sont traitées dès qu'ils sont soumis.

Composants partagés avec Word Automation Services

L'architecture Service de traduction automatique partage plusieurs composants de l'architecture Microsoft Word Automation Services. Pour plus d'informations sur l'architecture Word Automation Services, voir Word Automation Services Architecture.

Le modèle d'objet Service de traduction automatique prend comme modèle le modèle d'objet Word Automation Services, afin que si vous êtes habitué à programmation Word Automation Services, vous trouverez des similitudes avec la programmation par rapport au modèle d'objet Service de traduction automatique.

Utilisation du modèle objet serveur du Service de traduction automatique

Les applications qui utilisent le modèle objet serveur doivent exécuter directement sur un serveur exécutant SharePoint. Pour plus d'informations sur la création d'applications qui peuvent être hébergées à distance, voir Utilisation du modèle objet serveur du Service de traduction automatique plus loin dans cette rubrique. Le modèle objet serveur du Service de traduction automatique se trouve dans l'espace de noms Microsoft.Office.TranslationServices, qui se trouve dans Microsoft.Office.TranslationServices.dll.

Utilisation du modèle d'objet de serveur, vous pouvez soumettre des demandes à l'application Service de traduction automatique asynchrone ou synchrone (pour traduction instantanée). L'application Service de traduction automatique comporte deux files d'attente de travail pour stocker les demandes de traduction : la file d'attente asynchrone et la file d'attente synchrone. Demandes dans la file d'attente synchrone sont traités comme une priorité plus élevée et sont converties avant demandes dans la file d'attente asynchrone. Les demandes sont routés à un de ces files d'attente en fonction de la classe que vous utilisez.

Extraits de code et exemples d’applications associés

Pour un exemple de code montrant comment utiliser le modèle objet serveur à partir d’une application console, consultez SharePoint : Accéder au Service de traduction automatique avec le modèle objet serveur.

Traduction asynchrone avec le modèle objet serveur

La classe TranslationJob définit un ensemble d'éléments à traduire. Cela peut être un fichier unique ou tous les fichiers dans une bibliothèque de documents ou un dossier. Projets de traduction qui sont envoyés de cette manière sont stockés dans la base de données de traduction. Chaque fois que le travail du minuteur traduction s'exécute, il prend certains des projets à partir de la base de données de traduction et les ajoute à la file d'attente asynchrone à traduire. L'intervalle par défaut du travail du minuteur de traduction est de 15 minutes.

Le code suivant montre comment traduire un fichier unique asynchrone.


SPServiceContext sc = SPServiceContext.GetContext(new SPSite(site));
TranslationJob job = new TranslationJob(sc, CultureInfo.GetCultureInfo(culture)); 
job.AddFile(input, output);
job.Start(); 

Le code suivant montre comment traduire tous les fichiers dans un dossier de manière asynchrone.


SPServiceContext sc = SPServiceContext.GetContext(new SPSite(site));
TranslationJob job = new TranslationJob(sc, CultureInfo.GetCultureInfo(culture));
using (SPSite siteIn = new SPSite(inputFolder))
{
    using (SPWeb webIn = siteIn.OpenWeb())
    {
        using (SPWeb webOut = siteOut.OpenWeb())
        {
            SPFolder folderIn = webIn.GetFolder(inputFolder);
            SPFolder folderOut = webOut.GetFolder(outputFolder);                    
            job.AddFolder(folderIn, folderOut, true);
            job.Start();
        }
    }
}

Le code suivant montre comment traduire asynchrone chaque fichier dans une bibliothèque de documents.


SPServiceContext sc = SPServiceContext.GetContext(new SPSite(site));
TranslationJob job = new TranslationJob(sc, CultureInfo.GetCultureInfo(culture));
using (SPSite siteIn = new SPSite(inputList))
{
    using (SPWeb webIn = siteIn.OpenWeb())
    {
        using (SPSite siteOut = new SPSite(outputList))
        {
            using (SPWeb webOut = siteOut.OpenWeb())
            {
                SPDocumentLibrary listIn = (SPDocumentLibrary)webIn.GetList(inputList);
                SPDocumentLibrary listOut = (SPDocumentLibrary)webOut.GetList(outputList);
                job.AddLibrary(listIn, listOut);
                job.Start();
            }
        }
    }
}

Traduction synchrone avec le modèle objet serveur

La classe SyncTranslator vous permet de demander une traduction instantanée des fichiers et des flux de données. Demandes de traduction qui sont effectuées à l'aide de ce cours ne sont pas routés de la même façon que les demandes qui sont effectuées à l'aide de la classe TranslationJob. Ils sont immédiatement ajoutées à la file d'attente synchrone soient traités. La classe TranslationItemInfo contient les détails pour un seul élément est convertie en la Service de traduction automatique. La méthode SyncTranslator.Translate retourne une instance de cette classe dans des projets de traduction synchrone.

Le code suivant montre comment traduire un fichier unique synchrone.


SPServiceContext sc = SPServiceContext.GetContext(new SPSite(site));
SyncTranslator job = new SyncTranslator(sc, CultureInfo.GetCultureInfo(jobCulture));
TranslationItemInfo itemInfo = job.Translate(input, output);

Le code suivant montre comment traduire synchrone un flux de données.


SPServiceContext sc = SPServiceContext.GetContext(new SPSite(site));
SyncTranslator job = new SyncTranslator(sc, CultureInfo.GetCultureInfo(jobCulture));
FileStream inputStream = new FileStream(input, FileMode.Open);
FileStream outputStream = new FileStream(output, FileMode.Create);     
TranslationItemInfo itemInfo = job.Translate(inputStream, outputStream, fileFormat);
inputStream.Close();
outputStream.Flush();
outputStream.Close();

Le code suivant montre comment traduire une séquence d'octets synchrone.


SPServiceContext sc = SPServiceContext.GetContext(new SPSite(site));
SyncTranslator job = new SyncTranslator(sc, CultureInfo.GetCultureInfo(jobCulture));
Byte[] inputByte;
Byte[] outputByte;
inputByte = File.ReadAllBytes(input);
outputByte = null;
TranslationItemInfo itemInfo = job.Translate(inputByte, out outputByte, fileFormat);
FileStream outputStream = File.Open(output, FileMode.Create);
MemoryStream memoryStream = new MemoryStream(outputByte);
memoryStream.WriteTo(outputStream);
outputStream.Flush();
outputStream.Close();

Autorisations

Si la demande de traduction est en cours d'exécution pour l'utilisateur peut accéder au fichier à traduire et cet utilisateur peut accéder à l'emplacement de sortie pour le fichier, l'utilisateur désactive la vérification de la sécurité et le fichier est converti.

Utilisation du modèle objet client du Service de traduction automatique

Service de traduction automatique inclut également un modèle d'objet client (CSOM) qui autorise l'accès à la Service de traduction automatique API pour en ligne, en local et le développement mobile. Applications clientes peuvent utiliser la CSOM à accéder au serveur contenu et fonctionnalités. La CSOM mettent en œuvre, la plupart des fonctionnalités de traduction du serveur, mais le CSOM et le modèle objet côté serveur n'ont pas une disparités qui existent. Asynchrone traduction de fichiers individuels et les fichiers dans une bibliothèque de documents ou un dossier sont pris en charge. Traduction synchrone des fichiers est pris en charge, mais les flux de fichiers ne sont pas pris en charge.

Le modèle CSOM du service de traduction automatique comprend un modèle objet côté client managé .NET et des modèles objet Microsoft Silverlight et JavaScript. Par conséquent, code client accède d’abord au modèle CSOM de SharePoint puis au modèle CSOM du service de traduction automatique.

Pour plus d'informations sur la CSOM SharePoint, voir Modèle d'objet Client SharePoint 2010. Pour plus d'informations sur l'objet ClientContext, qui est le point d'entrée pour la CSOM, consultez Contexte Client en tant qu'objet Central.

Tableau 1 indique les objets équivalents qui fournissent les API CSOM pour les objets du serveur Service de traduction automatique.

Tableau 1. Modèle d'objet serveur API et leurs équivalents CSOM

Server .NET gérées et Silverlight JavaScript
Microsoft.Office.TranslationServices.TranslationJob
Microsoft.Office.TranslationServices.Client.TranslationJob
SP.Translation.TranslationJob
Microsoft.Office.TranslationServices.TranslationJobInfo
Microsoft.Office.TranslationServices.Client.TranslationJobInfo
SP.Translation.TranslationJobInfo
Microsoft.Office.TranslationServices.TranslationItemInfo
Microsoft.Office.TranslationServices.Client.TranslationItemInfo
SP.Translation.TranslationItemInfo
Microsoft.Office.TranslationServices.TranslationJobStatus
Microsoft.Office.TranslationServices.Client.TranslationJobStatus
SP.Translation.TranslationJobStatus
Microsoft.Office.TranslationServices.SyncTranslator
Microsoft.Office.TranslationServices.Client.SyncTranslator
SP.Translation.SyncTranslator

Modèle CSOM managé .NET du Service de traduction automatique et modèle SCOM Silverlight

Pour .NET gérés CSOM, obtenir une instance de ClientContext (située dans l'espace de noms Microsoft.SharePoint.Client dans la plus grande partie). Utiliser le modèle d'objet dans l'espace de noms Microsoft.Office.TranslationServices.Client dans la Microsoft.Office.TranslationServices.Client.dll.

Extraits de code et exemples d’applications associés

Pour un exemple de code montrant comment utiliser le modèle SCOM managé .NET, consultez SharePoint : Accéder au Service de traduction automatique avec le modèle objet client.

Pour le Silverlight CSOM, obtenir une instance de ClientContext (située dans l'espace de noms Microsoft.SharePoint.Client dans le Microsoft.SharePoint.Client.Silverlight.dll). Utiliser le modèle d'objet dans l'espace de noms Microsoft.Office.TranslationServices.Client dans la Microsoft.Office.TranslationServices.Silverlight.dll.

Extraits de code et applications d’exemple connexes

Pour un exemple de code montrant comment utiliser le modèle SCOM Silverlight, consultez SharePoint : Accéder au Service de traduction automatique à partir de l’application Silverlight.

Pour traduire un seul fichier asynchrone :


ClientContext clientContext = new ClientContext("http://serverName/sites/siteCollectionPath");
string culture  = "cultureID";
string name = "translationJobName";
string  inputFile =  "http://serverName/path/inputFileName";
string outputFile = "http://serverName/path/outputFileName";
TranslationJob job = new TranslationJob(clientContext , culture);
job.AddFile(inputFile , outputFile);
job.Name = name;
job.Start();
clientContext.Load(job);
clientContext.ExecuteQuery();
//To retrieve the translation job ID.
string jobID = job.JobId;

Pour traduire un dossier asynchrone :


ClientContext clientContext = new ClientContext("http://serverName/sites/siteCollectionPath");
string culture = "cultureID";
string name = "translationJobName";
string inputFolder = clientContext.Web.GetFolderByServerRelativeUrl("inFolderPath");
string outputFolder = clientContext.Web.GetFolderByServerRelativeUrl("outFolderPath");  
TranslationJob job = new TranslationJob(clientContext , culture);
job.AddFolder(inputFolder, outputFolder, true);
job.Name = name;
job.Start();            
clientContext.Load(job);
clientContext.ExecuteQuery();
//To retrieve the translation job ID.
string jobID = job.JobId;

Pour convertir une bibliothèque de manière asynchrone :


ClientContext clientContext = new ClientContext("http://serverName/sites/siteCollectionPath");
string culture = "cultureID";
string name = "translationJobName";
string inputLibrary = clientContext.Web.Lists.GetByTitle("inputLibraryName");
string outputLibrary = clientContext.Web.Lists.GetByTitle("outputLibraryName");
TranslationJob job = new TranslationJob(clientContext , culture);
job.AddFolder(inputLibrary , outputLibrary , true);
job.Name = name;
job.Start();            
clientContext.Load(job);
clientContext.ExecuteQuery();
//To retrieve the translation job ID.
string jobID = job.JobId;

Pour traduire un fichier unique synchrone :


ClientContext clientContext = new ClientContext("http://serverName/sites/siteCollectionPath");
string culture = "cultureID"
string inputFile = "http://serverName/path/inputFileName";
string outputFile = "http://serverName/path/outputFileName";
SyncTranslator job = new SyncTranslator(clientContext , culture);
job.OutputSaveBehavior = SaveBehavior.AlwaysOverwrite;
ClientResult<TranslationItemInfo> cr = job.Translate(inputFile, outputFile );
clientContext.ExecuteQuery(); 
//To retrieve additional information about the translation job.
string errorCode = clientContext.Value.ErrorCode;
string errorMessage = clientContext.Value.ErrorMessage;
string translateID = clientContext.Value.TranslationId;
string succeedResult  = clientContext.Value.Succeeded;
string failResult  = clientContext.Value.Failed;
string cancelStatus = clientContext.Value.Canceled;
string inProgressStatus = clientContext.Value.InProgress;
string notStartedStatus = clientContext.Value.NotStarted;

Pour récupérer toutes les langues prises en charge par le Service de traduction automatique:


ClientContext clientContext = new ClientContext("http://serverName/sites/siteCollectionPath");
IEnumerable<string> supportedLanguages = TranslationJob.EnumerateSupportedLanguages(clientContext);
clientContext.ExecuteQuery();
foreach (string item in supportedLanguages)
{
    Console.Write(item + ", ");
}

Pour vérifier si une langue spécifique est prise en charge :


ClientContext clientContext = new ClientContext("http://serverName/sites/siteCollectionPath");
clientResult<bool> isSupported;
isSupported = TranslationJob.IsLanguageSupported(clientContext, "language");
clientContext.ExecuteQuery();

Pour récupérer toutes les extensions de nom de fichiers sont pris en charge par le Service de traduction automatique:


ClientContext clientContext = new ClientContext("http://serverName/sites/siteCollectionPath");
IEnumerable<string> fileExt = TranslationJob.EnumerateSupportedFileExtensions(clientContext);
clientContext.ExecuteQuery();
foreach (string item in fileExt)
{
    Console.Write(item + ", ");
}

Pour vérifier si une extension de nom de fichier spécifique est pris en charge :


ClientContext clientContext = new ClientContext("http://serverName/sites/siteCollectionPath");
clientResult<bool> isSupported;
isSupported = TranslationJob.IsFileExtensionSupported(clientContext, "fileExtension");
clientContext.ExecuteQuery();

Pour vérifier la limite de taille de fichier pour une extension de nom de fichier spécifique :


ClientContext clientContext = new ClientContext("http://serverName/sites/siteCollectionPath");
clientResult<int> maxSize;
maxSize = TranslationJob.GetMaximumFileSize(clientContext, "fileExtension");
clientContext.ExecuteQuery();

Modèle CSOM JavaScript du Service de traduction automatique

Pour le JavaScript CSOM, obtenir une instance de SP.ClientContext et utilisez le modèle d'objet dans le SP. Fichier Translation.js.

Extraits de code et applications d’exemple connexes

Pour un exemple de code montrant comment utiliser le modèle SCOM JavaScript, consultez SharePoint : Accès au Service de traduction automatique avec JavaScript.

Pour traduire un seul fichier asynchrone :


var asyncJob;
var clientContext = new SP.ClientContext("serverRelativeUrl");
var contextSite = clientContext.get_site();
asyncJob = SP.Translation.TranslationJob.newObject(clientContext, "cultureID");
asyncJob.set_outputSaveBehavior(SP.Translation.SaveBehavior.alwaysOverwrite);
asyncJob.addFile("inputFilePath", "outputFilePath");
asyncJob.set_name("translationJobName");
asyncJob.start();
clientContext.load(asyncJob);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededASync),Function.createDelegate(this, this.onQueryFailed));

Pour traduire un dossier asynchrone :


var asyncJob;
var clientContext = new SP.ClientContext("serverRelativeUrl");
var contextSite = clientContext.get_site();
asyncJob = SP.Translation.TranslationJob.newObject(clientContext, "cultureID");
asyncJob.set_outputSaveBehavior(SP.Translation.SaveBehavior.alwaysOverwrite);
var inputFolder = clientContext.get_web().getFolderByServerRelativeUrl("inputFilePath");
var outputFolder = clientContext.get_web().getFolderByServerRelativeUrl("outputFilePath");
asyncJob.addFolder(inputFolder, outputFolder, true);
asyncJob.set_name("translationJobName");
asyncJob.start();
clientContext.load(asyncJob);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededASync),Function.createDelegate(this, this.onQueryFailed));

Pour convertir une bibliothèque de manière asynchrone :


var asyncJob;
var clientContext = new SP.ClientContext("serverRelativeUrl");
var contextSite = clientContext.get_site();
asyncJob = SP.Translation.TranslationJob.newObject(clientContext, "cultureID");
asyncJob.set_outputSaveBehavior(SP.Translation.SaveBehavior.alwaysOverwrite);
var inputLibrary= clientContext.get_web().get_lists().getByTitle("inputFilePath");
var outputLibrary= clientContext.get_web().get_lists().getByTitle("outputFilePath");
asyncJob.addLibrary(inputLibrary, outputLibrary);
asyncJob.set_name("translationJobName");
asyncJob.start();
clientContext.load(asyncJob);
clientContext.executeQueryAsync(Function.createDelegate(this,this.onQuerySucceededASync),Function.createDelegate(this, this.onQueryFailed));

Pour traduire un fichier unique synchrone :


var result;
var clientContext = new SP.ClientContext("serverRelativeUrl");
var contextSite = clientContext.get_site();
var job = SP.Translation.SyncTranslator.newObject(clientContext, "cultureID");
job.set_outputSaveBehavior(SP.Translation.SaveBehavior.alwaysOverwrite);
result = job.translate("inputFilePath", "outputFilePath");
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededSync),
Function.createDelegate(this, this.onQueryFailed));

Pour récupérer toutes les langues prises en charge par le Service de traduction automatique:


var clientContext = new SP.ClientContext("serverRelativeUrl");
var contextSite = clientContext.get_site();
var result= SP.Translation.TranslationJob.enumerateSupportedLanguages(clientContext);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededListAllLang),Function.createDelegate(this, this.onQueryFailed));

Pour vérifier si une langue spécifique est prise en charge :


var clientContext = new SP.ClientContext("serverRelativeUrl");
var contextSite = clientContext.get_site();
var result= SP.Translation.TranslationJob.isLanguageSupported(clientContext," language");
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededTestLang),Function.createDelegate(this, this.onQueryFailed));

Pour récupérer toutes les extensions de nom de fichiers sont pris en charge par le Service de traduction automatique:


var clientContext = new SP.ClientContext("serverRelativeUrl");
var contextSite = clientContext.get_site();
var result= SP.Translation.TranslationJob.enumerateSupportedFileExtensions(clientContext);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededListAllFileExt),Function.createDelegate(this, this.onQueryFailed));

Pour vérifier si une extension de nom de fichier spécifique est prise en charge :


var clientContext = new SP.ClientContext("serverRelativeUrl");
var contextSite = clientContext.get_site();
var result= SP.Translation.TranslationJob.isFileExtensionSupported(clientContext," fileExtension");
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededTestFileExt),Function.createDelegate(this, this.onQueryFailed));

Service REST du Service de traduction automatique

SharePoint comprend un service Representational State Transfer (REST) qui vous permet d'interagir à distance avec l'application Service de traduction automatique à l'aide de n'importe quelle technologie qui prend en charge les demandes web REST. Pour obtenir des informations générales sur REST dans SharePoint, voir Utiliser les opérations de requête OData dans les demandes REST SharePoint.

API REST de traduction asynchrone

L'API REST pour effectuer la traduction asynchrone est la suivante :

http://serverName/_api/TranslationJob('language')

Pour traduire un seul fichier asynchrone :

http://serverName/_api/TranslationJob('language')/TranslateFile(inputFile='/path/intput file', outputFile='/path/output file')

Pour traduire un dossier asynchrone :

http://serverName/_api/TranslationJob('language')/TranslateFolder(inputFolder='/path/in', outputFolder='/path/out')

Pour convertir une bibliothèque de manière asynchrone :

http://serverName/_api/TranslationJob('language')/TranslateLibrary(inputLibrary='/LibraryName', outputLibrary='/LibraryName'')

API REST de traduction synchrone

Le service REST du service de traduction automatique prend uniquement en charge la traduction synchrone des fichiers. L’API pour cela est la suivante :

http://serverName/_api/SyncTranslator('language')/Translate(outputFile='/path/output file', inputFile='/path/input file')

Autres API REST du Service de traduction automatique

Le service reste Service de traduction automatique inclut API supplémentaires que vous pouvez utiliser pour récupérer des informations sur les fonctions d'applications Service de traduction automatique et l'état du travail de traduction.

Pour récupérer toutes les langues prises en charge par Service de traduction automatique:

http://serverName/_api/TranslationJob.EnumerateSupportedLanguages

Pour vérifier si une langue spécifique est pris en charge :

http://serverName/_api/TranslationJob.IsLanguageSupported('language')

Pour récupérer toutes les extensions de nom de fichier sont pris en charge par Service de traduction automatique:

http://serverName/_api/TranslationJob.EnumerateSupportedFileEXtensions

Pour vérifier si une extension de nom de fichier spécifique est pris en charge :

http://serverName/_api/TranslationJob.IsFileExtensionSupported('extension')

Pour vérifier la limite de taille de fichier pour une extension de nom de fichier spécifique :

http://serverName/_api/TranslationJob.GetMaximumFileSize('extension')

Pour récupérer une liste de toutes les tâches de traduction asynchrone :

http://serverName/_api/TranslationJobStatus.GetAllJobs

Pour récupérer une liste de toutes les tâches actives traduction asynchrone :

http://serverName/_api/TranslationJobStatus.GetAllActiveJobs

Pour récupérer les informations de document pour une tâche spécifique traduction asynchrone :

http://serverName/_api/TranslationJobStatus('jobid')/GetAllItems

Pour annuler un travail de traduction asynchrone :

http://serverName/_api/TranslationJob.CancelJob('jobid')

Conditions requises pour les documents Microsoft Word

Service de traduction automatique de SharePoint utilise la langue de paragraphe comme langue Source lorsqu'il convertit les documents Microsoft Word. Par exemple, si le paragraphe écrit en espagnol, mais la langue du paragraphe est définie sur anglais, le Service de traduction ne sera pas convertir en anglais. Il s'agit car il est déjà défini à l'anglais.

Pour définir la langue du paragraphe, suivez ces étapes :

  1. Sélectionnez le paragraphe.

  2. Cliquez sur l'onglet Révision du ruban.

  3. Cliquez sur langue dans le menu déroulant, puis sélectionnez Définir la langue de vérification.

Voir aussi