Partilhar via


Serviço de Tradução Automática no SharePoint

Aprenda sobre o Serviço de Tradução Automática, que é um novo aplicativo de serviço no SharePoint que fornece a tradução automática de arquivos e sites.

Visão geral do Serviço de Tradução Automática

Observação

  • Em setembro de 2018, foi anunciado que os Serviços de Tradução Automática seriam preteridos no Microsoft Office SharePoint Online para Microsoft 365, mas continuariam com suporte. Este serviço ficará indisponível e totalmente sem suporte até o final de julho de 2022.
  • A API do Serviço de Tradução Automática está marcada como obsoleta e não estará disponível por meio do CSOM do Microsoft Office SharePoint Online.
  • Todas as instâncias existentes de APIs de Servidor de Tradução Automática não exibirão mais a funcionalidade multilíngue em seu ambiente do Microsoft 365 até o final de julho de 2022.
  • Este artigo será desativado em dezembro de 2022.
  • Se você estiver usando sites de comunicação modernos no SharePoint, recomendamos que você use o recurso de páginas e sites multilíngues modernos em vez das variações do recurso Machine Translation Services.

O Serviço de Tradução Automática é um novo aplicativo de serviço no SharePoint que fornece a tradução automática de arquivos e sites. Quando o aplicativo do Serviço de Tradução Automática processa uma solicitação de tradução, ele encaminha a solicitação para o serviço de tradução automática hospedado na nuvem do Microsoft Translator , onde o trabalho real de tradução é realizado. Este serviço de nuvem também alimenta o Microsoft Office, Lync, recursos de tradução do Yammer e no Bing.

O aplicativo Machine Translation Service processa solicitações de tradução assíncrona e sincronia. Solicitações de tradução assíncrona são processadas quando o trabalho de timer de tradução é executado. O intervalo padrão do trabalho de timer de tradução é de 15 minutos; Você pode gerenciar essa configuração na Administração Central ou usando Windows PowerShell. Você também pode definir o timer para executar imediatamente usando o seguinte comando:


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

Solicitações de tradução síncrono são processadas assim que eles são enviados.

Componentes compartilhados com o Serviço de Automação do Word

A arquitetura de Machine Translation Service compartilha vários componentes da arquitetura de Microsoft Word Automation Services. Para obter mais informações sobre a arquitetura dos Serviços de Automação do Word, consulte Arquitetura dos Serviços de Automação do Word.

O modelo de objeto Machine Translation Service é modelado após o modelo de objeto do Word Automation Services, portanto se você estiver familiarizado com a programação de Word Automation Services, você encontrará semelhanças com programação contra o modelo de objeto do Machine Translation Service.

Usando o modelo de objeto do servidor do Serviço de Tradução Automática

Aplicativos que usam o modelo de objeto do servidor devem ser executados diretamente em um servidor que esteja executando o SharePoint. Para obter informações sobre como criar aplicativos que podem ser hospedados remotamente, consulte Usando o modelo de objeto cliente do Machine Translation Services mais adiante neste tópico. O modelo de objeto do servidor de Machine Translation Service reside no namespace Microsoft.Office.TranslationServices, que está localizado em Microsoft.Office.TranslationServices.dll.

Usando o modelo de objeto do servidor, você pode enviar solicitações para o aplicativo Machine Translation Service assíncrona ou sincronia (para obter uma tradução instantânea). O aplicativo Machine Translation Service tem duas filas de trabalho para armazenar solicitações de tradução: a fila assíncrona e a fila síncrona. Solicitações na fila síncrona são tratadas como prioridade e são convertidas antes de solicitações na fila assíncrona. As solicitações são roteadas para uma dessas filas baseadas na classe que você usar.

Aplicativos de exemplo e trechos de código relacionados

Para obter o código de exemplo que demonstra como usar o modelo de objeto do servidor de um aplicativo de console, consulte SharePoint: Access Machine Translation Service usando o modelo de objeto do servidor.

Tradução assíncrona usando o modelo de objeto de servidor

A classe TranslationJob define um conjunto de itens a ser traduzido. Isso pode ser um único arquivo ou todos os arquivos dentro de uma pasta ou biblioteca de documentos. Trabalhos de tradução que são enviados dessa maneira são armazenados no banco de dados de tradução. Cada vez que o trabalho de timer de tradução é executado, ele leva algumas das tarefas do banco de dados de tradução e os adiciona à fila assíncrona a ser traduzido. O intervalo padrão do trabalho de timer de tradução é 15 minutos.

