opção
LarLar Skill Desenvolvimento de APIs azure-ai-translation-text-py

azure-ai-translation-text-py

microsoft/skills microsoft/skills

Traduza texto em tempo real, detecte idiomas, translitere entre sistemas de escrita e consulte entradas de dicionário usando o SDK do Azure AI Translator para Python.

...Expandir tudo
40
Tempo atualizado 15 de Setembro de 2026

SDK de Tradução de Texto do Azure AI para Python

Biblioteca de cliente para o serviço de tradução de texto do Azure AI Translator, destinado à tradução de texto em tempo real, transliteração e operações de idioma.

Instalação

pip install azure-ai-translation-text

Variáveis de Ambiente

AZURE_TRANSLATOR_ENDPOINT=https://<recurso>.cognitiveservices.azure.com  # Obrigatório para autenticação do Entra ID (deve ser um ponto de extremidade de subdomínio personalizado)
AZURE_TOKEN_CREDENTIALS=prod # Obrigatório apenas se DefaultAzureCredential for usado em produção
# Necessário apenas para o caminho de autenticação legado por chave de API abaixo:
AZURE_TRANSLATOR_KEY=<sua-chave-de-api>
AZURE_TRANSLATOR_REGION=<sua-regiao>  # Ex.: eastus, westus2; obrigatório ao autenticar com uma chave contra o ponto de extremidade global
</sua-regiao></sua-chave-de-api></recurso>

Autenticação e Ciclo de Vida

🔑 Duas regras se aplicam a todas as amostras de código abaixo:

  1. Prefira DefaultAzureCredential. Ele funciona localmente (Azure CLI / VS Code / Developer CLI) e no Azure (identidade gerenciada, identidade de carga de trabalho) sem alteração de código. Evite strings de conexão, contas/chaves de API — elas contornam a auditoria e a rotação do Entra.
    • Desenvolvimento local: DefaultAzureCredential funciona conforme o padrão.
    • Produção: defina AZURE_TOKEN_CREDENTIALS=prod (ou AZURE_TOKEN_CREDENTIALS=<credencial_especifica></credencial_especifica>) para restringir a cadeia de credenciais a credenciais seguras para produção.
  2. Envolva cada cliente em um gerenciador de contexto para que os transportes HTTP, soquetes e caches de token sejam liberados de forma determinística:
    • Síncrono: with <cliente>(...) as cliente:</cliente>
    • Assíncrono: async with <cliente>(...) as cliente:</cliente> e async with DefaultAzureCredential() as credential: (de azure.identity.aio)

Os trechos de código podem abreviar essa configuração, mas o código de produção deve seguir sempre ambas as regras.

import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.ai.translation.text import TextTranslationClient

# Desenvolvimento local: DefaultAzureCredential. Produção: defina AZURE_TOKEN_CREDENTIALS=prod ou AZURE_TOKEN_CREDENTIALS=<credencial_especifica>
credential = DefaultAzureCredential(require_envvar=True)
# Ou use uma credencial específica diretamente em produção:
# Consulte https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()

with TextTranslationClient(
    endpoint=os.environ["AZURE_TRANSLATOR_ENDPOINT"],
    credential=credential,
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])
</credencial_especifica>

Legado: Chave de API (implantações com chave existentes)

Novos códigos devem usar DefaultAzureCredential acima. O serviço Translator tem duas especificidades que tornam a autenticação por chave de API ainda comum em implantações existentes:

  • A autenticação por credencial de token exige um ponto de extremidade de subdomínio personalizado (https://<recurso>.cognitiveservices.azure.com</recurso>). Se você tiver apenas o ponto de extremidade global (https://api.cognitive.microsofttranslator.com), você deve provisionar um subdomínio personalizado ou permanecer no caminho baseado em chave até que isso seja feito.
  • Chave + região é a configuração canônica contra o ponto de extremidade global. A região é enviada como o cabeçalho Ocp-Apim-Subscription-Region e é obrigatória sempre que você usa uma chave do Translator de serviço múltiplo ou global.
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.translation.text import TextTranslationClient

# Chave + região contra o ponto de extremidade global (configuração com chave mais comum)
with TextTranslationClient(
    credential=AzureKeyCredential(os.environ["AZURE_TRANSLATOR_KEY"]),
    region=os.environ["AZURE_TRANSLATOR_REGION"],
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])

# Chave contra um ponto de extremidade de subdomínio personalizado (sem necessidade de região)
with TextTranslationClient(
    endpoint=os.environ["AZURE_TRANSLATOR_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_TRANSLATOR_KEY"]),
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])

Tradução Básica

# Traduzir para um único idioma
result = client.translate(
    body=["Hello, how are you?", "Welcome to Azure!"],
    to=["es"]  # Espanhol
)

for item in result:
    for translation in item.translations:
        print(f"Traduzido: {translation.text}")
        print(f"Idioma de destino: {translation.to}")

Traduzir para Múltiplos Idiomas

result = client.translate(
    body=["Hello, world!"],
    to=["es", "fr", "de", "ja"]  # Espanhol, Francês, Alemão, Japonês
)

for item in result:
    print(f"Origem: {item.detected_language.language if item.detected_language else 'desconhecido'}")
    for translation in item.translations:
        print(f"  {translation.to}: {translation.text}")

Especificar Idioma de Origem

result = client.translate(
    body=["Bonjour le monde"],
    from_parameter="fr",  # A origem é Francês
    to=["en", "es"]
)

Detecção de Idioma

result = client.translate(
    body=["Hola, como estas?"],
    to=["en"]
)

for item in result:
    if item.detected_language:
        print(f"Idioma detectado: {item.detected_language.language}")
        print(f"Confiança: {item.detected_language.score:.2f}")

Transliteração

Converter texto de um script para outro:

result = client.transliterate(
    body=["konnichiwa"],
    language="ja",
    from_script="Latn",  # De script Latino
    to_script="Jpan"      # Para script Japonês
)

for item in result:
    print(f"Transliterado: {item.text}")
    print(f"Script: {item.script}")

Pesquisa em Dicionário

Encontrar traduções alternativas e definições:

result = client.lookup_dictionary_entries(
    body=["fly"],
    from_parameter="en",
    to="es"
)

for item in result:
    print(f"Origem: {item.normalized_source} ({item.display_source})")
    for translation in item.translations:
        print(f"  Tradução: {translation.normalized_target}")
        print(f"  Classe gramatical: {translation.pos_tag}")
        print(f"  Confiança: {translation.confidence:.2f}")

Exemplos de Dicionário

Obter exemplos de uso para traduções:

from azure.ai.translation.text.models import DictionaryExampleTextItem

result = client.lookup_dictionary_examples(
    body=[DictionaryExampleTextItem(text="fly", translation="volar")],
    from_parameter="en",
    to="es"
)

for item in result:
    for example in item.examples:
        print(f"Origem: {example.source_prefix}{example.source_term}{example.source_suffix}")
        print(f"Destino: {example.target_prefix}{example.target_term}{example.target_suffix}")

Obter Idiomas Suportados

# Obter todos os idiomas suportados
languages = client.get_supported_languages()

# Idiomas de tradução
print("Idiomas de tradução:")
for code, lang in languages.translation.items():
    print(f"  {code}: {lang.name} ({lang.native_name})")

# Idiomas de transliteração
print("\nIdiomas de transliteração:")
for code, lang in languages.transliteration.items():
    print(f"  {code}: {lang.name}")
    for script in lang.scripts:
        print(f"    {script.code} -> {[t.code for t in script.to_scripts]}")

# Idiomas de dicionário
print("\nIdiomas de dicionário:")
for code, lang in languages.dictionary.items():
    print(f"  {code}: {lang.name}")

Quebra de Frase

Identificar limites de frases:

result = client.find_sentence_boundaries(
    body=["Hello! How are you? I hope you are well."],
    language="en"
)

for item in result:
    print(f"Comprimentos das frases: {item.sent_len}")

Opções de Tradução

result = client.translate(
    body=["Hello, world!"],
    to=["de"],
    text_type="html",           # "plain" ou "html"
    profanity_action="Marked",  # "NoAction", "Deleted", "Marked"
    profanity_marker="Asterisk", # "Asterisk", "Tag"
    include_alignment=True,      # Incluir alinhamento de palavras
    include_sentence_length=True # Incluir limites de frases
)