O código a seguir mostra como traduzir um único arquivo assíncrona.


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

O código a seguir mostra como traduzir todos os arquivos em uma pasta de forma assíncrona.


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();
        }
    }
}

O código a seguir mostra como traduzir todos os arquivos em uma biblioteca de documentos de forma assíncrona.


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();
            }
        }
    }
}

Tradução síncrona usando o modelo de objeto de servidor

Use a classe SyncTranslator para solicitar tradução instantânea para arquivos e fluxos. Solicitações de tradução que são feitas usando essa classe não são roteadas da mesma maneira que solicitações que são feitas usando a classe TranslationJob. Imediatamente, eles são adicionados à fila de síncrono para ser processada. A classe TranslationItemInfo contém os detalhes de um único item que é convertida pela Machine Translation Service. O método SyncTranslator.Translate retorna uma instância dessa classe em trabalhos de tradução síncrono.

O código a seguir mostra como traduzir um único arquivo sincronia.


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

O código a seguir mostra como traduzir um fluxo de sincronia.


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();

O código a seguir mostra como traduzir uma sequência de bytes sincronia.


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();

Permissões

Se o usuário que está executando a solicitação de tradução para pode acessar o arquivo a ser traduzido e esse usuário pode acessar o local de saída para o arquivo, o usuário limpa a verificação de segurança e o arquivo é convertido.

Usar o modelo de objeto cliente do Serviço de Tradução Automática

Machine Translation Service também inclui um modelo de objeto do cliente (CSOM) que permite o acesso ao Machine Translation Service API para on-line, local e desenvolvimento móvel. Aplicativos cliente podem usar o CSOM para acessar o conteúdo do servidor e funcionalidade. O CSOM implementa a maioria das funcionalidades tradução do servidor, mas o CSOM e o modelo de objeto do lado do servidor não têm paridade individual. Há suporte para tradução assíncrona de arquivos individuais e arquivos em uma biblioteca de documentos ou pasta. Há suporte para a tradução síncrona dos arquivos, mas fluxos de arquivo não são suportados.

O Serviço de Tradução Automática CSOM inclui um modelo de objeto do lado do cliente gerenciado .NET e modelos de objeto do Microsoft Silverlight e JavaScript. Ele é criado em SharePoint CSOM. Portanto, o código do cliente acessa pela primeira vez o SharePoint CSOM e, em seguida, acessa o Serviço de Tradução Automática CSOM.

Para obter mais informações sobre o SharePoint CSOM, consulte SharePoint 2010 Client Object Model. Para obter mais informações sobre o objeto ClientContext, que é o ponto de entrada para o CSOM, consulte Client Context as Central Object.

Tabela 1 mostra os objetos equivalentes que fornecem as APIs CSOM para os objetos de servidor Machine Translation Service.

Tabela 1. APIs do modelo de objeto do servidor e seus equivalentes CSOM

Servidor .NET gerenciado e 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

Serviço de tradução automática CSOM gerenciado .NET e Silverlight CSOM

Para o .CSOM gerenciado .NET, obtenha uma instância de ClientContext (localizada no namespace Microsoft.SharePoint.Client no Microsoft.SharePoint.Client. dll). Use o modelo de objeto no namespace Microsoft.Office.TranslationServices.Client na Microsoft.Office.TranslationServices.Client.dll.

Aplicativos de exemplo e trechos de código relacionados

Para obter o código de exemplo que demonstra como usar o CSOM Gerenciado do .NET, consulte SharePoint: Access Machine Translation Service usando o modelo de objeto cliente.

Para o Silverlight CSOM, obter uma instância de ClientContext (localizada no namespace Microsoft.SharePoint.Client no Microsoft). Use o modelo de objeto no namespace Microsoft.Office.TranslationServices.Client na Microsoft.Office.TranslationServices.Silverlight.dll.

Aplicativos de exemplo e trechos de código relacionados

Para obter o código de exemplo que demonstra como usar o CSOM silverlight, consulte SharePoint: Access Machine Translation Service do aplicativo Silverlight.

Para traduzir um único arquivo assíncrona:


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;