for item in result:
    translation = item.translations[0]
    print(f"Traduzido: {translation.text}")
    if translation.alignment:
        print(f"Alinhamento: {translation.alignment.proj}")
    if translation.sent_len:
        print(f"Comprimentos das frases: {translation.sent_len.src_sent_len}")

Cliente Assíncrono

from azure.ai.translation.text.aio import TextTranslationClient
from azure.identity.aio import DefaultAzureCredential

async def translate_text():
    async with DefaultAzureCredential() as credential:
        async with TextTranslationClient(
            credential=credential,
            endpoint=endpoint,
        ) as client:
            result = await client.translate(
                body=["Hello, world!"],
                to=["es"]
            )
            print(result[0].translations[0].text)

Métodos do Cliente

MétodoDescrição
`translate`Traduzir texto para um ou mais idiomas
`transliterate`Converter texto entre scripts
`detect`Detectar idioma do texto
`find_sentence_boundaries`Identificar limites de frases
`lookup_dictionary_entries`Pesquisa em dicionário para traduções
`lookup_dictionary_examples`Obter exemplos de uso
`get_supported_languages`Listar idiomas suportados

Melhores Práticas

  1. Escolha síncrono OU assíncrono e mantenha a consistência. Não misture clientes síncronos azure.xxx com clientes assíncronos azure.xxx.aio no mesmo caminho de chamada. Escolha um modo por módulo.
  2. Sempre use gerenciadores de contexto para clientes e credenciais assíncronas. Envolva cada cliente em with Cliente(...) as cliente: (síncrono) ou async with Cliente(...) as cliente: (assíncrono). Para DefaultAzureCredential assíncrono de azure.identity.aio, também use async with credential: para garantir que tokens e transportes sejam limpos.
  3. Traduções em lote — Envie vários textos em uma única solicitação (até 100)
  4. Especifique o idioma de origem quando conhecido para melhorar a precisão
  5. Use o cliente assíncrono para cenários de alta taxa de transferência
  6. Armazene em cache a lista de idiomas — Os idiomas suportados não mudam com frequência
  7. Lide com linguagem imprópria de forma apropriada para sua aplicação
  8. Use o tipo de texto html ao traduzir conteúdo HTML
  9. Inclua o alinhamento para aplicações que necessitam de mapeamento de palavras
Ver no GitHub
---
name: azure-ai-translation-text-py
description: Translate text in real-time, detect languages, transliterate between scripts, and look up dictionary entries using Azure AI Translator SDK for Python.
license: MIT
---

# Azure AI Text Translation SDK for Python

Client library for Azure AI Translator text translation service for real-time text translation, transliteration, and language operations.

## Installation

```bash
pip install azure-ai-translation-text
```

## Environment Variables

```bash
AZURE_TRANSLATOR_ENDPOINT=https://<resource>.cognitiveservices.azure.com  # Required for Entra ID auth (must be a custom subdomain endpoint)
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
# Only required for the legacy API-key auth path below:
AZURE_TRANSLATOR_KEY=<your-api-key>
AZURE_TRANSLATOR_REGION=<your-region>  # e.g., eastus, westus2; required when authenticating with a key against the global endpoint
```

## Authentication & Lifecycle

> **🔑 Two rules apply to every code sample below:**
>
> 1. **Prefer `DefaultAzureCredential`.** It works locally (Azure CLI / VS Code / Developer CLI) and in Azure (managed identity, workload identity) with no code change. Avoid connection strings, account/API keys — they bypass Entra audit and rotation.
>    - Local dev: `DefaultAzureCredential` works as-is.
>    - Production: set `AZURE_TOKEN_CREDENTIALS=prod` (or `AZURE_TOKEN_CREDENTIALS=<specific_credential>`) to constrain the credential chain to production-safe credentials.
> 2. **Wrap every client in a context manager** so HTTP transports, sockets, and token caches are released deterministically:
>    - Sync: `with <Client>(...) as client:`
>    - Async: `async with <Client>(...) as client:` **and** `async with DefaultAzureCredential() as credential:` (from `azure.identity.aio`)
>
> Snippets may abbreviate this setup, but production code should always follow both rules.

```python
import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.ai.translation.text import TextTranslationClient

# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
credential = DefaultAzureCredential(require_envvar=True)
# Or use a specific credential directly in production:
# See https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()

with TextTranslationClient(
    endpoint=os.environ["AZURE_TRANSLATOR_ENDPOINT"],
    credential=credential,
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])
```

### Legacy: API Key (existing keyed deployments)

New code should use `DefaultAzureCredential` above. The Translator service has two specifics that make API-key auth still common in existing deployments:

- **Token-credential auth requires a custom subdomain endpoint** (`https://<resource>.cognitiveservices.azure.com`). If you only have the global endpoint (`https://api.cognitive.microsofttranslator.com`), you must either provision a custom subdomain or stay on the key-based path until you do.
- **Key + region** is the canonical setup against the global endpoint. The region is sent as the `Ocp-Apim-Subscription-Region` header and is required whenever you use a multi-service or global Translator key.

```python
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.translation.text import TextTranslationClient

# Key + region against the global endpoint (most common keyed setup)
with TextTranslationClient(
    credential=AzureKeyCredential(os.environ["AZURE_TRANSLATOR_KEY"]),
    region=os.environ["AZURE_TRANSLATOR_REGION"],
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])

# Key against a custom subdomain endpoint (no region required)
with TextTranslationClient(
    endpoint=os.environ["AZURE_TRANSLATOR_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_TRANSLATOR_KEY"]),
) as client:
    result = client.translate(body=["Hello, world!"], to=["es"])
```

## Basic Translation

```python
# Translate to a single language
result = client.translate(
    body=["Hello, how are you?", "Welcome to Azure!"],
    to=["es"]  # Spanish
)

for item in result:
    for translation in item.translations:
        print(f"Translated: {translation.text}")
        print(f"Target language: {translation.to}")
```

## Translate to Multiple Languages

```python
result = client.translate(
    body=["Hello, world!"],
    to=["es", "fr", "de", "ja"]  # Spanish, French, German, Japanese
)

for item in result:
    print(f"Source: {item.detected_language.language if item.detected_language else 'unknown'}")
    for translation in item.translations:
        print(f"  {translation.to}: {translation.text}")
```

## Specify Source Language

```python
result = client.translate(
    body=["Bonjour le monde"],
    from_parameter="fr",  # Source is French
    to=["en", "es"]
)
```

## Language Detection

```python
result = client.translate(
    body=["Hola, como estas?"],
    to=["en"]
)

for item in result:
    if item.detected_language:
        print(f"Detected language: {item.detected_language.language}")
        print(f"Confidence: {item.detected_language.score:.2f}")
```

## Transliteration

Convert text from one script to another:

```python
result = client.transliterate(
    body=["konnichiwa"],
    language="ja",
    from_script="Latn",  # From Latin script
    to_script="Jpan"      # To Japanese script
)

for item in result:
    print(f"Transliterated: {item.text}")
    print(f"Script: {item.script}")
```

## Dictionary Lookup

Find alternate translations and definitions:

```python
result = client.lookup_dictionary_entries(
    body=["fly"],
    from_parameter="en",
    to="es"
)

for item in result:
    print(f"Source: {item.normalized_source} ({item.display_source})")
    for translation in item.translations:
        print(f"  Translation: {translation.normalized_target}")
        print(f"  Part of speech: {translation.pos_tag}")
        print(f"  Confidence: {translation.confidence:.2f}")
```

## Dictionary Examples

Get usage examples for translations:

```python
from azure.ai.translation.text.models import DictionaryExampleTextItem

result = client.lookup_dictionary_examples(
    body=[DictionaryExampleTextItem(text="fly", translation="volar")],
    from_parameter="en",
    to="es"
)

for item in result:
    for example in item.examples:
        print(f"Source: {example.source_prefix}{example.source_term}{example.source_suffix}")
        print(f"Target: {example.target_prefix}{example.target_term}{example.target_suffix}")
```