Para traduzir uma pasta assíncrona:


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;

Para traduzir uma biblioteca assíncrona:


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;

Para traduzir um único arquivo sincronia:


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;

Para recuperar todos os idiomas que são suportados pelo Machine Translation Service:


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

Para verificar se há suporte para um idioma específico:


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

Para recuperar todas as extensões de nome de arquivo que são suportadas pelo Machine Translation Service:


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

Para verificar se uma extensão de nome de arquivo específico é suportada:


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

Para verificar o limite de tamanho de arquivo para uma extensão de nome de arquivo específico:


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

Visão geral do Serviço de Tradução Automática JavaScript CSOM

Para o JavaScript CSOM, obter uma instância de SP.ClientContext e, em seguida, use o modelo de objeto no SP. Arquivo de Translation.js.

Aplicativos de exemplo e trechos de código relacionados

Para obter o código de exemplo que demonstra como usar o CSOM do JavaScript, consulte SharePoint: Acessando o Serviço de Tradução de Máquina com JavaScript.

Para traduzir um único arquivo assíncrona:


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));

Para traduzir uma pasta assíncrona:


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));

Para traduzir uma biblioteca assíncrona:


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));

Para traduzir um único arquivo sincronia:


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));

Para recuperar todos os idiomas que são suportados pelo Machine Translation Service:


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));

Para verificar se há suporte para um idioma específico:


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));

Para recuperar todas as extensões de nome de arquivo que são suportadas pelo Machine Translation Service:


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));

Para verificar se há suporte para uma extensão de nome de arquivo específica:


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));

Serviço REST do Serviço de Tradução Automática

SharePoint inclui um Serviço de Transferência do Estado Representacional (REST) que permite interagir remotamente com o aplicativo de Serviço de Tradução Automática usando qualquer tecnologia que ofereça suporte às solicitações REST da Web. Para obter informações gerais sobre REST no SharePoint, consulte Usar operações de consulta OData em solicitações REST do SharePoint.

API REST de Tradução Assíncrona

A API REST para realizar tradução assíncrona é o seguinte:

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

Para traduzir um único arquivo assíncrona:

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

Para traduzir uma pasta assíncrona:

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

Para traduzir uma biblioteca assíncrona:

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

API REST de Tradução Síncrona

O serviço REST Machine Translation Service suporta somente síncrona tradução de arquivos. A API para isso é da seguinte maneira:

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

APIs REST do Serviço de Tradução Automática

O serviço REST Machine Translation Service inclui APIs adicionais que você pode usar para recuperar informações sobre os recursos de aplicativo de Machine Translation Service e o status de trabalho de tradução.

Para recuperar todos os idiomas com suporte no Machine Translation Service:

http://serverName/_api/TranslationJob.EnumerateSupportedLanguages

Para verificar se um idioma específico é suportado:

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

Para recuperar todas as extensões de nome de arquivo que são suportadas pelo Machine Translation Service:

http://serverName/_api/TranslationJob.EnumerateSupportedFileEXtensions

Para verificar se uma extensão de nome de arquivo específico é suportada:

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

Para verificar o limite de tamanho de arquivo para uma extensão de nome de arquivo específico:

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

Para recuperar uma lista de todos os trabalhos de tradução assíncrona:

http://serverName/_api/TranslationJobStatus.GetAllJobs

Para recuperar uma lista de todos os trabalhos de conversão assíncrona ativa:

http://serverName/_api/TranslationJobStatus.GetAllActiveJobs

Para recuperar as informações do documento para um trabalho de tradução assíncrono específico:

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

Para cancelar um trabalho de tradução assíncrona:

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

Requisitos para documentos do Microsoft Word

Serviço de tradução automática do SharePoint usa o idioma de parágrafo como o idioma de origem quando ele converte documentos do Microsoft Word. Por exemplo, se o parágrafo é escrito em espanhol, mas o idioma para o parágrafo for definido para inglês, o serviço de tradução não traduzirá para inglês. Isso ocorre porque ele já está definido para o inglês.

Para definir o idioma do parágrafo, siga estas etapas:

  1. Selecione o parágrafo.

  2. Clique na guia da faixa de opções de revisão.

  3. Clique em idioma no menu suspenso e escolha Definir idioma de revisão.

Confira também