## Get Supported Languages

```python
# Get all supported languages
languages = client.get_supported_languages()

# Translation languages
print("Translation languages:")
for code, lang in languages.translation.items():
    print(f"  {code}: {lang.name} ({lang.native_name})")

# Transliteration languages
print("\nTransliteration languages:")
for code, lang in languages.transliteration.items():
    print(f"  {code}: {lang.name}")
    for script in lang.scripts:
        print(f"    {script.code} -> {[t.code for t in script.to_scripts]}")

# Dictionary languages
print("\nDictionary languages:")
for code, lang in languages.dictionary.items():
    print(f"  {code}: {lang.name}")
```

## Break Sentence

Identify sentence boundaries:

```python
result = client.find_sentence_boundaries(
    body=["Hello! How are you? I hope you are well."],
    language="en"
)

for item in result:
    print(f"Sentence lengths: {item.sent_len}")
```

## Translation Options

```python
result = client.translate(
    body=["Hello, world!"],
    to=["de"],
    text_type="html",           # "plain" or "html"
    profanity_action="Marked",  # "NoAction", "Deleted", "Marked"
    profanity_marker="Asterisk", # "Asterisk", "Tag"
    include_alignment=True,      # Include word alignment
    include_sentence_length=True # Include sentence boundaries
)

for item in result:
    translation = item.translations[0]
    print(f"Translated: {translation.text}")
    if translation.alignment:
        print(f"Alignment: {translation.alignment.proj}")
    if translation.sent_len:
        print(f"Sentence lengths: {translation.sent_len.src_sent_len}")
```

## Async Client

```python
from azure.ai.translation.text.aio import TextTranslationClient
from azure.identity.aio import DefaultAzureCredential

async def translate_text():
    async with DefaultAzureCredential() as credential:
        async with TextTranslationClient(
            credential=credential,
            endpoint=endpoint,
        ) as client:
            result = await client.translate(
                body=["Hello, world!"],
                to=["es"]
            )
            print(result[0].translations[0].text)
```

## Client Methods

| Method | Description |
|--------|-------------|
| `translate` | Translate text to one or more languages |
| `transliterate` | Convert text between scripts |
| `detect` | Detect language of text |
| `find_sentence_boundaries` | Identify sentence boundaries |
| `lookup_dictionary_entries` | Dictionary lookup for translations |
| `lookup_dictionary_examples` | Get usage examples |
| `get_supported_languages` | List supported languages |

## Best Practices

1. **Pick sync OR async and stay consistent.** Do not mix `azure.xxx` sync clients with `azure.xxx.aio` async clients in the same call path. Choose one mode per module.
2. **Always use context managers for clients and async credentials.** Wrap every client in `with Client(...) as client:` (sync) or `async with Client(...) as client:` (async). For async `DefaultAzureCredential` from `azure.identity.aio`, also use `async with credential:` so tokens and transports are cleaned up.
3. **Batch translations** — Send multiple texts in one request (up to 100)
4. **Specify source language** when known to improve accuracy
5. **Use async client** for high-throughput scenarios
6. **Cache language list** — Supported languages don't change frequently
7. **Handle profanity** appropriately for your application
8. **Use html text_type** when translating HTML content
9. **Include alignment** for applications needing word mapping

Todos os arquivos

1 arquivos

Instalar azure-ai-translation-text-py

Baixe e extraia os arquivos de habilidade para o diretório .claude/skills/.

Baixar ZIP

Clone o repositório e copie os arquivos da habilidade para o seu projeto.

git clone https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-python/skills/azure-ai-translation-text-py # Copy SKILL.md to your .claude/skills/ directory

Copiar Copiar
Configuração rápida: Copie a pasta de habilidades para .claude/skills/ O Claude detectará e usará automaticamente a habilidade
Repositório microsoft/skills

Habilidades relacionadas

agentwallet
Tempo atualizado 7 de Julho de 2026
brightdata-cli
Tempo atualizado 29 de Junho de 2026
humanize
Tempo atualizado 7 de Julho de 2026
korean-stock-search
Tempo atualizado 8 de Julho de 2026
OR